だいたい毎日適当に過ごしてます。
たまにゃー技術的な事を書こうというか、メモ書きを残そうと思います。
昨日今日とやった仕事であったもの
MSのフェールオーバークラスタ2台で構成されたサーバーと
FW越しに、それにアクセスするサーバーがありましてー
そのアクセス用サーバーからクラスタのVIPと通信してるときに
フェイルオーバーすると通信ができなくなるってやつ原因さぐってました。
通信できない時点でそれクラスタとしてどうなのか・・・というw
■フェールオーバークラスターについて
通称MSFCとかWSFCとか言われるもの。最初がMならマイクロソフトだし
WならWindowsだし、いつから名前ごっちゃになってるの・・・
昨日から2台で1クラスタ(Act/Std構成)組んで、フェイルオーバーさせた時の挙動を見てました。
01と02が居てそれぞれIPアドレスとMACアドレスの末尾が10(19)と11(0D)で
フローティングIP(VIP)を末尾100に設定してます。
この時点で気づいたのが、MSFCって仮想MACアドレス持たないんですかね。
フェイルオーバーさせるとVIPはそのままに紐づけるMACアドレスが
スタンバイ機のMACアドレス(0D)になります。
しかもフェイルオーバーしてもこいつらGARP投げてないっぽいんですよ。
だから対向のFWは、IPアドレス100に紐づくMACがフェイルオーバー前のMAC100(19)指してるんですよ
そりゃ通信できるわけないよね・・・・っていう。
■対向のFWはブロケードのvRouterです
こいつ中身Linuxだよねっていうか、VyOSですね。vYattaテヘ
しかもこのルータ、ProxyArpくらいしか機能がねぇ。
そのへんのスイッチみたく、arpテーブルの保持期間とか設定できないのか。
■結局どう解決したのか
ブロケードのvRouterがLinuxである事をいいことに
arpテーブルの保持時間を超短くすることで対応しました。
以下に手順
SSHでブrrrケードのvRouterにログイン
> $ configure
> run spawn nano /proc/sys/net/ipv4/neigh/[MSFCのあるセグメント]/base_reachable_time_ms
中身の30000を1000とかに変えます(30秒→1秒)
ついでに以下のファイルも編集して再起動後も安心
> run spawn nano /etc/sysctl.d/30-vyattaなんちゃら.conf
末尾に以下を追加
net.ipv4.neigh.[Segment].base_reachable_time_ms = 1000
この日記の訂正と謝り
しかもフェイルオーバーしてもこいつらGARP投げてないっぽいんですよ。
嘘ですGARP投げてます! 対象となるセグメントがGARP破棄する設定になってました・・・
謎クラウドサービスの罠でしたごめんなさい。