Linux では、イーサチャネル ボンディングを使用して、2 つ以上の物理ネットワーク インターフェイス (NIC) を組み合わせて仮想インターフェイスを作成できます。
IP アドレスは、この仮想インターフェイスで構成されます。基礎となる物理アダプターの 1 つがダウンした場合、もう一方の物理アダプターが通信トラフィックの処理に使用されます。
以下は、さまざまなタイプのイーサチャネル ボンディング モードです。
- モード 0 – ラウンド ロビン (RR) ポリシー:パケット送信は順番に行われます。たとえば、最初のパケットはインターフェイスを使用して送信され、2 番目のパケットは次のインターフェイスを介して送信されます。このモードは、負荷分散とフォールト トレランスを提供します。
- モード 1 – アクティブ バックアップ ポリシー:パケット送信はアクティブ インターフェースを介してのみ行われ、トラフィックはアクティブ インターフェースがダウンした場合にのみバックアップ インターフェースを介してルーティングされます。
- モード 2 – XOR ポリシー:このモードは、アクティブなポート間で送信トラフィックのバランスをとります。このモードでは、各宛先 MAC アドレスの送信に同じスレーブが使用されます。これにより、負荷分散とフォールト トレランスが提供されます。
- モード 3 – ブロードキャスト ポリシー:すべてのスレーブ インターフェイスですべてを送信します。このモードはフォールト トレランスを提供します。
- モード 4 ( 802.3ad ):このモードは、同じ速度とデュプレックス設定を共有するリンク アグリゲーション グループを作成するために使用されます。
- モード 5( balance-tlb ):アダプティブ送信ロード バランシング。発信トラフィックは、各スレーブの現在の負荷に基づいて分散されます。着信トラフィックは現在のスレーブによって受信されます。現在のスレーブに障害が発生した場合、別のスレーブが MAC アドレスに基づいて着信トラフィックを引き継ぎます。
- モード 6( balance-alb ):アダプティブ ロード バランシング。この場合、着信トラフィックは、すべてのスレーブ間で負荷分散を使用するように処理されます。受信負荷分散は、ARP ネゴシエーションを通じて行われます。
Redhat または CentOS でボンディングを構成する
1. ifcfg-bond0 ファイルを作成
すべてのネットワーク構成スクリプトは、RHEL の /etc/sysconfig/network-scripts の下にあります。コマンド「ethtool」を使用して、インターフェイスのリンク ステータスを確認します
以下の値でファイル ifcfg-bond0 を作成し、以下のように正しい IP、NETMASK、および適切な結合モード (モード 0、1、2 …) に置き換えます。
# cd /etc/sysconfig/network-scripts # vi ifcfg-bond0 DEVICE=bond0 IPADDR=19.86.101.120 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=none USERCTL=no BONDING_OPTS="mode=1 miimon=100"
2. ifcfg-eth0 および ifcfg-eth1 ファイルの変更
eth0 と eth1 のネットワーク インターフェイス ファイルを編集して、次のようなエントリを反映させます。以下に示すように、MASTER および SLAVE パラメータが定義されていることを確認してください。
# cat ifcfg-eth0 DEVICE=eth0 HWADDR=00:50:56:8E:0C:10 MASTER=bond0 SLAVE=yes ONBOOT=yes USERCTL=no BOOTPROTO=none # cat ifcfg-eth1 DEVICE=eth1 HWADDR=00:50:56:8E:0C:2A MASTER=bond0 SLAVE=yes ONBOOT=yes USERCTL=no BOOTPROTO=none
3. bond.conf ファイルを作成
次の内容でbonding.confファイルを作成します。
# vi /etc/modprobe.d/bonding.conf alias netdev-bond0 bonding
4.ネットワーク サービスを再起動してボンディングを確認する
ネットワーク サービスを再起動します:
service network restart
以下に示すように、結合ステータスを確認します。
以下は、現在の結合モードが耐障害性であることを示しています。
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:50:56:8e:0c:10 Slave queue ID: 0 Slave Interface: eth1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:50:56:8e:0c:2a Slave queue ID: 0
1 つのインターフェースをダウンさせてテストを実行し、他のインターフェースがアクティブになることを確認し、その逆も可能です。
SuSE Linux でのボンディングの構成
最新バージョンの SuSE でボンディングを構成するには、YaST を使用するか、以下に示すようにシステム ファイルを変更します。
次のコマンドを使用して、アクティブなインターフェースを確認してください:
ethtool eth0 | egrep "Speed|Duplex|Link"
速度、デュプレックス、およびリンクのステータスが不明な場合は、インターフェイスがダウン ステータスになっている可能性があります。 「ifconfig up」を使用してインターフェイスを起動してみてください。それでもリンクが表示されない場合は、インターフェイスがスイッチに接続されていません。
1. ifcfg-bond0 ファイルを作成
コンソールを使用してマシンにログインします。 /etc/sysconfig/network の下に ifcfg-bond0 を作成し、使用できる IP アドレスとスレーブ インターフェイスを定義します。
次の例では、結合にアクティブ バックアップ モードを使用しています。これは、アクティブ インターフェイスのみが通信トラフィックを処理し、バックアップ インターフェイスが機能し始める障害を処理することを意味します。
# cd /etc/sysconfig/network # cat ifcfg-bond0 BONDING_MASTER=yes BONDING_MODULE_OPTS='mode=active-backup miimon=100' BONDING_SLAVE0='eth0' BONDING_SLAVE1='eth1' BOOTPROTO='static' IPADDR='192.168.1.85/24' BROADCAST='' STARTMODE='auto'
2. ifcfg-eth0 および ifcfg-eth1 ファイルの変更
スレーブ インターフェイスを変更して、IP アドレス、ネットマスクを持たないようにします。出力は次のようになります:
# cat ifcfg-eth0 DEVICE='eth0' BOOTPROTO='none' STARTMODE='onboot' NAME='82545EM Gigabit Ethernet Controller (Copper)' # cat ifcfg-eth1 DEVICE='eth1' BOOTPROTO='none' STARTMODE='onboot' NAME='82545EM Gigabit Ethernet Controller (Copper)'
3. modprobe.conf ファイルの編集
ファイル /etc/modprobe.conf を編集し、以下の 2 行を追加して、ボンディング ドライバーとオプションを含めます。
alias bond0 bonding options bond0 miimon=100 mode=1
注:/etc/sysconfig/network/ifcfg-bond0 ファイルに既に含まれている場合は、オプションを無視することを選択できます。
4.ネットワーク サービスを再起動してボンディングを確認する
ボンディングを設定したら、ネットワーク サービスを再起動します。
rcnetwork restart
ボンディング インターフェイスがアップしていて、IP が適切に構成されていることを確認します。また、IP アドレスを使用してサーバーに接続できることも確認してください。
# ifconfig bond0 bond0 Link encap:Ethernet HWaddr 00:50:56:8E:00:26 inet addr:192.168.1.85 Bcast:192.168.1.1 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:28420409 errors:0 dropped:0 overruns:0 frame:0 TX packets:151985 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2362560309 (2253.1 Mb) TX bytes:17330542 (16.5 Mb)
結合インターフェースが正しく機能することをテストするには、コンソールにログインし、「ifconfig eth0 down」を使用してアクティブなインターフェースを停止します。同じ IP またはホスト名を使用してマシンにログインできることを確認します。以下のファイルでアクティブなインターフェースのステータスを確認できます。
以下に示すように、eth0 はダウンしていますが、マシンへのネットワーク接続はまだ失われておらず、ボンディングをセットアップしており、eth1 インターフェイスはまだアップしています。
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008) 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: eth0 MII Status: down Link Failure Count: 1 Permanent HW addr: 00:50:56:8e:00:26 Slave Interface: eth1 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:50:56:8e:7e:20