MicroAd Developers Blog

マイクロアドのエンジニアブログです。インフラ、開発、分析について発信していきます。

ホワイトボックススイッチとCumulus Linuxを使った話

はじめまして。マイクロアドでインフラエンジニアをしているハダです。
今回の記事では、マイクロアドで採用しているホワイトボックススイッチと、 その上で動かしているCumulus Linuxについて導入から使用している感想までを書いていきたいと思います。

背景

マイクロアドでホワイトボックススイッチの検証を始めたのは、2015年4月頃からだったと記憶しています。
当時ホワイトボックススイッチが"ちまた"で話題になり始めた頃で、
インフラチーム内でも「実際どうなんだろうね…」と興味はあるけどという状況でした。

ホワイトボックススイッチとは

従来のネットワークスイッチは、購入するとハードウェアとソフトウェア(OS)がセットになって提供されてきました。
ユーザはハードウェアとソフトウェアの組み合わせを自由に行うことはできず、
操作コマンドもスイッチメーカーが提供する独自のものを利用する必要がありました。

一方ホワイトボックススイッチは、スイッチメーカーはハードウェアのみを提供し、 対応するソフトウェア(OS)をユーザが選択して使うことができます 。
さらにOSはDebianベースで作られてるため、その上で動作するアプリケーションも自由に組み合わせることが可能になっています。

このようにホワイトボックススイッチは、パソコンと同じようにハードウェアとOS・アプリケーションを、
自由に組み合わせて使用することができるスイッチです。

f:id:microad-developer:20181026155501p:plain

課題になっていたこと

マイクロアドでは、データセンターに数十ラック規模でラックを借りて運用しています。
そのネットワーク全体を大きなL2空間で、千数百台規模のサーバを接続して管理しています。
最初からこの規模のラック数・サーバ台数ではなかったため、サーバが増えるたびにネットワークを拡張し対応していました。
その為以下のような問題点を抱えていました。

  • ネットワーク障害時に広範囲に影響が及ぶ状況になっている
  • Broadcast, Multicast, unknown Unicastなどのトラフィックが意外と無視できない規模で発生している
  • スイッチ・スイッチ間はベンダー独自実装のファブリック接続をしているため、
    その部分はベンダーロックインされてしまっている
  • サーバとスイッチ間の接続は1対1になっている為、故障時の影響が大きい
  • サーバ直上のスイッチはメンテナンスがほぼ不可能
  • 複数メーカーのスイッチを利用している為、コマンド体系が異り管理が煩雑になっている
  • ネットワーク専任のエンジニアがいるわけではない

このような課題を解決したいと考えていたところに、ホワイトボックススイッチで
Spine・LeafのCLOS構成ネットワークを構築している事例を知り、解決の糸口になるのではないかと検証をはじめました。

ホワイトボックススイッチを使う利点

検証を進める中で、ホワイトボックススイッチを使う利点について考えてみました。

  1. 動作するOSを選択できる
    動作可能なOSの殆どがLinuxベースであり、サーバエンジニアがネットワークも管理しているマイクロアドでは学習コストが減らせそうである
  2. 構成管理ツールや自動化ツールなどすでに使っているものをそのまま利用できる

どちらもOSがLinuxベースという点に尽きる話ですが、この2点は大きなメリットだと思っています。

マイクロアドで採用した構成

検証を進めていた頃に、大規模なHadoopクラスターを構築する計画が出てきました。
データセンターのラックやネットワークの拡張が必要になるという機会が出てきたため、
この機会に本番環境でホワイトボックススイッチを導入することにしました。

本番導入するにあたり、マイクロアドでは以下の構成を採用することにしました。

  1. Spine-LeafのCLOS構成
    シンプルな事例に習ってCLOS構成で組みました
  2. L3ルーティングは、BGP
    ECMPでトラフィックが分散される点やトラフィックの迂回がしやすい点がメリット
  3. VXLANは使用しない
    VXLANを使うと複雑になってしまうためこの時点では使わないことにしていました
  4. Cumulus Linuxが対応しているunnumbered BGPを使用して隣接スイッチとBGP接続
    unnumbered BGPの設定は超絶簡単にできるためとても便利です
  5. サーバ直上のスイッチはMultiChassisLAG(CLAG)で接続
    課題になっていたスイッチのメンテナンス性の向上と障害時の影響を少なくするため

f:id:microad-developer:20181019132204p:plain

導入によるメリット

ホワイトボックススイッチとCumulus Linuxを導入したことにより、
いくつかのメリットが出てきました。

  1. サーバとスイッチ間はMultiChassisLAG(MLAG)を組むことで、耐障害性が向上
  2. 機器の保守契約を見直し最小限のものに設定(ランニングコスト削減)
  3. ZTPとansibleによるスイッチプロビジョニングで、セットアップを簡略化
  4. コンフィグをスイッチ外で管理することが可能
  5. 設定変更やバックアップなどでのログインが不要
  6. スイッチのコンフィグを外部で管理しているので、故障時にすばやく機器交換が可能
  7. DebianベースのOSでとっつきやすい(個人的感想)
  8. Cumulus Linuxの管理コマンドは、わかりやすく使い勝手が良い

特にコンフィグを外部管理することで、機器交換やOSバージョンアップなどを
安心して行えるようになった点は大きいと思います。

今後について

ホワイトボックススイッチの可能性

導入から約3年経過した現在、周りの環境も変化しホワイトボックススイッチの機種も増えてきたことから、
実際に使われるケースが多くなってきたように感じています。
また、OSのCumulus Linuxもバージョンが上がるたびに使い勝手が良くなっています。

マイクロアドでは、今後もホワイトボックススイッチを使ってネットワークの拡張や
ネットワーク全体をリプレースすることも検討しています。
ホワイトボックススイッチを導入したメリットが見えてきたこともあり、積極的に使っていこうと計画中です。

OSSのネットワークOSの可能性

現在はCumulus Linuxを使って運用しているホワイトボックススイッチですが、
本来は他のOSも使えるという点も重視しています。
その中で今後期待しているものとしては、OSSのOpenSwitchというOSです。
詳細は割愛しますが、今後の開発状況と対応する機種には注目していきたいと思っています。

Routing on the host(スイッチ、サーバ間のL3 Routing)

また、最近ではスイッチ間のL3 Routingだけではなく、スイッチとサーバ間もBGPで動的ルーティングする構成も増えてきているようです。
こちらも詳細は割愛しますが、マイクロアドではこの技術も取り入れていくことが可能か検証を進めているところです。

最後に

ホワイトボックススイッチとCumulus Linuxについて、ざっくりとした内容になってしまいましたが、 マイクロアドで使っている状況が少しでも伝わればと思います。
今後についても少し触れて書いていますので、実際に新たな取組を始めた際にはまたこちらで紹介していきたいと思います。