近況報告
ちょい前辺りから、こんな風にコンテナ環境を組んでいるわけですが
- ESXiサーバを1台追加(PRIMERGY TX120 S3を増設)
- Core2Duo P8700x1(1P/2C)/ 8GB RAM/ 146GB SAS x2(RAID1)
- Cephを構築
- 4ノード構成
- 1号機:NAS上のデータストアで構築(ESXi#2を使用)
- 2号機:ローカルデータストアで構築(ESXi#1を使用)
- 3号機:NexentaStorの重複排除データストアで構築(ESXi#2を使用)
- 4号機:ローカルデータストアで構築(ESXi#3を使用)
- 4ノード構成
- Workerノードを増設
- ESXi#3に増設。結果、全体として1Master/5Worker構成に
となりました。成長したなぁ、知らないうちに。
特にCephは面白いストレージで、オブジェクトストレージでありながらNFS/CIFS/Block(RBD)/REST APIなんでもござれな分散オブジェクトストレージとなっています。ハードパワー不足も有り、どうやらOpenEBSを安定的に動作させるのは難しかったようで、安定した小規模ブロックストレージを構成するべく、導入したというのもあります。
パフォーマンス評価はまだできてないんですが、それはそれでそのうちやりたいなーと思っています。いまのところは比較的安定して動いていて、MastodonのPostgreSQLデータ領域として大活躍中です。
今回やること
今回は、個々のネットワークを構成しているSDNコンポーネントである、Project Calicoの相互iBGP接続モードの変更をしたいなと思っとります。
[root@Rahu ~]# calicoctl get ipPool -o wide NAME CIDR NAT IPIPMODE DISABLED default-ipv4-ippool 10.240.0.0/16 true Always false default-ipv6-ippool fd75::/112 true Never false
default-ipv4-ippoolですが、現状「IPIPMODE」が「Always」となっており、各ノードのBIRDはiBGPフルメッシュ接続をしています。これは、常にiBGP接続をする際、IPIP接続したトンネル越しに接続をしますよーということを意味していて、その分通信オーバーヘッドが発生することになり、通信信頼性の低下に繋がります。
そこで、こいつのIPIPモードを解除するというのが本記事の目指すゴールです。
calicoctlを使用して、設定を変更する
使用するのはcalicoctlです。導入の手順は以下のサイトを参考にしてください。
https://docs.projectcalico.org/v3.1/usage/calicoctl/install
calicoctlコマンドは余りkubectlと使い方は変わらず、設定を変更する際はYAMLファイルを作成し、これを指定して「calicoctl apply」をしてあげることで反映することが可能です。今回、こんなファイルを作りました。
- apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: default-ipv4-ippool spec: cidr: 10.240.0.0/16 ipipMode: CrossSubnet natOutgoing: true disabled: false
ここで「ipipMode: CrossSubnet」としているのは、「異なるサブネットをまたがる場合に限り、IPIPを使用する」というのを意味しています。これを「Never」にすることで「IPIPを使用しない」、「Always」にすることで「IPIPを必ず使用する」となります。
で、反映します。
[root@Rahu project-calico]# calicoctl apply -f ippool-ipv4.yaml Successfully applied 1 'IPPool' resource(s)
反映されたようです。状態を確認してみます。
[root@Rahu project-calico]# calicoctl get IPPool -o wide NAME CIDR NAT IPIPMODE DISABLED default-ipv4-ippool 10.240.0.0/16 true CrossSubnet false default-ipv6-ippool fd75::/112 true Never false
IPIPモードが変わっているのが分かるかと思います。その後の接続状況を確認します。
[root@Rahu project-calico]# calicoctl node status Calico process is running. IPv4 BGP status +-----------------+-------------------+-------+------------+-------------+ | PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO | +-----------------+-------------------+-------+------------+-------------+ | 192.168.100.174 | node-to-node mesh | up | 2018-05-27 | Established | | 192.168.100.171 | node-to-node mesh | up | 2018-05-27 | Established | | 192.168.100.173 | node-to-node mesh | up | 2018-05-27 | Established | | 192.168.100.172 | node-to-node mesh | up | 2018-05-27 | Established | | 192.168.100.175 | node-to-node mesh | up | 2018-05-27 | Established | +-----------------+-------------------+-------+------------+-------------+ IPv6 BGP status +----------------------------------------+-------------------+-------+------------+-------------+ | PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO | +----------------------------------------+-------------------+-------+------------+-------------+ | 2403:bd80:c102:100:b76f:eb70:523c:e6de | node-to-node mesh | up | 2018-05-27 | Established | | 2403:bd80:c102:100:4d51:db18:be19:785a | node-to-node mesh | up | 2018-05-27 | Established | | 2403:bd80:c102:100:1d6b:e1c3:98c7:5ede | node-to-node mesh | up | 2018-05-27 | Established | | 2403:bd80:c102:100:9244:9b33:606a:e003 | node-to-node mesh | up | 2018-05-27 | Established | | 2403:bd80:c102:100:7998:9c56:a9a3:dc98 | node-to-node mesh | up | 2018-05-27 | Established | +----------------------------------------+-------------------+-------+------------+-------------+
・・・・た、多分接続状況は維持されているとは思います・・・
Calicoは面白い
WeavenetもVXLANを駆使してL2ネットワークを形成していて面白いのですが、CalicoはびっくりするほどL2通信を行わない、行うにしても極力限定的にするよう作られていて、非常に興味深いアーキテクチャとなっています。
そのおかげか、IPv6への適用が最もしやすく、MastodonでIPv6対応していたインスタンスをk8s基盤に載せ、かつ、IPv6対応を復帰させられたのはぶっちゃけこれのおかげです。
いずれにしても、Kubernetesの持つ各種機能とその連携コンポーネントは最新技術の塊で、慣れてしまえばどこまでもハマり込めるものがありますので、ぜひぜひお試しくださいまし。
SaaS系ソリューションなどでは、結構用いられているのではないかなーと思います。こういうの。
Comments are closed