harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

RedHatEnterprise3.0​/bonding(結合インターフェース)

   


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になる。

  1. eth0のLANケーブル引抜き
    eth1がアクティブになる
  2. eth0のLANケーブル差込み
    アクティブがeth1からeth0に戻る
  3. eth1のLANケーブル引抜き
    アクティブeth0のまま
  4. eth1のLANケーブル差込み
    アクティブeth0のまま

  1. 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.
  2. 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.
  3. 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
  4. 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-bond0

    192.168.10.0/24 via 192.168.0.1

    設定したら/etc/init.d/networkをrestart。

[注意]
bondingに対するルーティングを指定した場合、
スレーブに指定されている各IFへの個別のルーティング設定は無効になる。

参考2:複数のbondingの設定方法

複数のbondingインターフェースを設定する場合のコンフィグ
設定方法は2通り。ともに/etc/modules.confで追加指定する。

  1. 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 
  2. オプションに直接記述
    それぞれの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

 - CentOS, GNU/Linux, network ,