スタックの必要性と心の次元大介
これまで例のAT-X510-28GTXでいろいろと遊んできたわけだが、最後に VCS機能について触れて一つの区切りとしたい。CLIから VCS(ヴァーチャルシャーシスタック)機能を有効化すると、27番ポートと28番ポートがスタック専用ポートとなり、他のAT-x510シリーズのスイッチを複数台接続することでスタックを組むことができる。スタックを組むと何が嬉しいのかというと、2台以上のスイッチを実質的にでっかい一つのスイッチとして扱うことができるようになる。スイッチポートが26ポートあるAT-X510-28GTXを2台でスタックを組んだら、52ポートのでっかいスイッチとして管理することができるのだ。コンフィグファイルも一つでいいし、ファームウェアのバージョンアップなんかも楽ちんとなる。スタックの接続ケーブルに異常が出たり参加しているスイッチに異常が出てもリング状に接続されるのでマスターが切り替わってスタックとして稼働し続けることができるようになっているが、冗長化機能を提供するわけではない。 可用性を高めるためには、リンクアグリゲーション(ポートトランキング) を使用して回線を冗長化する必要がある。
現状、セグメントが一つしかなくAT-X510-28GTXちゃんをL2スイッチとしてしか使っていないような我がネットワークの状況で、これ以上スタックなど必要か。必要とは、必ず要すると云う事だ。その意味でいえば必要などではない。あったら便利という次元でもない。あったところで使い道など無い。必ず持て余す。なんせうちのネットワークに収容する機器なんてNASとPC数台しかないのだから。であるならば、スタックなど組まずに済ますのか。そんなときには心の次元大介が私にささやく。
お前さんがどれだけ軽い銃を使おうが知ったちゃこっちゃないが、俺に言わせりゃロマンに欠けるなぁ。
(次元大介の墓標より)
ロマンだ。ロマンでスタックを組むのだ。スタックを組まなければロマンに欠けるのだとしたら、組まないという選択肢はない。組まなければ男ではないのである。今回は2台で組む。
スタックを組む前に
VSC機能はデフォルト状態では有効になっていた。VSC機能を無効化してスタックポートを通常のスイッチポートとして使う場合は”no stack enable”コマンドを打つとVSC機能が無効となり、27、28ポートがスイッチポートとして使用可能となる。今回はスタックを組みたいのでVSC機能を有効のままにしておく。
awplus> show stack
Virtual Chassis Stacking summary information
ID Pending ID MAC address Priority Status Role
1 - eccd.xxxx.xxxx 128 Ready Active Master
Operational Status Standalone unit
Stack MAC address eccd.xxxx.xxxx
後は、1号機の27番ポートと2号機の28番ポート、および1号機の28番ポートと2号機の27番ポートをDAC(ダイレクトアタッチケーブル)ケーブルか、光トランシーバーと光ファイバーケーブルでつないで、”erase startup-config ”コマンドでローカルのコンフィグを削除して再起動すると、VCS(ヴァーチャルシャーシスタック)として使うことができる。スタックから切り離したときのために、単独で動いていた時のコンフィグファイルはバックアップしておくのがおすすめである。
また、sshを使用している場合、ユーザー公開鍵 までは引き継がないので、スタックに参加する各機のローカルでsshの公開鍵を作成しておく必要がある。これを怠ると マスターが切り替わった時にsshでログインできなくなってしまう。
使用できるケーブルはSFP+モジュールと銅線が一体となっているDACケーブルと、光トランシーバーに光ファイバーケーブルをさしてつかうケーブルが使用できる。スタックポートの接続は上記のとおり27番と28番を数珠つなぎにしてグルっとリング状に回してくるのだが、マニュアルによれば2台でスタックを組む場合はケーブル1本でもスタックが組めてしまうらしい。だが、2台でもぐるっとリング状に組むのが、ケーブル障害にも強いという意味でも推奨される。
さらに、スタックポートの接続に銅ケーブルと光ファイバーが混在していてもスタックを組むのには問題がない。マニュアルのお墨付きである。光ファイバーのみでスタックを組んだら、スタックメンバー間のステータス監視を行うためのレジリエンシーリンクが任意となる。銅ケーブルが混ざったらレジリエンシーリンク は必須となり、銅ケーブルが混ざってるのにレジリエンシーリンク無しで運用した場合はサポートが受けられない。格安の中古品で遊んでいる我々にはサポートの有無はさしたる問題ではないが、業務で利用している場合はいざというとき大問題となりかねないので注意が必要だ。レジリエンシーリンクは専用のvlanを切って、各メンバー2ずつポートを割り当て、スタックリンクと同様にぐるっと数珠つなぎにリング状になるようにつなぐ。10GbEのSFP+ポートを使うと勿体ないのでレジリエンシーリンクは通常のLANケーブルで1GbE接続となるが、スタックメンバーの正常性や異常発生の監視のみに使用され、それ以外のネットワークとしては機能しない。スタックリンクが切れてレジリエンシーリンクが生きていた場合もステータス監視以外のデータは流れない。
どのモジュールが使えるか
スイッチポートではベンダーロックがかかっていないAT-X510-28GTXちゃんだが、スタックポートでは使えるモジュールに制限があり、マニュアルにもどの型番のモジュールが使えるかの記述がある。具体的には以下の通り。
- AT-StackXS/1.0(カッパースタックモジュール。モジュール2個とケーブル1本の一体型)
- AT-StackOP/0.3(ファイバースタックモジュール)
- AT-StackOP/9.0(ファイバースタックモジュール)
- AT-SP10SR(ファイバーSFP+モジュール)
- AT-SP10LR(ファイバーSFP+モジュール)
- AT-SP10ER40/I(ファイバーSFP+モジュール)
使えないモジュールをスタックポートに接続した場合、ブート時のメッセージで以下のように怒られる。
Received event network.initialized
11:50:43 awplus-1 Pluggable[559]: Pluggable SFP-H10GB-CU5M inserted into port1.0.27
11:50:44 awplus-1 HSL[858]: ERROR: port1.0.27 - Only ATI qualified modules are supported in this port. Please remove.
使えるモジュールに制限があると言っても、DACケーブルの場合は上記のリストにないサードパーティー製のケーブルでもスタックが組めちゃったりする。今回購入時のファームウェアであったx510-5.4.4-3.10.rel
の場合、スタックに使用できるSFP+モジュールの制限がきついようで、 x510-5.4.4-3.10.rel ではスタックに使えなかったDACケーブルがx510-5.4.9-0.1.rel
では使えちゃったりするのである。DACケーブルでは、うちの環境ではアマゾンで買った10GtecのSFP-H10GB-CU5Mと、ヤフオクで買ったMellanox社のMCP2104-X003Bで試してみた。
まずは 10GtecのSFP-H10GB-CU5M 。
“show system pluggable”の出力をご覧いただこう。結論から言うとこのケーブルはスタックポートでは使用できなかった。TypeがUnknownと認識されていて、正しく認識できていないような感じがする。
SW2>show system pluggable
System Pluggable Information
Port Vendor Device Serial Number Datecode Type
--------------------------------------------------------------------------------
1.0.27 OEM SFP-H10GB-CU5M S1xxxxxxxxxxx 180727 Unknown
L3SW2>
つぎに、 Mellanox社のMCP2104-X003B 。
こちらはちゃんとTypeが1xCOPPER PASとして認識されていてい感じである。このケーブルは何と、スタックポートでスタックケーブルとして使用できた。1.0.27が1号機の27番ポートを意味しており、2.0.28は2号機の28番ポートを指している。2つのポートを一つのDACケーブルでつないでいる。”show stack”コマンドで確認しても、1本しかつないでないのに、スタックがマニュアルの記述通りちゃんと組めちゃっている様子が確認できた。
SW2>show system pluggable
System Pluggable Information
Port Vendor Device Serial Number Datecode Type
--------------------------------------------------------------------------------
1.0.27 Mellanox MCP2104-X003B MTxxxxxxxxxxx 140118 1xCOPPER PAS
2.0.28 Mellanox MCP2104-X003B MTxxxxxxxxxxx 140118 1xCOPPER PAS
SW2>
SW2>
SW2>show stack
Virtual Chassis Stacking summary information
ID Pending ID MAC address Priority Status Role
1 - eccd.xxxx.xxxx 128 Ready Active Master
2 - eccd.xxxx.xxxx 128 Syncing Backup Member
Operational Status Not all stack ports are up
Stack MAC address eccd.xxxx.xxxx
SW2>
起動時にスタックに参加する機器同士で自動的に調整が行われ、誰がマスター機になるのかが決まる。”show stack”コマンドの出力のPriorityの値が小さい方が優先的にマスターとなる。Priorityの値が同じ場合はmacアドレスの小さい方が優先される。
FC.comさんのAlied Telesis互換のDACケーブルでもスタックが組めたという話をTwitterで見かけたが今回は予算の関係上試していない。
レジリエンシーリンクを作っちゃお
DACケーブルでスタックを組んだ場合はレジリエンシーリンクが必須となるのでスタックが組めた状態で作ってみる。まずは、”stack resiliencylink”コマンドでレジリエンシーリンク専用のvlanを切る。グローバルコンフィグモードでうつ。マニュアルを真似してvlan4001という名前で切ってみる。
SW0>enable
SW0#
SW0#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SW0(config)#
SW0(config)#
SW0(config)#stack resiliencylink vlan4001
SW0(config)#
SW0(config)#
SW0(config)#exit
SW0#
SW0#show ip interface
Interface IP-Address Status Protocol
lo unassigned admin up running
vlan1 192.168.0.2/24 admin up running
vlan4001 unassigned admin up down
SW0#
次に、1号機と2号機のそれぞれの23番ポートと24番ポートをレジリエンシーリンクとして指定してみる。グローバルコンフィグモードで、”interface”コマンドでインターフェース指定してインターフェースモードへ入る。ハイフンでつなぐと範囲指定ができる。カンマでつなぐと範囲ではなく複数指定ができる。port1で始まるポートが1号機のポート、port2で始まるポートが2号機のポートとなる。インターフェースを指定した状態で”switchport resiliencylink”コマンドを打つと、指定されたポートがレジリエンシーリンク専用のポートとなる。レジリエンシーリンク専用ポートは各機のステータス情報のやり取りをするのみで、ネットワークのデータはやり取りできない。
SW0#
SW0#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SW0(config)#
SW0(config)#interface port1.0.23-1.0.24,port2.0.23-2.0.24
SW0(config-if)#
SW0(config-if)#switchport resiliencylink
SW0(config-if)#
SW0(config-if)#
SW0(config-if)#exit
SW0(config)#
SW0(config)#
SW0(config)#exit
SW0#
SW0#
SW0#show interface status
Port Name Status Vlan Duplex Speed Type
port1.0.1 notconnect 1 auto auto 1000BASE-T
port1.0.2 notconnect 1 auto auto 1000BASE-T
port1.0.3 notconnect 1 auto auto 1000BASE-T
port1.0.4 notconnect 1 auto auto 1000BASE-T
port1.0.5 notconnect 1 auto auto 1000BASE-T
port1.0.6 notconnect 1 auto auto 1000BASE-T
port1.0.7 connected 1 a-full a-1000 1000BASE-T
port1.0.8 connected 1 a-full a-1000 1000BASE-T
port1.0.9 connected 1 a-full a-1000 1000BASE-T
port1.0.10 connected 1 a-full a-1000 1000BASE-T
port1.0.11 connected 1 a-full a-1000 1000BASE-T
port1.0.12 notconnect 1 auto auto 1000BASE-T
port1.0.13 notconnect 1 auto auto 1000BASE-T
port1.0.14 notconnect 1 auto auto 1000BASE-T
port1.0.15 notconnect 1 auto auto 1000BASE-T
port1.0.16 notconnect 1 auto auto 1000BASE-T
port1.0.17 notconnect 1 auto auto 1000BASE-T
port1.0.18 notconnect 1 auto auto 1000BASE-T
port1.0.19 notconnect 1 auto auto 1000BASE-T
port1.0.20 notconnect 1 auto auto 1000BASE-T
port1.0.21 notconnect 1 auto auto 1000BASE-T
port1.0.22 notconnect 1 auto auto 1000BASE-T
port1.0.23 connected 4001 a-full a-1000 1000BASE-T
port1.0.24 connected 4001 a-full a-1000 1000BASE-T
port1.0.25 connected 1 a-full a-10G 10GBASE-SR
port1.0.26 connected 1 a-full a-10G 10GBASE-SR
port1.0.27 connected stackport a-full a-10G 10GBASE-SR
port1.0.28 connected stackport a-full a-10G 10GBASE-SR
port2.0.1 notconnect 1 auto auto 1000BASE-T
port2.0.2 notconnect 1 auto auto 1000BASE-T
port2.0.3 notconnect 1 auto auto 1000BASE-T
port2.0.4 notconnect 1 auto auto 1000BASE-T
port2.0.5 notconnect 1 auto auto 1000BASE-T
port2.0.6 notconnect 1 auto auto 1000BASE-T
port2.0.7 notconnect 1 auto auto 1000BASE-T
port2.0.8 notconnect 1 auto auto 1000BASE-T
port2.0.9 notconnect 1 auto auto 1000BASE-T
port2.0.10 notconnect 1 auto auto 1000BASE-T
port2.0.11 notconnect 1 auto auto 1000BASE-T
port2.0.12 notconnect 1 auto auto 1000BASE-T
port2.0.13 notconnect 1 auto auto 1000BASE-T
port2.0.14 notconnect 1 auto auto 1000BASE-T
port2.0.15 notconnect 1 auto auto 1000BASE-T
port2.0.16 notconnect 1 auto auto 1000BASE-T
port2.0.17 notconnect 1 auto auto 1000BASE-T
port2.0.18 notconnect 1 auto auto 1000BASE-T
port2.0.19 notconnect 1 auto auto 1000BASE-T
port2.0.20 notconnect 1 auto auto 1000BASE-T
port2.0.21 notconnect 1 auto auto 1000BASE-T
port2.0.22 notconnect 1 auto auto 1000BASE-T
port2.0.23 connected 4001 a-full a-1000 1000BASE-T
port2.0.24 connected 4001 a-full a-1000 1000BASE-T
port2.0.25 notconnect 1 a-full a-10G 10GBASE-SR
port2.0.26 notconnect 1 a-full a-10G 10GBASE-SR
port2.0.27 connected stackport a-full a-10G 10GBASE-SR
port2.0.28 connected stackport a-full a-10G 10GBASE-SR
SW0#
この状態で、スタックポートと同様に環状になるようにぐるっと回すように接続すると、レジリエンシーリンクの出来上がりである。
どの光トランシーバーが使えるのか
光トランシーバーの場合は x510-5.4.9-0.1.rel でもベンダーロックがきつきつであった。DACケーブルでスタックが組めたので、光トランシーバーでのスタックに挑戦する意味はないように思えるかもしれない。だが、光をピカピカさせてデータ通信するのはかっこよく、ピカピカできるところはできるだけピカピカさせたい。それに、光ファイバーケーブルはとても細いのでDACケーブルの太いケーブルよりもインテリアとしてスマートである。リビングに置くなら断然光ファイバーだ。
IBM-Avago AFBR-709SMZ-IB8ならどうか
ブロードコム製のIBM向けのSRの光トランシーバーで試してみた。やはりというべきか、駄目だった。めっちゃ怒られた。
00:35:33 SW1 Pluggable[584]: Pluggable 46C3448-L80181K inserted into port1.0.27
00:35:33 SW1 HSL[952]: ERROR: port1.0.27 - Only ATI qualified modules are supported in this port. Please remove.
SW1#
SW1#show system pluggable status
System Pluggable Information
Port Vendor Device Serial Number Datecode Type
--------------------------------------------------------------------------------
1.0.27 IBM-Avago 46C3448-L80181K Yxxxxxxxxxxxx 141215 10GBASE-SR
CISCO-FINISAR SFP-10G-SRならどうか
FINISAR社製のCISCO向けSRの光トランシーバーで試してみた。これもやはりだめだった。また怒られた。
00:38:12 SW1 Pluggable[584]: Pluggable FTLX8571D3BCL-C2 inserted into port1.0.27
00:38:12 SW1 HSL[952]: ERROR: port1.0.27 - Only ATI qualified modules are supported in this port. Please remove.
SW1#
SW1#show system pluggable status
System Pluggable Information
Port Vendor Device Serial Number Datecode Type
--------------------------------------------------------------------------------
1.0.27 CISCO-FINISAR FTLX8571D3BCL-C2 Fxxxxxxxxxxxx 110823 10GBASE-SR
10Gtec AX85-192-M3ではどうか
ここまでは、各メーカーの純正モジュールだったので弾かれて当然と言えば当然である。しかし、10GtecのAlied Telesis互換を謳うモジュールならどうか。これなら前の2つよりは期待が持てるのではないか。ところがどっこい、これも駄目だった。相変わらず同じ文言で怒られる。
00:37:10 SW1 Pluggable[584]: Pluggable AT-SP10GSR inserted into port1.0.27
00:37:10 SW1 HSL[952]: ERROR: port1.0.27 - Only ATI qualified modules are supported in this port. Please remove.
SW1#
SW1#show system pluggable status
System Pluggable Information
Port Vendor Device Serial Number Datecode Type
--------------------------------------------------------------------------------
1.0.27 FINISAR CORP. AT-SP10GSR ATSSRxxxxxx 160501 10GBASE-SR
FS SFP-10GSR-85ならばどうか
こんちくしょう、ここまで3連敗である。ならば、FS.comにて注文フォームからベンダー名alied telesisとデバイス名AT-SP10SR を指定して注文したモジュールではどうか。これならばいけるのではないか。期待に胸が膨らんだが、やっぱりこれも駄目だった。注文フォームのベンダー名とデバイス名は、送られてきたモジュールには反映されていないようだ。
15:28:15 L3SW0 Pluggable[577]: Pluggable SFP-10GSR-85 inserted into port1.0.27
15:28:16 L3SW0 HSL[867]: ERROR: port1.0.27 - Only ATI qualified modules are supported in this port. Please remove.
SW1#
SW1#show system pluggable status
System Pluggable Information
Port Vendor Device Serial Number Datecode Type
--------------------------------------------------------------------------------
1.0.27 FS SFP-10GSR-85 Cxxxxxxxxxx 190809 10GBASE-SR
最早これまで、万策尽きたかと思われたが、実はFS.comには、FSボックスという名のモジュールのファームウェア調整ツールが販売されている。これを使えば、レーザーの波長からベンダー名まで書き換えて調整することができる。これでベンダー名とデバイス名を書き換えたら、ベンダーロックをすり抜けられるのではないか。Alied Telesisの純正モジュールのベンダー名は”ATI”となる。今回は、ベンダー名”ATI-FS”とし、デバイス名を”AT-SP10SR”としてみた。FSボックスはどのモジュールでも自由自在に書き換えられるというわけではなく、書き換えたいパラメーターを専用ソフトをインストールしたPCからFSボックス専用サイトへブラウザでログインしてFS.comへ送信して、FS.comからOKが出たらやっとこさブラウザから操作してUSB接続されたFSボックスでモジュールのファームウェア書き換えができるという何ともややこしい手順を踏む必要がある。何はともあれやってみたところ、なんと、光トランシーバーでスタック出来ちゃったのだ。
SW0#show system pluggable
System Pluggable Information
Port Vendor Device Serial Number Datecode Type
--------------------------------------------------------------------------------
1.0.27 ATI-FS AT-SP10SR xxxxxxxxxxx 190820 10GBASE-SR
1.0.28 ATI-FS AT-SP10SR xxxxxxxxxxx 190820 10GBASE-SR
2.0.27 ATI-FS AT-SP10SR xxxxxxxxxxx 190820 10GBASE-SR
2.0.28 ATI-FS AT-SP10SR xxxxxxxxxxx 190820 10GBASE-SR
SW0#
SW0#
SW0#show stack
Virtual Chassis Stacking summary information
ID Pending ID MAC address Priority Status Role
1 - xxxx.xxxx.xxxx 64 Ready Active Master
2 - xxxx.xxxx.xxxx 128 Ready Backup Member
Operational Status Normal operation
Stack MAC address 0000.xxxx.xxxx (Virtual MAC)
SW0#
ついに、光ファイバーでピカピカさせることでスタックを組むという最終目標に到達した。長かった。スタックのメンバーが近くに設置されていた場合、ケーブルが長いと邪魔なので短くしたくなるが、光ファイバーケーブルは1m以上でないと光が強すぎて受け側の寿命が短くなってしまう可能性がある。極端に短いケーブルは避けるべきであろう。
スタックのメンバー間での情報同期にはNFSが用いられていて、デフォルトではスタック用の内部ネットワークは192.168.255.0/24となっている。このアドレスを別の用途で使う必要がある場合は、”stack management subnet”コマンドを使用して管理用ネットワークのアドレスを変更することができる。
また、トリガーを使って起動時にスクリプトで/sys/class/hwmon/hwmon0/device/
配下のファイルを操作している場合、 /sys/class/hwmon/hwmon0/device/
はNFSマウントされておらず、 スタック環境下ではマスター機のファイルしか書き換えることができなかった。ファンの回転数を変更している場合などは注意が必要である。
何はともあれ、光ファイバーでスタックが組めたことはめでたい。このめでたさを皆と共有しつつ、おうちに居ながらデータセンターのようなL3スイッチで遊べる幸運を寿いでいたい。そんなことを秋の夜長に考えているのである。