bondingの設定(with bridged network)

Debianでのbonding設定メモです。
bondingとは、複数のNICを一つのデバイスとして管理することで、NIC冗長化・負荷分散ができます。
一方のケーブルが断線したり、対向スイッチのポートが壊れたりしても大丈夫なわけです。
teamingと言われることもあるみたいです。

ifenslaveパッケージのインストール

$ sudo aptitude install ifenslave

bondingモジュールの設定

/etc/modprobe.d/bondingに、bondingモジュールのパラメータを設定します。

#/etc/modprobe.d/bonding

alias bond0 bonding
options bonding mode=0 miimon=100

bondingポリシーは、mode=0を設定しています。
主なmodeは、以下の通り。

  • 0 ―> 耐障害性と負荷バランシングに対するラウンド ロビン ポリシーを設定します。ボンディングされたスレーブインタフェースは使用できるものから順に、送受信を順次行ないます。
  • 1 -> 耐障害性に対するアクティブ バックアップ ポリシーを設定します。最初に使用できるボンディングされたスレーブインタフェースによって送受信が行なわれます。ボンディングされた他のスレーブインタフェースはアクティブなスレーブインタフェースが失敗した場合のみ使用されます。

miimonは、MIIリンク監視の実行頻度を指定します。
その他、bondingパラメータの詳細については、こちらを参照ください。

bondingモジュールのロード設定

bondingモジュールをロードします。

$ sudo modprobe bonding
$ lsmod | grep bonding
bonding                83680  0 

ロードに成功したら、OS起動時に自動ロードされるように/etc/modulesに設定します。

#/etc/modules

bonding

bondingインタフェースの設定

/etc/network/interfaceにbondingインタフェースを設定します。
今回は、bondingインタフェースをbond0とし、DHCPを使用しました。

#/etc/network/interface

# The primary network interface
iface eth0 inet manual

# The secondary network interface
iface eth1 inet manual

# The bonding interface
auto bond0
iface bond0 inet dhcp
slaves eth0 eth1

networkingのリスタートもしくは、OS再起動でbondingが有効になります。
ifconfigを実行し、以下の状態になっていればbonding設定完了です。

ファイルダウンロード中に一方のケーブルを抜くなどして、動作を確認してください。

bondingインタフェースをブリッジネットワークに設定*1

私の環境では、KVMで仮想化環境を構築しているため、ブリッジネットワークを使用しています。
詳しい環境は、こちらを参照ください。
ということで、ブリッジネットワークを設定しました。

#/etc/network/interface

# The primary network interface
iface eth0 inet manual

# The secondary network interface
iface eth1 inet manual

# The bonding interface
auto bond0
iface bond0 inet manual
slaves eth0 eth1

# The bridge network interface
auto br0
iface br0 inet dhcp
bridge_ports bond0 
bridge_stp off
bridge_maxwait 5

*1:bondingのみ場合は、設定不要です。