Linuxシステムにおけるイーサネットチャネルボンディング(NICチーミング)
イーサネットチャネルボンディングは、2つ以上のネットワークインターフェイスカード(NIC)を1つの仮想NICカードに統合することを可能にし、帯域幅を増加させ、NICカードの冗長性を提供します。これは、冗長リンク、フォールトトレランス、または負荷分散ネットワークを生産システムで達成するための素晴らしい方法です。1つの物理的なNICがダウンしたりプラグを抜かれたりした場合、リソースは自動的に他のNICカードに移動します。チャネル/NICボンディングは、カーネル内のボンディングドライバの助けを借りて機能します。これをデモンストレーションするために2つのNICを使用します。
利用可能なチャネルボンドの種類はほぼ6つです。ここでは、人気があり広く使用されている2種類のチャネルボンドのみをレビューします。
- 0: 負荷分散 (ラウンドロビン) : トラフィックは両方のNICから順番またはラウンドロビン方式で送信されます。このモードは負荷分散とフェールトレラントを提供します。
- 1: アクティブバックアップ : ある時点において、1つのスレーブNICのみがアクティブです。他のインターフェースカードは、アクティブなスレーブNICが失敗した場合にのみアクティブになります。
Ethernetチャネルボンディングの作成
私たちは二つのネットワークイーサネットカード、すなわちeth1とeth2を持っており、ここでbond0がバンディング目的で作成されます。以下のコマンドを実行するにはスーパーユーザの特権が必要です。
ロードバランシング(ラウンドロビン)
eth1を設定する
設定ファイルにパラメータMASTER bond0およびeth1インターフェースをSLAVEとして以下のように記載してください。
# vi /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE="eth1"
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
MASTER=bond0
SLAVE=yeseth2を設定する
ここでも、パラメータ MASTER として bond0 と eth2 インターフェースを SLAVE と指定してください。
# vi /etc/sysconfig/network-scripts/ifcfg-eth2DEVICE="eth2"
TYPE="Ethernet"
ONBOOT="yes"
USERCTL=no
#NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yesbond0の設定を作成する
bond0を作成し、/etc/sysconfig/network-scripts/ディレクトリにifcfg-bond0という名前のチャンネルボンディングインターフェースを構成します。
以下はサンプルのチャネルバンディング構成ファイルです。
# vi /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=0 miimon=100"注意: 上記の構成では、ボンディングオプションmode=0すなわちラウンドロビンとmiimon=100(ポーリング間隔100 ms)を選択しています。
ifconfigコマンドを使用して作成されたインタフェースを見てみましょう。「bond0」がMASTERとして実行されており、両方のインタフェース「eth1」および「eth2」がSLAVESとして実行されています。
# ifconfigbond0 Link encap:Ethernet HWaddr 00:0C:29:57:61:8E
inet addr:192.168.246.130 Bcast:192.168.246.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe57:618e/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:17374 errors:0 dropped:0 overruns:0 frame:0
TX packets:16060 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1231555 (1.1 MiB) TX bytes:1622391 (1.5 MiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:57:61:8E
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:16989 errors:0 dropped:0 overruns:0 frame:0
TX packets:8072 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1196931 (1.1 MiB) TX bytes:819042 (799.8 KiB)
Interrupt:19 Base address:0x2000
eth2 Link encap:Ethernet HWaddr 00:0C:29:57:61:8E
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:385 errors:0 dropped:0 overruns:0 frame:0
TX packets:7989 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:34624 (33.8 KiB) TX bytes:803583 (784.7 KiB)
Interrupt:19 Base address:0x2080
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:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:480 (480.0 b) TX bytes:480 (480.0 b)ネットワークサービスとインターフェースを再起動すれば大丈夫です。
# service network restartShutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]債券の状況を確認しています。
# watch -n .1 cat /proc/net/bonding/bond0サンプル出力
以下の出力は、バンディングモードが負荷分散(RR)であり、eth1とeth2が表示されていることを示しています。
Every 0.1s: cat /proc/net/bonding/bond0 Thu Sep 12 14:08:47 2013
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0
Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0アクティブバックアップを作成する
このシナリオでは、スレーブインターフェースは同じままです。変更点は、ボンドインターフェースifcfg-bond0にだけあり、‘0‘の代わりに‘1‘が表示されます。
# vi /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=1 miimon=100"ネットワークサービスを再起動し、バンディングの状態を確認してください。
# service network restartShutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]
コマンドで債務の状況を確認しています。
# watch -n .1 cat /proc/net/bonding/bond0サンプル出力
バンディングモードは障害耐性(アクティブバックアップ)を示しており、スレーブインターフェースは稼働中です。
Every 0.1s: cat /proc/n... Thu Sep 12 14:40:37 2013
Ethernet Channel Bonding Driver: v3.6.0 (September 2
6, 2009)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0
Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0注: スレイブインターフェースを手動でダウンおよびアップして、チャネルボンディングの動作を確認してください。以下のコマンドを参照してください。
# ifconfig eth1 down
ifconfig eth1 upそれでおしまい!
