ウェブサイト検索

RHEL 8/CentOS 8 Linuxでネットワークインターフェースのボンディングを設定する方法


ネットワークインターフェースのボンディングは、2つ以上の物理ネットワークインターフェース(スレーブと呼ばれる)を、一つの論理インターフェース(マスターまたはボンドインターフェースと呼ばれる)に集約することを指します。ボンディングモードによっては、この構成によりフォールトトレランスや負荷分散を達成するのに役立ちます。このチュートリアルでは、利用可能なボンディングモードと、RHEL 8/CentOS 8でのネットワークボンディングの作成方法を学びます。

このチュートリアルでは、あなたは学びます:

  • ネットワークインターフェースボンディングとは何ですか?
  • RHEL 8/CentOS 8でネットワークインターフェイスのボンディングを構成する方法
  • 異なる結合モードは何ですか?

Linuxカーネルによって見られるバンドの状態

ソフトウェアの要件と使用される規約

どの結合モードですか?

基本的に私たちが使用できる結合モードは7つあります:

ラウンドロビン

パケットは、最初から最後までのすべてのスレイブインターフェースに、順次、均等に配布されます。このモードは、負荷分散と耐障害性の両方を提供しますが、スイッチでのサポートが必要です。

アクティブバックアップ

プライマリスレーブインターフェースのみが使用されます。これが失敗した場合、別のスレーブがその代わりに使用されます。これは障害耐性を提供するだけで、特別な要件はありません。

XOR(排他的論理和)

パケットは転送され、以下の式で計算されたソースおよびデスティネーションMACアドレスのハッシュに応じて、スレーブインターフェースの1つに割り当てられます:

[(source MAC address XOR’d with destination MAC address) modulo slave count]

このモードは、障害耐性と負荷分散の両方を提供します。

放送

このモードが使用されると、すべてのパケットがすべてのスレーブインターフェースに送信され、フォールトトレランスが提供されますが、ロードバランシングは行われません。

802.3ad

このモードは、スイッチでサポートされている必要があるIEEE 802.3adリンク集約を使用します。同じ速度とデュプレックス設定を共有する集約グループを作成します。アクティブグループ内のすべてのスレーブで送信および受信を行います。負荷分散とフォールトトレランスの両方を提供します。

適応型送信負荷バランシング

アウトゴーイングパケットは、スレーブインターフェースの負荷に応じて送信され、インカミングトラフィックは現在のスレーブによって受信されます。もし後者が失敗すると、別のスレーブがそのMACアドレスを引き継ぎます。このモードは、フォールトトレランスとロードバランシングを提供します。

適応的負荷分散

適応型送信負荷分散のように機能しますが、ARP(アドレス解決プロトコル)交渉を介して着信の負荷分散も提供します。

環境

このチュートリアルのために、仮想化されたRed Hat Enterprise Linux 8システムで作業します。ネットワークバンディングを作成するために、nmtuiを使用します。これは、NetworkManagerデーモンを制御するためのテキストユーザーインターフェースユーティリティです。しかし、同じ操作はnmcliコマンドラインユーティリティや、Network Manager Connection Editorを使ったGUIでも実行できます。

システムには現在、2つのethernetリンク、enp1s0
とenp7s0があります:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:cb:25:82 brd ff:ff:ff:ff:ff:ff
3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:32:37:9b brd ff:ff:ff:ff:ff:ff

ネットワークボンディングの作成

最初に、スレーブインターフェースの現在の設定を削除します。これは厳密には必要ではありませんが、現場で設定を編集することもできますが、最初からやり直すためにこの方法で進めます。nmtuiを呼び出しましょう:

sudo nmtui

メインメニューから「接続を編集」を選択し、確認します。

Nmtui メインメニュー。

まず、リストから削除する接続を選択し、次に<Delete>に進みます。最後に、確認します:

Nmtui 接続リスト。

最後に、接続を削除したいことを確認します:

既存の接続を削除するためのNmtui確認プロンプト。

他のインターフェースでも同様の操作を繰り返します。すべての既存の設定を削除したら、bondインターフェースを作成できます。メニューから<Add>を選択し、接続タイプのリストからBondを選びます:

Nmtui接続タイプ選択メニュー。

新しいウィンドウが開き、私たちのインターフェースを設定できます。この場合、完全にオプションですが、私はbond0をプロファイル名とデバイス名の両方として使用します。ただし、最も重要な部分は、ボンドに追加するスレーブインターフェースの選択です。BOND Slavesメニューで<Add>をクリックし、この場合はethernetを追加するスレーブ接続のタイプとして選択します。

スレーブ接続タイプを選択するためのNmtuiメニュー。

デバイス名を入力し、<OK>を選択して確認してください。この操作は、すべてのスレーブインターフェースごとに繰り返す必要があります。

スレーブ接続を編集するためのNmtuiインターフェース。

次のステップは、ボンディングモードを選択することです。このチュートリアルのために、アクティブバックアップモードを使用します。メニューから関連するオプションを選択し、「プライマリ」フィールドにプライマリスレーブインターフェースの名前を指定します。最後に、ボンドインターフェースの作成を確認するために、<OK>を選択します。

ネットワークボンディングの設定。

これで nmtui アプリケーションを終了できます。ボンディングの作成が成功したかどうかを確認するために、次のコマンドを実行できます:

ip addr show bond0

結果は以下の通りです:

4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:cb:25:82 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.164/24 brd 192.168.122.255 scope global dynamic noprefixroute bond0
       valid_lft 3304sec preferred_lft 3304sec
    inet6 fe80::48:d311:96c1:89dc/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

私たちの設定に関する ifcfg 設定ファイルは /etc/sysconfig/network-scripts ディレクトリ内に生成されました:

ls /etc/sysconfig/network-scripts
ifcfg-bond0  ifcfg-enp1s0  ifcfg-enp7s0

bond0 インターフェースのカーネルによる現在の状態を確認するには、次のコマンドを実行できます:

cat /proc/net/bonding/bond0

コマンドの出力は以下に報告されています:

Ethernet Channel Bonding Driver: v3.7.1 (April
27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: enp1s0 (primary_reselect always)
Currently Active Slave: enp1s0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: enp1s0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:cb:25:82
Slave queue ID: 0

Slave Interface: enp7s0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:32:37:9b
Slave queue ID: 0

両方のスレーブインターフェースが上がっている様子が見えますが、enp1s0のみがアクティブです。なぜなら、それがプライマリースレーブとして使用されているからです。

アクティブバックアップのテスト

私たちの設定が機能しているかどうかをどのように確認できますか?プライマリスレーブインターフェースを停止させ、マシンがまだpingに応答するかどうかを確認できます。インターフェースを停止させるためには、次のコマンドを実行します:

sudo ip link set enp1s0 down

その機械はまだ反応しますか?確認してみましょう:

ping -c3 192.168.122.164
PING 192.168.122.164 (192.168.122.164) 56(84) bytes of data.
64 bytes from 192.168.122.164: icmp_seq=1 ttl=64 time=0.385 ms
64 bytes from 192.168.122.164: icmp_seq=2 ttl=64 time=0.353 ms
64 bytes from 192.168.122.164: icmp_seq=3 ttl=64 time=0.406 ms

--- 192.168.122.164 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 88ms
rtt min/avg/max/mdev = 0.353/0.381/0.406/0.027 ms

そうですね!債券の状況がどのように変わったか見てみましょう:

Ethernet Channel Bonding Driver: v3.7.1 (April
27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: enp1s0 (primary_reselect always)
Currently Active Slave: enp7s0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: enp1s0
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 52:54:00:cb:25:82
Slave queue ID: 0

Slave Interface: enp7s0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:32:37:9b
Slave queue ID: 0

ご覧のように、プライマリースレーブインタフェース(enp1s0)をダウンさせたため、他のスレーブ(enp7s0)がバックアップとして使用され、現在はアクティブになっています。また、プライマリースレーブのリンク障害数が増加し、現在は1になっています。

結論

このチュートリアルでは、ネットワークボンディングとは何か、ネットワークボンディングを構成するための可能な方法について学びました。また、アクティブバックアップモードを使用して、2つのイーサネットインターフェース間にネットワークボンディングを作成しました。Red Hat Enterprise Linux 7では、ネットワークチーミングという新しい概念が導入されました。一部の点でチーミングはボンディングに似ていますが、実装が異なり、より多くの機能があります。今後の記事でこれを取り上げる予定です。

関連記事: