linuxのbondingのarp監視のarp_validate option

bondingしているserverが直接接続しているL2 switchが障害した場合はMII監視でlink downを検出できるけど、一番上の参照元のblogのように、上位のswitchの障害を検知するにはdefaultのMII監視では出来ない。(後述するけどL2 switchのtrunk failoverを使えば可能)

arp監視

そこでarp監視を使おうと思って試してみたけど、defaultの設定では上位のswitchが落ちても、bond0のslave interface eth0、eth1ともにlink up のままになって切り替わってくれない。調べてみると、network内に他にarp監視をしているserverなどbroadcastトを投げているserverがあれば、そのpacketを受け取ってupと判断してしまうらしい。

arp_interval option

さらに調べるとarp_interval=3 (all) を指定してarp packetをcheckするようにすれば対応可能らしい。と辿りついたけど実際設定してみると、今度はswitchが全て正常に繋がっているのにeth0, eth1 ともにdownになってしまった。

どうもbonding interfaceをbridgeで設定していると、arp_validateが正常に動作しないらしい。でも、bondingさせようとしているのはkvm仮想化ホストサーバなので、bridgeは必須なんですが('A`)

解決

とここまで悩んで、何もlinux serverだけで解決しなくてもnetwork機器の力を借りればいいじゃないか、と思いついたのでbondingはMII監視のまま、switchの設定で回避することにしたので別にまとめた。