Last Updated on 2013年7月30日 by かんりにん
bonding(結合インターフェース)
結合インターフェースbondingの設定方法。
参考URL
お世話になっております。
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.4/networking/bonding.txt.html
設定
環境としては以下のような感じを想定して話を進めます。
- ネットワーク 192.168.0.0/24
- ゲートウェイ 192.168.0.1
- ホスト
- モジュール1 bond0
-
IPアドレス 192.168.0.2 スレーブIF slave1 eth0 slave2 eth1
- モジュール2 bond1
-
IPアドレス 192.168.0.3 スレーブIF slave1 eth2 slave2 eth3
1.bondingモジュールのロード設定
通常のbonding設定の例。
デフォルトでは存在しないファイルもあるので、都度touchする。
- /etc/modules.conf
# cd /etc/ # vi modulues.conf
追記箇所
bondingモジュールのエイリアスを追加する。alias bond0 bonding options mode=1 miimon=100 primary=eth0
上記で指定されているパラメータについては以下のとおり。
- mode
- bondingのモード指定。1の場合はアクティブ/スタンバイ方式。
ほかにもラウンドロビンなども指定可能。 - miimon
- リンク監視パラメータ。スレーブIFの疎通を監視する。
0で監視無効(デフォルトは0)。
単位はミリ秒で、推奨は100ms(miimon=100)。 - primary
- スレーブIFが両方アップしている場合にプライマリとするIFの指定。
未指定OKだが、片方が障害となりスタンバイへのフェイルオーバーが発生した際、
障害発生IFが復旧した後もスタンバイから切り替わらないので、
どちらがアクティブになっているかは注意が必要(下記"ステータスを確認"を参照)。 - 【注意点】モジュールパラメータ
- スレーブとなるIFのリンク監視のパラメータの指定。
miimonパラメータか、またはarp_interval/arp_ip_targetパラメータのどちらかを
かならず指定すること。
デフォルト設定では0となっているが、0のままだとリンク監視が行われず
bondingが有効にならない。
指定可能なオプションパラメータはこのほかにも多数ある。modeもいろいろ選択できるので
上記URLを参照のこと。
2.各IFのコンフィグ
/etc/sysconfig/network-scripts/以下の各ファイルを編集。
- ifcfg-bond0
- 本来ifcfg-eth0などのファイルに設定されるパラメータを
こちらに設定する。# touch ifcfg-bond0 # vi ifcfg-bond0
編集内容
DEVICE=bond1 BOOTPROTO=none BROADCAST=192.168.0.255 IPADDR=192.168.0.2 NETMASK=255.255.255.0 NETWORK=192.168.0.0 GATEWAY=192.168.0.1 ONBOOT=yes
- ifcfg-eth0
- 編集内容
DEVICE=eth0 ONBOOT=yes MASTER=bond1 SLAVE=yes BOOTPROTO=none
- ifcfg-eth1
- 編集内容
DEVICE=eth1 ONBOOT=yes MASTER=bond1 SLAVE=yes BOOTPROTO=none
3.設定の適用
bondingの設定を変更した場合、モジュールをロードした後に有効になるため
新規追加・設定変更を行った場合は/etc/init.d/networkのrestartではダメ。
デーモンを停止してbondingモジュールを一旦アンロードする必要がある。
- 例:モジュールbonding0の設定を適用する場合
# /etc/init.d/network stop # rmmod bonding0 ←ここでbondingモジュールをアンロード # /etc/init.d/network start
4.動作テスト
ログで確認。
※/var/log/messagesからログ抜粋
以下の手順でLANケーブルの抜き差しを行い、ping疎通とアクティブの状態を確認。
スレーブがeth0、eth1ともにアップしている場合、アクティブは常時eth0になる。
- eth0のLANケーブル引抜き
eth1がアクティブになる - eth0のLANケーブル差込み
アクティブがeth1からeth0に戻る - eth1のLANケーブル引抜き
アクティブeth0のまま - eth1のLANケーブル差込み
アクティブeth0のまま
- eth0リンクダウン→eth1アクティブ
Mar 8 18:16:40 testhosts kernel: e1000: eth0: e1000_watchdog: NIC Link is Down Mar 8 18:16:40 testhosts kernel: bonding: bond0 link status definitely down for interface eth0, disab ling it Mar 8 18:16:40 testhosts kernel: bonding: bond0: making interface eth1 the new active one.
- eth0リンクアップ→アクティブIF切り替え(アクティブがeth1からeth0へ戻る)
Mar 8 18:16:47 testhosts kernel: e1000: eth0: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex Mar 8 18:16:47 testhosts kernel: bonding: bond0: link status definitely up for interface eth0. Mar 8 18:16:47 testhosts kernel: bonding: bond0: making interface eth0 the new active one.
- eth1リンクダウン(アクティブはeth0のまま)
Mar 8 18:17:22 testhosts kernel: e100: eth1: e100_watchdog: link down Mar 8 18:17:22 testhosts kernel: bonding: bond0: link status definitely down for interface eth1, disabling it
- eth1リンクアップ(アクティブはeth0のまま)
Mar 8 18:17:32 testhosts kernel: e100: eth1: e100_watchdog: link up, 100Mbps, full-duplex Mar 8 18:17:32 testhosts kernel: bonding: bond0: link status definitely up for interface eth1.
ステータスを確認
/proc/net/bonding/bond*でステータスを確認できる。
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v*.* (honyarara, 2004) Bonding Mode: fault-tolerance (active-backup) Primary Slave: eth0 ←設定上のアクティブスレーブ Currently Active Slave: eth0 ←現在のアクティブスレーブ MII Status: up ←MIIのステータス MII Polling Interval (ms): 100 ←MIIの監視間隔 Up Delay (ms): 0 ←リンク復旧を検知後、IFを有効にするまでの遅延時間(ここでは未設定) Down Delay (ms): 0 ←リンク失敗を検知後、IFを無効にするまでの遅延時間(ここでは未設定) Slave Interface: eth0 MII Status: up Link Failure Count: 2 ←リンクダウンが発生した回数(累積) Permanent HW addr: 00:**:**:**:**:** Slave Interface: eth2 MII Status: up Link Failure Count: 1 ←リンクダウンが発生した回数 Permanent HW addr: 00:**:**:**:**:**
各ステータスはnetworkデーモンを再起動するとリセットされる。
Tip
参考1:bondingに対するルーティング
RHEL3.0の場合(というかRHL8以降)、/etc/sysconfig/network-scripts/に
route-<IF名>で指定する。
通常のIFの場合はroute-eth0などだが、bondingの場合は
route-bond0などになる。
route-<IF名>ファイルはデフォルトでは用意されていないので
touchして作成し、適宜編集。
- 書式例
192.168.0.0/24のNWから192.168.10.0/24へのルーティング(gwは192.168.0.1)
route-bond0192.168.10.0/24 via 192.168.0.1
設定したら/etc/init.d/networkをrestart。
[注意]
bondingに対するルーティングを指定した場合、
スレーブに指定されている各IFへの個別のルーティング設定は無効になる。
参考2:複数のbondingの設定方法
複数のbondingインターフェースを設定する場合のコンフィグ
設定方法は2通り。ともに/etc/modules.confで追加指定する。
- max_bondsパラメータ
パラメータで指定した数の分のインターフェースを作成可能。
但し全てのインターフェースで共通のオプションとなる。
[書式例]
optionsでまとめて指定- arp_intervalの場合
alias bond0 bonding alias bond1 bonding options bonding max_bonds=3 mode=1 arp_interval=100
- miimonの場合
alias bond0 bonding alias bond1 bonding options bonding max_bonds=3 mode=1 miimon=100
- arp_intervalの場合
- オプションに直接記述
それぞれのbondigインターフェースごとにオプションを変更したい場合は
optionsでbondingを指定して、それぞれオプションを設定する。-o bonding*(モジュールの指定)
[書式例]
bond0、bond1でそれぞれオプションを指定alias bond0 bonding alias bond1 bonding options bond0 -o bonding0 mode=1 miimon=100 primary=eth0 options bond1 -o bonding1 mode=1 miimon=100 primary=eth2
- 記事引用
複数の結合インターフェース(bondingインターフェース)の設定
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.4/networking/bonding.txt.html================================ いくつかの結合インターフェースが必要な場合、max_bonds パラメータ (上記で説明) を指定するか、デバイスドライバを複数回ロードして下さい。max_bonds パラメータ を使用する事により、若干複雑ではなくなりますが、用意された全ての結合インター フェースが同じオプションを持つという制限があります。ドライバの複数回ロードは、 ドライバの各インスタンスに別のオプションを設定できます。 例えば、2つの結合インターフェースを設定する際、片方は MII リンク監視を 100 ミリ秒単位で実行して、もう片方は ARP リンク監視を 200ミリ秒単位で実行する場 合、/etc/modules.conf は下記のような形になります。 alias bond0 bonding alias bond1 bonding options bond0 miimon=100 options bond1 -o bonding1 arp_interval=200 arp_ip_target=10.0.0.1