構築方法

Linuxdocument http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.4/networking/bonding.txt.html

簡易手順(RedHat? EL4)

/etc/modprobe.confの編集以下の二行を追加

alias bond0 bonding
options bond0 mode=0 miimon=100

※optionsなどの意味は上記ドキュメントを参照

モジュール読み込み

# modprobe bond0 bonding
# depmod -a

※lsmodで正常にロードできたか確認できます

  • /etc/sysconfig/network-scripts/にあるファイルの編集(eth0とeth1をteamingする場合)
# cd /etc/sysconfig/network-scripts/
# vi ifcfg-bond0

DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.xxx.xxx.xxx
NETMASK=255.255.0.0
NETWORK=10.xxx.0.0
BROADCAST=10.xxx.255.255
USERCTL=no

# vi ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

# vi ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
  • インターフェースの再起動
# /etc/init.d/network restart
ループバックインターフェースを終了中                       [  OK  ]
ネットワークパラメーターを設定中:                          [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース bond0 を活性化中:                         [  OK  ]
  • インターフェス確認
# ifconfig -a
bond0     Link encap:Ethernet  HWaddr 00:19:BB:21:AB:1E
          inet addr:10.xxx.xxx.xxx  Bcast:10.xxx.255.255  Mask:255.255.0.0
          inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:636 errors:0 dropped:0 overruns:0 frame:0
          TX packets:83 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:56419 (55.0 KiB)  TX bytes:13609 (13.2 KiB)

eth0      Link encap:Ethernet  HWaddr 00:19:BB:21:AB:1E
          inet6 addr: fe80::219:bbff:fe21:ab1e/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:316 errors:0 dropped:0 overruns:0 frame:0
          TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:28172 (27.5 KiB)  TX bytes:7675 (7.4 KiB)
          Interrupt:209

eth1      Link encap:Ethernet  HWaddr 00:19:BB:21:AB:1E
          inet6 addr: fe80::219:bbff:fe21:ab1e/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:320 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:28247 (27.5 KiB)  TX bytes:5934 (5.7 KiB)
          Interrupt:217

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:11 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2288 (2.2 KiB)  TX bytes:2288 (2.2 KiB)

sit0      Link encap:IPv6-in-IPv4
          NOARP  MTU:1480  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)
  • 動作確認
eth0,eth1両方につながっているケーブルをそれぞれ片方抜いてみる
eth1を抜く→OK
eth0を抜く→通信不可(Why?)
  • /proc/net/bonding/bond0ファイルの確認
# more /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v2.6.3 (June 8, 2005)

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

Slave Interface: eth0
MII Status: up
Link Failure Count: 1
Permanent HW addr: 00:19:bb:21:ab:1e

Slave Interface: eth1
MII Status: up
Link Failure Count: 1
Permanent HW addr: 00:19:bb:21:ab:1d

こちらはちゃんとリンクダウンを認識している模様
ifconfigでパケット増加量を見てもちゃんとラウンドロビンしているように思える

  • システム再起動

原因がわからないためシステム再起動。すると正常にfailoverするようになる。

注意点

  • /etc/modules.confと/etc/modprobe.conf

kernel2.4ではロードするモジュールを/etc/modules.confに記述するが、kernel2.6で/etc/modprobe.confに記述する

  • SLAVEインターフェースのinetaddr

ifconfigコマンドを実行した際、SLAVEインターフェースにはinetaddrが表示されない。これで正常。

(2010/02/03追記)起動スクリプトを使用しないbonding

起動スクリプトを見ていくとわかるのだが、bonding自体は/sys/class/net/内の
ファイル操作のみである(/sbin/ifupなどで利用されている/etc/sysconfig/network-scripts/network-functionsに記されている(fedora系))。
※スタティックにモジュールを組み込むとこの方法は利用できない。
 (スタティックに組み込んでbondingを利用する方法を知らない)

bondingインターフェースの追加

bondingカーネルモジュールをインストールすると/sys/class/net/の下にbond0という
ディレクトリが作成されている。

# cd /sys/class/net
# ls
bond0            eth1             eth4             eth7
bonding_masters  eth2             eth5             lo
eth0             eth3             eth6

bonding_mastersというファイルの中を確認すると

# cat bonding_masters
bond0

となっており、現在はbond0のみがbondingインターフェースとして認識されている

以下のようにしてbondingインターフェースを追加する

# echo "+bond1" > bonding_masters

すると、/sys/class/netの下にbond1というディレクトリが作成される

# ls
bond0            eth0             eth3             eth6
bond1            eth1             eth4             eth7
bonding_masters  eth2             eth5             lo

これでbond1というインターフェースが作成された。
bonding_mastersの中を確認すると

# cat bonding_masters
bond0 bond1

となっている。
※bonding_mastersはエディタで編集できない。echoコマンドで編集する。削除の場合はインターフェースの指定に"-bond1"などと指定する。
bond1インターフェースを削除する場合 echo "-bond1" > /sys/class/net/bonding_masters

bondingのslaveインターフェースの追加

bondingインターフェースのメンバを追加する。
追加したいbondingインターフェースのディレクトリに移動する。

# cd /sys/class/net/bond0
# ls
addr_len      carrier       flags         mtu           slave_eth1    tx_queue_len
address       dev_id        ifindex       operstate     slave_eth3    type
bonding       dormant       iflink        power         statistics    uevent
broadcast     features      link_mode     slave_eth0    subsystem

bondingというディレクトリの中にslavesというファイルがあるので中を確認してみる。

# cat bonding/slaves
eth0 eth1

以下のようにしてメンバーインターフェースを追加する

# echo "+eth2" > bonding/slaves

bonding/slavesを確認すると

# cat bonding/slaves
eth0 eth1 eth2

となり、追加されていることがわかる。あわせて/proc/net/bonding/bond0も確認する。


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-08-16 (木) 14:40:31 (2505d)