Cumulusでスイッチの冗長化(MLAG)!
スイッチの冗長化 MLAG(Multi Chasssis Link Aggregation)
MLAGとは2台のスイッチを跨いでリンクアグリゲーションすることにより帯域確保と冗長化を目的とした構成です。接続された2台は、論理的な1台のスイッチのように振る舞います。Mellanoxのスイッチでは手慣れたMLAGですが、Cumulusでも構成することができます。
では、早速Labにて構成を作ってみました。今回、MLAGが動作しているか確認しやすいようにターゲット側は冗長性を組まず、イニシエータ側の片側のターゲット側がいないスイッチへの結線を抜いたときに、2台を結線したIPL(InterPeerLink)を使用してそのままIOが継続することを確認して、MLAGが正常に動作していることを判断しました。
1 MLAGの設定(スイッチの冗長化)
SERV01はそれぞれのスイッチのPort1 SERV02はPort4に接続されており、Active-Activeとなってます。ターゲットへのIOを実行中にどちらのポート(もちろん片方だけ)のケーブルを抜いてもターゲットへのIOが止まらないことを確認しました。
1.1 MLAGの設定
/etc/network/interfacesの編集してMLAGのパラメータを設定します。
/etc/networki/interfacesの各種パラメータ
・bridge-ports XXXX XXXX
ブリッジにXXXXのインターフェースを接続する設定
・bond-slaves swp21 swp22
swp21とswp22をボンディングする
・bond-mode 802.3ad
リンクアグリゲーションにLACPを使用する設定
・bond-miimon 100
リンク状態の確認間隔を設定する(ミリ秒)
・bond-use-carrier 1
リンクの検出方法を設定する
・bond-lacp-rate 1
LACPパケットの送信間隔の設定
0=Fastモード(1秒)、1=Slowモード(30秒)
・bond-min-links 1
リンクアグリゲーションがリンクアップするために必要な最小アクティブポート数の設定
・bond-xmit-hash-policy layer3+4
リンクアグリゲーションのロードバランスアルゴリズム設定
・clagd-priority 2000
MLAGスイッチのプライオリティを設定する
数字の小さいスイッチがMLAGプライマリースイッチ
・clagd-peer-ip 169.254.255.254
対向MLAGスイッチのピアリンクインターフェースのIPアドレスの設定
・clagd-backup-ip XX.XX.XX.XX
対向MLAGスイッチのバックアップリンクインターフェースのIPアドレスを設定
・clagd-sys-mac 44:38:39:ff:00:00
MLAGスイッチのシステムMACアドレス設定(LACPとSTPで使用される)
※対向スイッチと同じ値を設定
・clag-id 1
MLAG IDを設定する(MLAGポート毎に一意)
1.2 PeerLInkの設定
2台のスイッチを接続するIPL(InterPeerLink)の設定を、おのおのの(プライマリ、セカンダリ)の /etc/networki/interfacesに行います。
(1)PeerLink ボンディングの設定 ※1号機、2号機とも同じ
swp21とswp22を使用して、スイッチ間接続(PeerLink)を設定する
LACP(802.3ad)のみサポート、bond名は“peerlink”
auto peerlink
iface peerlink
bond-slaves swp21 swp22
(2)PeerLinkの設定 SN2010-1(プライマリ)
auto peerlink.4094 →PeerLinkのサブインターフェース VLAN4094
iface peerlink.4094
address 169.254.1.2/30 →MLAGのコントロールメッセージ通信用
clagd-backup-ip 192.168.0.12 →KeepAlive用(管理ポートを使う)
clagd-peer-ip 169.254.1.1 →自身のIPアドレス
clagd-priority 2000 →プライマリの方が大きい数を設定
clagd-sys-mac 44:38:39:FF:00:01 →MLAG用のMACアドレス
(2)PeerLinkの設定 SN2010-1(セカンダリ)
auto peerlink.4094
iface peerlink.4094
address 169.254.1.1/30
clagd-backup-ip 192.168.0.11
clagd-peer-ip 169.254.1.2
clagd-priority 1000
clagd-sys-mac 44:38:39:FF:00:01
(3)Bridgeの設定
PeerLinkをBridgeに追記します
auto bridge
iface bridge
bridge-ports peerlink
bridge-vids 100
bridge-vlan-aware yes
1.3 LAGの設定
イニシエータ(Windowsサーバ)を接続するポートにLAG(Bonding)を設定します。
両方のスイッチに“SERV01(swp1)”と“SERV02(swp4)” のBondingを設定する。
今回は1本づつなので、“bond-slave”に1つのポートだけ記載してますが、Bondingは何本づつでも構いません、
そのときは“bond-slaves”に swpxxを足せばよいです。
SERV01
auto SERV01
iface SERV01
bond-slaves swp1
clag-id 1
bond-mode 802.3ad
bond-miimon 100
bond-use-carrier 1
bond-lacp-rate 1
bond-min-links 1
bond-xmit-hash-policy layer3+4
SERV02
auto SERV02
iface SERV02
bond-slaves swp4
clag-id 2
bond-mode 802.3ad
bond-miimon 100
bond-use-carrier 1
bond-lacp-rate 1
bond-min-links 1
bond-xmit-hash-policy layer3+4
上記で設定しているbondingGrpoupをBridgeに追記が必要です。
auto bridge
iface bridge
bridge-ports peerlink SERV01 SERV02 ←ここに追記
bridge-vids 100
bridge-vlan-aware yes
1.4 swp7の設定
iSCSIターゲットの接続しているswp7を設定する
ここは、Bondingしていませんので、単純にswp7を活性化(有効化)します。
auto swp7
iface swp7
link-speed 25000
上記で設定したswp7をBridgeに登録する設定を追記します。
bridgeへ追加
auto bridge
iface bridge
bridge-ports peerlink SERV01 SERV02 swp7
bridge-vids 10 20 100
bridge-vlan-aware yes
これで2台のスイッチは冗長構成となり、接続しているイニシエータのどちらのパスが切れてもターゲットへのIOは継続できます。
2 便利なコマンド
Cumulus 知っていると便利なコマンドを紹介します。
■nets show コマンドオプション
なにかと使う、“netshow”コマンドのオプションです。
#net show
■スイッチのリセット
#systemctl restart switchd
■スイッチのハードウェア確認
#smonctl
■FANのコントロール
#pwmd -d
#pwmd -h
■Sensors コマンド
#sensores
-bash: sensores: command not found
root@cumulus:/etc/network# sensors
■電源の確認
#ledmgrd -d
#smonctl | grep PSU
■ネットワーク状態確認
#netshow conters
#ethtool swp1
#ethtool -S swp7
#netshow int swp1
#net show bridge macs
#netshow lldp
#net show lldp swp21
■詳細なBonding情報
/proc/net/bonding の配下にファイルがある
-r–r–r– 1 root root 0 Feb 28 15:26 peerlink
-r–r–r– 1 root root 0 Feb 28 15:26 SERV01
-r–r–r– 1 root root 0 Feb 28 15:26 SERV02
そのファイルを閲覧すると・・・・・
#cat SERV01
ひとまずこれでCumulusインストールしたホワイトボックススイッチを最低限の基本的な機能を使えるようになったと思います。
逐次記事のアップデートはしたいと思っておりますので今後ともよろしくお願いいたします。