ネットワーク インターフェイス ボンディングは、ポート トランキング、チャネル ボンディング、リンク アグリゲーション、NIC チーミングなど、さまざまな名前で呼ばれています。複数のネットワーク接続を 1 つのチャネル ボンディング インターフェイスに結合または集約します。これにより、2 つ以上のネットワーク インターフェイスが 1 つとして機能し、スループットが向上し、冗長性またはフェイルオーバーが提供されます。
Linux カーネルには、複数の物理ネットワーク インターフェイスを単一の論理インターフェイスに集約するためのボンディング ドライバーが付属しています (たとえば、eth0 と eth1 を bond0 に集約します)。ボンディングされたインターフェースごとに、モードとリンク監視オプションを定義できます。次の表に示すように、7 つの異なるモード オプションがあり、それぞれが特定の負荷分散とフォールト トレランス特性を提供します。
結合モード
要件に応じて、結合モードを以下の 7 つのモードのいずれかに設定できます。
モード | ポリシー | 仕組み | 耐障害性 | 負荷分散 |
---|---|---|---|---|
0 | ラウンドロビン | パケットは、各インターフェイスを介して 1 つずつ順番に送受信されます。 | いいえ | はい |
1 | アクティブ バックアップ | 1 つの NIC がアクティブで、別の NIC がスリープ状態です。アクティブな NIC がダウンすると、別の NIC がアクティブになります。 x86 環境でのみサポートされます。 | はい | いいえ |
2 | XOR [排他的 OR] | このモードでは、スレーブ NIC の MAC アドレスが着信要求の MAC と照合され、この接続が確立されると、宛先 MAC の送受信に同じ NIC が使用されます。 | はい | はい |
3 | ブロードキャスト | すべての送信はすべてのスレーブで送信されます | はい | いいえ |
4 | 動的リンク集約 | 集約された NIC は 1 つの NIC として機能するため、スループットが向上しますが、NIC に障害が発生した場合はフェイルオーバーも提供されます。ダイナミック リンク アグリゲーションには、IEEE 802.3ad をサポートするスイッチが必要です。 | はい | はい |
5 | 送信負荷分散 (TLB) | 送信トラフィックは、各スレーブ インターフェイスの現在の負荷に応じて分散されます。着信トラフィックは現在のスレーブによって受信されます。受信スレーブが失敗した場合、別のスレーブが失敗したスレーブの MAC アドレスを引き継ぎます。 | はい | はい |
6 | アダプティブ ロード バランシング (ALB) | ダイナミック リンク アグリゲーションとは異なり、アダプティブ ロード バランシングには特定のスイッチ構成は必要ありません。アダプティブ ロード バランシングは、x86 環境でのみサポートされます。受信パケットは、ARP ネゴシエーションによって負荷分散されます。 | はい | はい |
ネットワーク結合リンクの監視
ボンディング ドライバーは、スレーブのリンク状態を監視する 2 つの方法をサポートしています。
- これはデフォルトで推奨されるリンク監視オプションです。
- ローカル ネットワーク インターフェースのキャリア状態を監視します。
- 監視頻度と遅延を指定できます。
- 遅延時間により、スイッチの初期化を考慮することができます。
- これにより、ネットワーク上のピア システムに ARP クエリが送信され、リンクがアップしていることを示すものとして応答が使用されます。
- 監視頻度と対象アドレスを指定できます。
ネットワーク ボンディング:構成
ボンディング インターフェース ファイルの作成
/etc/sysconfig/network-scripts にボンディング インターフェース ファイルを手動で作成できます。 ディレクトリ。最初にボンディング インターフェイスを作成してから、物理ネットワーク インターフェイスをボンディングに追加します。これらの物理ネットワーク インターフェースは「スレーブ」と呼ばれます 「.
この投稿の例では、bond0 インターフェースのスレーブは ens33 と ens37 です。起動する前に、ボンディングモジュールが正しくロードされていることを確認してください。それを確認するには、以下に示すコマンドを使用します:
# lsmod |grep bonding bonding 122351 0
モジュールがロードされていない場合は、modprobe コマンドを使用してロードしてください。
# modprobe bonding
1. 以下は、ボンディング インターフェイス ファイルの例です。
# cat /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=active-backup" TYPE=Bond BONDING_MASTER=yes BOOTPROTO=none IPADDR=192.168.2.12 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=bond0 UUID=bbe539aa-5042-4d28-a0e6-2a4d4f5dd744 ONBOOT=yes
2. 次の例では、ens33 を定義しています bond0 のスレーブとしての物理ネットワーク インターフェイス:
# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet NAME=ens33 UUID=817e285b-60f0-42d8-b259-4b62e21d823d DEVICE=ens33 ONBOOT=yes MASTER=bond0 SLAVE=yes
3. 次の例では、ens37 を定義しています bond0 のスレーブとしての物理ネットワーク インターフェイス:
# cat /etc/sysconfig/network-scripts/ifcfg-ens37 TYPE=Ethernet NAME=ens37 UUID=f0c23472-1aec-4e84-8f1b-be8a2ecbeade DEVICE=ens37 ONBOOT=yes MASTER=bond0 SLAVE=yes
4. ネットワーク サービスを再起動します
ネットワーク サービスを再起動して、ボンディング インターフェイスを有効にします。
# systemctl restart network
ネットワーク サービスを再起動したくない場合は、ボンディング インターフェイスを個別に plumb できます:
# ifup bond0
ネットワーク結合構成を確認する
1. 「ip addr show」コマンド出力で新しいインターフェイスを確認します:
# ip addr show 1: lo: [LOOPBACK,UP,LOWER_UP] mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 4: ens37: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 5: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff inet 192.168.2.12/24 brd 192.168.2.255 scope global bond0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe54:f720/64 scope link valid_lft forever preferred_lft forever
2. また、以下のコマンドを使用して、ボンディング インターフェイスの現在のステータスと現在アクティブなインターフェイスを確認します。
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: ens33 MII Status: up MII Polling Interval (ms): 1 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens33 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:20 Slave queue ID: 0 Slave Interface: ens37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:34 Slave queue ID: 0
上記のコマンド出力から、ens33 であることがわかります。 ボンドで現在アクティブなスレーブです。
ボンディング構成の耐障害性のテスト
1. これはアクティブ/バックアップ ボンディング構成であるため、1 つのインターフェースがダウンすると、ボンディング内の他のインターフェースがアクティブ スレーブになります。この機能を検証するために、現在のインターフェイス ens33 を停止します。
# ifdown ens33
2. ボンド インターフェースのステータスを再度確認すると、新しいアクティブなスレーブがインターフェース ens37 であることがわかります。
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: ens37 MII Status: up MII Polling Interval (ms): 1 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:34 Slave queue ID: 0
また、bond インターフェースが起動して実行されます:
# ip add show bond0 5: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff inet 192.168.2.12/24 brd 192.168.2.255 scope global bond0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe54:f720/64 scope link valid_lft forever preferred_lft foreverCentOS / RHEL 7 :nmcli を使用してインターフェイス ボンディングを作成する方法