bonding設定手順(CentOS 5.4) | kyontra日記

bonding設定手順(CentOS 5.4)

◇bonding設定手順(CentOS 5.4)◇
CentOS 5.4でのbonding設定方法についてまとめます。
Red Hat Enterprise Linux v.5 (RHEL5) でも同じように設定可能かと・・・。

bondingの設定に関する詳細はbonding.txtをご参照ください。
http://archive.linux.or.jp/JF/JFdocs/kernel-docs-2.6/networking/bonding.txt.html


★注意★
bondingの設定方法はCentOS4やRHEL4とは異なります。bonding.txtには新しい設定方法を推奨するという記載のみで古い設定が不可である旨ははっきりと書かれていないような気もしますが(全部を読んだわけではないので、もしかしたらアナウンスされているかも・・・)、古い設定ではいくつかの問題があるので、本記事に記載する新しい設定方法を行う方が良いと思います。


◇bonding設定方法◇
ここではeth0とeth2でbond0を、eth1とeth3でbond1を設定する方法を記載します。
bondingの監視はMII監視とARP監視の2種類がありますが、今回はMII監視で設定を行っています。
なお、IPアドレスはbond0が192.168.19.100、bond1が192.168.235.100です。

(1)/etc/modprobe.confに以下の行を追加します。
alias bond0 bonding
alias bond1 bonding

(2-1)/etc/sysconfig/network-scripts/ifcfg-eth0を以下のように設定します。
DEVICE=eth0
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
USERCTL=no
ONBOOT=yes
HWADDR=00:0C:29:5D:D3:40

(2-2)/etc/sysconfig/network-scripts/ifcfg-eth1を以下のように設定します。
DEVICE=eth1
MASTER=bond1
SLAVE=yes
BOOTPROTO=none
USERCTL=no
ONBOOT=yes
HWADDR=00:0C:29:5D:D3:4A

(2-3)/etc/sysconfig/network-scripts/ifcfg-eth02を以下のように設定します。
DEVICE=eth2
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
USERCTL=no
ONBOOT=yes
HWADDR=00:0C:29:5D:D3:54

(2-4)/etc/sysconfig/network-scripts/ifcfg-eth3を以下のように設定します。
DEVICE=eth3
MASTER=bond1
SLAVE=yes
BOOTPROTO=none
USERCTL=no
ONBOOT=yes
HWADDR=00:0C:29:5D:D3:5E

(3-1)/etc/sysconfig/network-scripts/ifcfg-bond0を以下のように設定します。
DEVICE=bond0
IPADDR=192.168.19.100
NETMASK=255.255.255.0
NETWORK=192.168.19.0
BROADCAST=192.168.19.255
BOOTPROTO=none
USERCTL=no
ONBOOT=yes
BONDING_OPTS="mode=active-backup miimon=100 updelay=5000 primary=eth0"

(3-2)/etc/sysconfig/network-scripts/ifcfg-bond1を以下のように設定します。
DEVICE=bond1
IPADDR=192.168.235.100
NETMASK=255.255.255.0
NETWORK=192.168.235.0
BROADCAST=192.168.235.255
BOOTPROTO=none
USERCTL=no
ONBOOT=yes
BONDING_OPTS="mode=active-backup miimon=100 updelay=5000 primary=eth1"


◇動作確認◇
以上のコンフィグファイル修正・作成が完了したらサーバを再起動します。(再起動が必要なのは/etc/modprobe.confの反映のためで、/etc/sysconfig/network-scripts/ifcfg-*の反映はサービス/etc/init.d/networkの再起動で可能です。)

(1)ifconfigの確認
ifconfigコマンドでbond0とbond1が追加されていることを確認します。
bondingを構成する物理ポート両方と論理ポートのMACアドレスがすべて同じもの(それぞれeth0とeth1のもの)が設定されていることに注目してください。
# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:40
inet addr:192.168.19.100 Bcast:192.168.19.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5d:d340/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:54 errors:0 dropped:0 overruns:0 frame:0
TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5299 (5.1 KiB) TX bytes:2131 (2.0 KiB)

bond1 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:4A
inet addr:192.168.235.100 Bcast:192.168.235.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5d:d34a/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:111 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10599 (10.3 KiB) TX bytes:9652 (9.4 KiB)

eth0 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:40
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:30 errors:0 dropped:0 overruns:0 frame:0
TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3283 (3.2 KiB) TX bytes:2131 (2.0 KiB)
Interrupt:177 Base address:0x1400

eth1 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:4A
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:96 errors:0 dropped:0 overruns:0 frame:0
TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9123 (8.9 KiB) TX bytes:12254 (11.9 KiB)
Interrupt:185 Base address:0x1480

eth2 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:40
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:24 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2016 (1.9 KiB) TX bytes:0 (0.0 b)
Interrupt:193 Base address:0x1800

eth3 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:4A
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:24 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2016 (1.9 KiB) TX bytes:0 (0.0 b)
Interrupt:169 Base address:0x1880

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

(2)/proc/net/bonding/bondxの確認
/proc/net/bonding/bondxを参照することでbondingの状態を確認することができます。
今回の設定はbondingのモードをactice-backup(稼動系-待機系)に設定しています。bond0では正常時にはプライマリポートのeth0がカレントになっていることを確認します。
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

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

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:29:5d:d3:40

Slave Interface: eth2
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:29:5d:d3:54

(3)切り替え評価(稼動系ダウン)
稼動系がダウンしたときに待機系に切り替わることを確認します。bond0ではeth0に対応するケーブルを抜いた後、カレントがeth2に移動していることを確認します。またeth0のステータスがdownに変わっていることも確認します。
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

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

Slave Interface: eth0
MII Status: down
Link Failure Count: 1
Permanent HW addr: 00:0c:29:5d:d3:40

Slave Interface: eth2
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:29:5d:d3:54

ifconfigコマンドからもeth0がダウンしていることを確認することができます。(ステータスがSLAVE)。またbond0とeth2のMACアドレスがeth0のもののままであることに注目してください。MACアドレスが引き継がれています。
# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:40
inet addr:192.168.19.100 Bcast:192.168.19.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5d:d340/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:151 errors:0 dropped:0 overruns:0 frame:0
TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:17596 (17.1 KiB) TX bytes:2173 (2.1 KiB)

bond1 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:4A
inet addr:192.168.235.100 Bcast:192.168.235.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5d:d34a/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:490 errors:0 dropped:0 overruns:0 frame:0
TX packets:361 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:46743 (45.6 KiB) TX bytes:41422 (40.4 KiB)

eth0 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:40
UP BROADCAST SLAVE MULTICAST MTU:1500 Metric:1
RX packets:78 errors:0 dropped:0 overruns:0 frame:0
TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9304 (9.0 KiB) TX bytes:2131 (2.0 KiB)
Interrupt:177 Base address:0x1400

eth1 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:4A
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:425 errors:0 dropped:0 overruns:0 frame:0
TX packets:378 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:38931 (38.0 KiB) TX bytes:44024 (42.9 KiB)
Interrupt:185 Base address:0x1480

eth2 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:40
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:73 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8292 (8.0 KiB) TX bytes:42 (42.0 b)
Interrupt:193 Base address:0x1800

eth3 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:4A
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:73 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8292 (8.0 KiB) TX bytes:0 (0.0 b)
Interrupt:169 Base address:0x1880

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

(4)切り替え評価(復旧)
復旧時の動作を確認します。先ほど抜線したeth0を挿しなおします。
今回の設定ではプライマリポートをeth0に設定しているので復旧すると自動でフェイルバックします。
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

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

Slave Interface: eth0
MII Status: up
Link Failure Count: 1
Permanent HW addr: 00:0c:29:5d:d3:40

Slave Interface: eth2
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:29:5d:d3:54

ifconfigからもeth0のステータスがRUNNINGに戻っていることを確認します。
# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:40
inet addr:192.168.19.100 Bcast:192.168.19.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5d:d340/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:168 errors:0 dropped:0 overruns:0 frame:0
TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:19663 (19.2 KiB) TX bytes:2215 (2.1 KiB)

bond1 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:4A
inet addr:192.168.235.100 Bcast:192.168.235.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5d:d34a/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:616 errors:0 dropped:0 overruns:0 frame:0
TX packets:483 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:57869 (56.5 KiB) TX bytes:56870 (55.5 KiB)

eth0 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:40
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:78 errors:0 dropped:0 overruns:0 frame:0
TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9304 (9.0 KiB) TX bytes:2173 (2.1 KiB)
Interrupt:177 Base address:0x1400

eth1 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:4A
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:535 errors:0 dropped:0 overruns:0 frame:0
TX packets:500 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:48050 (46.9 KiB) TX bytes:59488 (58.0 KiB)
Interrupt:185 Base address:0x1480

eth2 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:40
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:90 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10359 (10.1 KiB) TX bytes:42 (42.0 b)
Interrupt:193 Base address:0x1800

eth3 Link encap:Ethernet HWaddr 00:0C:29:5D:D3:4A
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:89 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10299 (10.0 KiB) TX bytes:0 (0.0 b)
Interrupt:169 Base address:0x1880

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)


◇旧設定の問題点◇
現在2つの問題を確認しています。
・複数のbondingを作成すると2つ目以降のprimary設定が反映されない
・複数のbondingをARP監視で作成すると2つ目以降のarp_ip_targetが1つ目のものと同じになる

(2010年01月08日訂正)⇒上記の問題は複数のbondingに別々の設定を行えない制限によるものです。
別々の設定を行いたい場合、RHEL4, CentOS4では「options bond0 -o bond0 mode=~」のように-oオプションを使うと可能なようですが、RHEL5, CentOS5ではこのオプションは使えません。
以下の例は間違った設定を行った場合の動作確認だと考えてください。


/etc/modprobe.confにoption設定を行います。
alias bond0 bonding
alias bond1 bonding
options bond0 mode=active-backup arp_interval=100 arp_ip_target=192.168.19.1 primary=eth0
options bond1 mode=active-backup arp_interval=100 arp_ip_target=192.168.235.1 primary=eth1

/etc/sysconfig/network-scripts/ifcfg-bond0を以下のように設定します。
DEVICE=bond0
IPADDR=192.168.19.100
NETMASK=255.255.255.0
NETWORK=192.168.19.0
BROADCAST=192.168.19.255
BOOTPROTO=none
USERCTL=no
ONBOOT=yes

/etc/sysconfig/network-scripts/ifcfg-bond1を以下のように設定します。
DEVICE=bond1
IPADDR=192.168.235.100
NETMASK=255.255.255.0
NETWORK=192.168.235.0
BROADCAST=192.168.235.255
BOOTPROTO=none
USERCTL=no
ONBOOT=yes

/etc/sysconfig/network-scripts/ifcfg-eth0 ~ ifcfg-eth3はそのままです。
設定変更後はサーバを再起動して変更を反映させます。

/proc/net/bonding/bond0と/proc/net/bonding/bond1を確認するとbond1は以下の問題があることがわかります。
・「Currently Active Slave: None」となっている
・「ARP IP target/s (n.n.n.n form): 192.168.19.1」となっている
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
ARP Polling Interval (ms): 100
ARP IP target/s (n.n.n.n form): 192.168.19.1

Slave Interface: eth0
MII Status: up
Link Failure Count: 10
Permanent HW addr: 00:0c:29:5d:d3:40

Slave Interface: eth2
MII Status: up
Link Failure Count: 92
Permanent HW addr: 00:0c:29:5d:d3:54

# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: None
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
ARP Polling Interval (ms): 100
ARP IP target/s (n.n.n.n form): 192.168.19.1

Slave Interface: eth1
MII Status: up
Link Failure Count: 61
Permanent HW addr: 00:0c:29:5d:d3:4a

Slave Interface: eth3
MII Status: down
Link Failure Count: 60
Permanent HW addr: 00:0c:29:5d:d3:5e


他にもいくつか問題があるかも知れませんが、古い設定は推奨されていないだけではなく、動作上も問題があることがわかります。

BONDING_OPTSのパラメータやbondingのモード、監視方法についてはまた別のタイミングで更新します。