Linux システムでのイーサネット チャネル ボンディング、別名 NIC チーミング
イーサネット チャネル ボンディングにより、2 つ以上のネットワーク インターフェイス カード (NIC) を 1 つの仮想 NIC カードに接続できるようになり、増加する可能性があります。帯域幅を確保し、NIC カードの冗長性を提供します。これは、運用システムで冗長リンク、フォールト トレランス、または負荷分散ネットワークを実現するための優れた方法です。 1 つの物理NICがダウンしているか接続されていない場合、リソースは自動的に他のNICカードに移動されます。 チャネル/NICボンディングは、カーネルのボンディングドライバーの助けを借りて機能します。 2 つのNICを使用して同じことを説明します。
ほぼ6 種類のチャネルボンドが用意されています。ここでは、人気があり広く使用されている 2 種類のチャネル ボンドのみをレビューします。
- 0: 負荷分散 (ラウンドロビン) : トラフィックは両方の NIC から順次またはラウンドロビン方式で送信されます。このモードは、負荷分散とフォールト トレランスを提供します。
- 1: アクティブ - バックアップ : 特定の時点でアクティブになるスレーブ NIC は 1 つだけです。他のインターフェイス カードは、アクティブなスレーブ NIC に障害が発生した場合にのみアクティブになります。
イーサネットチャネルボンディングの作成
2 つのネットワーク イーサネット カード、つまりeth1とeth2があり、ボンディング目的でbond0が作成されます。以下のコマンドを実行するにはスーパーユーザー権限が必要です。
ロードバランシング (ラウンドロビン)
eth1を構成する
以下に示すように、パラメータ MASTER の bond0 および eth1 インターフェイスを設定ファイルのSLAVE として指定します。
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
MASTER=bond0
SLAVE=yes
eth2を構成する
ここでも、パラメータ MASTER のbond0 とSLAVE としてのeth2 インターフェイスを指定します。
vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE="eth2"
TYPE="Ethernet"
ONBOOT="yes"
USERCTL=no
#NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
Bond0 構成の作成
bond0 を作成し、「/etc/sysconfig/network-scripts/」ディレクトリに ifcfg-bond0 という名前のチャネル ボンディング インターフェイスを構成します。
以下は、チャネル ボンディング設定ファイルのサンプルです。
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=0 miimon=100"
注: 上記の設定では、ボンディング オプションmode=0、つまりラウンドロビンとmiimon=100を選択しました。 (ポーリング間隔は 100 ミリ秒)。
ifconfig コマンドを使用して作成されたインターフェイスを見てみましょう。このコマンドでは、「bond0」がマスターとして実行されており、インターフェイス「eth1」と「eth2>」の両方が表示されています。」 は奴隷として実行されます。
ifconfig
bond0 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 restart
Shutting 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 には 1 つの変更のみがあり、「0」ではなく「1」になります。これは次のようになります。 。
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=1 miimon=100"
ネットワークサービスを再起動し、ボンディングの状態を確認します。
service network restart
Shutting 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
それでおしまい!