読者です 読者をやめる 読者になる 読者になる

よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

NIC冗長化〜Miimon編〜

HPのDL360でbondingの設定をしました。

以前のブログ「NICの冗長化」で、デバイスドライバが提供する機能でLink Downを検知し、もう一方の正常なリンクを利用するようにするMiimon監視がうまく動作しないと書きました。
また、「RedHat ES 4でbondingを複数設定するときは」でもbondingのことを書きました。

今回、DL360にてMiimon監視が正常に動作するかの検証をしてみたところ、DL360では正常に動作することが確認できました。

bondingの設定

Ethernetインタフェースの設定は以下のようにしました。
eth0とeth1でbondingを組まなかった理由は、eth0とeth1がONボードのBroadComのNICであり、eth2がオプションで追加したIntelのNICであるため、ONボードのNICに障害が発生しても通信可能なようにしておくためです。

[server1]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:xx:xx:xx:xx:D0 #適当に変更しています
ONBOOT=yes
TYPE=Ethernet
MASTER=bond0
SLAVE=yes

[server1]$ cat /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
HWADDR=00:xx:xx:xx:xx:06 #適当に変更しています
ONBOOT=yes
TYPE=Ethernet
MASTER=bond0
SLAVE=yes

[server1]$ cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.226.11
NETMASK=255.255.255.224
NETWORK=192.168.226.0
BROADCAST=192.168.226.31

modprobe の設定は以下のようにしました。

[server1]$ vi /etc/modprobe.conf
・・・(略)
alias bond0 bonding
options bond0 miimon=100 mode=1 primary=eth0
・・・(略)

これでNIC冗長化の設定は終了。

bondingの確認

以下のコマンドで動作モードおよびカレントインタフェースが確認できます。

[server1]$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v2.6.3-rh (June 8, 2005)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 #プライマリがeth0
Currently Active Slave: eth0 #eth0がアクティブ
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 5
Permanent HW addr: 00:xx:xx:xx:xx:d0

Slave Interface: eth2
MII Status: up
Link Failure Count: 3
Permanent HW addr: 00:xx:xx:xx:xx:06

mode 1で動作させるため、eth0およびeth2のそれぞれがLink Upしている場合は、eth0で通信し、eth0がLink Down時はeth2で通信します。

bonding(Miimonで動作)のテスト

上記のような設定で、以下の図のような構成で2つのテストを実施しました。

f:id:interu:20080824221312p:image

テスト内容は以下の通り。

  • WindowsクライアントからLinuxのbond0に割り当てたIPである192.168.2.11宛てにPingを送信し応答があるかどうか
  • WindowsクライアントからSSHで接続し、コネクションがロストしないかどうか

bondingのテストの結果

HUBでeth0と接続しているLANケーブルを抜いてみると、パケットロスせずにEthernetインタフェースがeth2へ変更されました。
そのときSSHのコネクションは失われず、操作可能な状態のままでした。

続いてeth0をつなぎなおすと、SSHのコネクションは失われませんでしたが、Pingで1パケットだけロストすることがわかりました。
#動作確認のテストを3回して、3回とも1パケットロスしました。

というわけで、ハードウェアもしくはドライバに影響するのかもしれませんが、Miimon監視でも正しく動作することが確認できました。少なくともDL360では正常に動作しました。

Miimon監視はARP監視と異なり、リクエストを指定したマシンに対してパケットを送信して確認をしないため、NICがLink Upしているのに通信できないような状況では利用NICの切り替えが動作しませんので、そのような状況を許容できないシステムではARP監視を利用した方が無難ですので、
状況に応じて使い分ける必要がありそうです。