linuxでinterfaceをbondingして冗長化

ref.


modprobeでbondingのモジュール読み込んで、ごにょごにょっと設定書くだけで出来た。すげー簡単。


modeはラウンドロビンの0じゃなくて、active-backupの1のが管理しやすいかな。

/etc/modprobe.d/bonding

alias bond0 bonding
options bonding mode=1 miimon=200

/etc/sysconfig/network-script

  • ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.10
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
  • ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
MASTER=bond0
SLAVE=yes
  • ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
MASTER=bond0
SLAVE=yes

確認

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.1.2 (January 20, 2007)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 200
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: xx:xx:yy:yy:zz:01

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: xx:xx:yy:yy:zz:02

active-backupになってて、eth0がactive状態になっているのが確認できる。

# ifconfig  | grep HWaddr
bond0     Link encap:Ethernet  HWaddr xx:xx:yy:yy:zz:01
eth0      Link encap:Ethernet  HWaddr xx:xx:yy:yy:zz:01
eth1      Link encap:Ethernet  HWaddr xx:xx:yy:yy:zz:01

macアドレスが全て同じになってるのが確認できる。
他にはイーサネットケーブル引っこ抜いて確認とか。

bonding mode0 (round robin)の場合

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.1.2 (January 20, 2007)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 200
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:30:48:7f:bf:22

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:30:48:7f:bf:23

round-robinになってる。

ping

# ping www.google.com
PING www.l.google.com (66.249.89.104) 56(84) bytes of data.
64 bytes from jp-in-f104.google.com (66.249.89.104): icmp_seq=1 ttl=248 time=10.8 ms
64 bytes from jp-in-f104.google.com (66.249.89.104): icmp_seq=1 ttl=248 time=10.9 ms (DUP!)
64 bytes from jp-in-f104.google.com (66.249.89.104): icmp_seq=2 ttl=248 time=11.5 ms
64 bytes from jp-in-f104.google.com (66.249.89.104): icmp_seq=2 ttl=248 time=11.6 ms (DUP!)

round robinだと(DUP!)ってのが出るけど、問題ないらしい。

ref.

pingの結果でパケットが duplicate(DUP!)になっているのは、ブロードキャストパケットを受信したvlanグループ内のインターフェイス全てがレスポンスを返すためです。従って、特に問題はありません。