VXLANを用いた拠点間通信とRancherによる監視システムの構築
本記事では、VXLANによる同一セグメントでの拠点間通信を実現させ、
Kubernetes構築・管理ツールのRancherを用いて監視システムを構築するまでの手順を解説いたします。
この記事は アイソルート Advent Calendar 10日目の記事です。
*目次*
1.はじめに
こんにちは。
プラットフォームソリューショングループのfujishima.yです。
普段はネットワーク機器などの品質評価や検証を行っております。
当ブログでは3回目の記事となります。前回はRancherとHelmChartの作り方について紹介させていただきました。
今回はVXLANを主なテーマに解説したいと思います。
VXLANを用いることで、別々の拠点にあるローカルネットワークを相互に接続し、論理的に同一ネットワーク(セグメント)を形成します。
実のところ拠点間の通信は、別々のセグメントであればGREなど他のトンネリング手法でも可能です。
では、VXLANを採用するメリットはどこにあるのでしょうか。
そのメリットについて、本記事での解説を通じて伝えることができればと思います。
そこで、今回はVXLANのユースケースとして、各拠点にKubernetes(K8s)クラスタと監視システムを実際に構築してみます。
複数拠点を跨いだシステムを構築したり移行する際に、管理・監視の方法について悩むことは多いのではないでしょうか。
(対象読者)
・技術者向けです
・ネットワーク(L2/L3)、VXLAN、Kubernetes(K8s)について基本的な知識をお持ちの方
・複数拠点を跨いだシステム構成や、クラウドへの移行に悩んでおられる方
・K8sやdockerコンテナの監視や、Rancherについて興味をお持ちの方
2.本記事でやろうとしてること
各拠点のルータにVXLANの設定を行い、同一セグメントで疎通できるようにします。
また、Rancherの機能によってK8sクラスタを登録し、K8sクラスタに監視用のアプリケーションをデプロイします。
以下の内容を解説いたします。
①VXLANの設定内容
②RancherにK8sクラスタを登録するまでの手順
③クラスタに監視システムを適用するまでの手順
全体構成図の解説
・DC(オンプレ環境)にRancherのServerが設置されている
・拠点Aと拠点Bに、それぞれK8sクラスタが存在し、運用中であることを想定
・プラットフォーム:KVM
・拠点間に仮想ネットワーク(NFV)を構築し、仮想ルータ(VyOS)で繋いでいる
・Rancherのドメイン名:rancher.fujitest.com
・VyOSのバージョン:1.4
・Rancherのバージョン:v2.7.0
・k8sのバージョン:1.23.14-00
・CNI:Calico
それでは、具体的な設定方法を解説していきます。
3.設定解説編
①VXLANの設定
・各拠点のVyOSにVXLANの設定を追加します。
(DC)
# set interfaces bridge br01 member interface ‘eth1’
# set interfaces bridge br01 member interface ‘vxlan01’
# set interfaces bridge br01 member interface ‘vxlan02’
# set interfaces vxlan vxlan01 remote 10.10.10.254
# set interfaces vxlan vxlan01 vni ‘0001’
# set interfaces vxlan vxlan02 remote 10.10.20.254
# set interfaces vxlan vxlan02 vni ‘0002’
# set interfaces vxlan vxlan01 mtu 9000
# set interfaces vxlan vxlan02 mtu 9000
(拠点A)
# set interfaces bridge br01 member interface ‘eth1’
# set interfaces bridge br01 member interface ‘vxlan01’
# set interfaces vxlan vxlan01 remote 10.10.0.254
# set interfaces vxlan vxlan01 vni ‘0001’
# set interfaces vxlan vxlan01 mtu 9000
(拠点B)
# set interfaces bridge br01 member interface ‘eth1’
# set interfaces bridge br01 member interface ‘vxlan02’
# set interfaces vxlan vxlan02 remote 10.10.0.254
# set interfaces vxlan vxlan02 vni ‘0001’
# set interfaces vxlan vxlan02 mtu 9000
ポイントはmtuのサイズ変更で、これがデフォルトのままだと、パケットのサイズ超過によりTCP通信が通らなくなります。
(pingは通りますが、この先の手順で行うRancherへのK8sクラスタ登録でhttps通信が失敗します)
また、プラットフォームがVMWAREなどの場合では、仮想スイッチで無差別(プロミスキャス)モードを有効にする必要があります。
今回はKVMを利用しているため、デフォルト設定のままで問題なく通信できます。
・DCのVyOSでvxlanのステータスを確認します
$ show interfaces vxlan vxlan01
vxlan01: mtu 9000 qdisc noqueue master br01 state UNKNOWN group default qlen 1000
link/ether a6:09:19:39:9c:ae brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
1215691094 1966092 0 0 0 0
TX: bytes packets errors dropped carrier collisions
255374736 1283699 0 0 0 0
$
$ show interfaces vxlan vxlan02
vxlan02: mtu 9000 qdisc noqueue master br01 state UNKNOWN group default qlen 1000
link/ether 96:a1:74:58:f0:cd brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
122248146 583315 0 0 0 0
TX: bytes packets errors dropped carrier collisions
558144812 922074 0 0 0 0
RXとTXそれぞれでbytesとpacketsの値が増加しているので、互いにパケット送受信できていそうです。
・拠点Aと拠点BからDCのRancherに疎通を確認
$ ping rancher.fujitest.com
PING rancher.fujitest.com (192.168.100.102) 56(84) bytes of data.
64 bytes from rancher.fujitest.com (192.168.100.102): icmp_seq=1 ttl=64 time=4.30 ms
64 bytes from rancher.fujitest.com (192.168.100.102): icmp_seq=2 ttl=64 time=3.49 ms
64 bytes from rancher.fujitest.com (192.168.100.102): icmp_seq=3 ttl=64 time=3.53 ms
無事に別拠点であっても同一セグメントとして通信できることが確認できました。
②RancherにK8sクラスタをインポート
・RancherのGUIにログインします。
・Rancherでimportを選択し、生成されたコマンドをmasterノードで入力します。
・Rancherにクラスタが認識されたことを確認します。
これだけすんなりRancherへのインポートが成功するのも、VXLANの効果によるものです。
これが別セグメントだった場合は、ルーティングの問題を解決する必要があるため、失敗する原因の一つになり得ます。
③監視システムのインストール
・Apps→Chartsの順に選択するとアプリケーション一覧画面が開きますので、Monitoringを選択します。
・デフォルト設定でインストールします。
・Monitoringを選択すると、Grafanaへのリンクが作成されていますので、クリックします。
・Grafanaの画面と監視グラフが表示されることを確認します。
この通り、いとも簡単にクラスタとコンテナの監視ができるようになりました!
ちなみにアラート機能(AlertManager)もセットでインストールされるので、こちらも必要に応じて設定します。
あとはデータセンターにある機器を監視対象に追加するといった場合も、NodePortを利用して簡単に実現できるはずです。
これもVXLANにより同一セグメントで繋がっている効果ですね。
4.まとめ
本記事でお伝えしました通り、VXLANは非常に便利なものです。
VXLANはK8sのCNIであるCalicoや、IPsec通信を実現するSubmarinerなどのツールでも利用されており、
今後ますます利用範囲は広がっていくと想定されます。
しかし課題もあります。
それは解説編でもお伝えしましたが、プラットフォームの仮想スイッチがプロミスキャスモードに対応している必要のあることです。
もしクラウドに構築や移行したい場合、そのクラウドがプロミスキャスモードに対応していないと、VXLANは採用不可となります。
それでもVXLANを採用するメリットは大きいです。
VXLANの利用を前提にプラットフォームを選定するのも有りだと思います。
ですので、拠点を跨いだシステムの構築や移行を行う際には、ぜひ検討してみて下さい。
終わりに
今回はVXLANを用いた拠点間通信と、Rancherによる監視システムの構築をテーマに解説いたしました。
本記事が読者様の参考になれば幸いです。
明日はshimazakihさんの『Vertex AI Workbenchを使ってちょこっとデータ分析』です。
お楽しみに!