第4章 ネットワークチーミングの設定

ネットワークチームは、物理ネットワークインターフェイスと仮想ネットワークインターフェイスを組み合わせるか集約して、より高いスループットまたは冗長性を備えた論理インターフェイスを提供する方法です。ネットワークチーミングでは、小さなカーネルモジュールを使用してパケットフローの高速処理や、他のタスクのためのユーザー空間サービスを実装します。これにより、ネットワークチーミングは、負荷分散および冗長性の要件に対して、簡単に拡張可能でスケーラブルなソリューションとなります。

Red Hat Enterprise Linux は、チームデバイスを設定するためのさまざまなオプションを管理者に提供します。以下に例を示します。

  • nmcli を使用し、コマンドラインを使用してチーム接続を設定します。
  • RHEL Web コンソールを使用し、Web ブラウザーを使用してチーム接続を設定します。
  • nm-connection-editor アプリケーションを使用して、グラフィカルインターフェイスでチーム接続を設定します。
重要

Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。代わりに、ネットワークボンディングドライバーの使用を検討してください。詳細は、Configuring network bonding を参照してください。

4.1. ネットワークボンディングへのネットワークチーム設定の移行

Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。以前のバージョンの RHEL からアップグレードした場合など、稼働中のネットワークチームを設定している場合は、設定を、NetworkManager が管理するネットワークボンディングに移行できます。

重要

team2bond ユーティリティーは、ネットワークチーム設定のみをボンディングに変換します。その後、IP アドレスや DNS 設定など、ボンディングの詳細設定を手動で行う必要があります。

前提条件

  • team-team0 NetworkManager の接続プロファイルが設定され、team0 デバイスを管理している。
  • teamd パッケージがインストールされている。

手順

  1. オプション: team-team0 NetworkManager 接続の IP 設定を表示します。

    # nmcli connection show team-team0 | egrep "^ip"
    ...
    ipv4.method:                            manual
    ipv4.dns:                               192.0.2.253
    ipv4.dns-search:                        example.com
    ipv4.addresses:                         192.0.2.1/24
    ipv4.gateway:                           192.0.2.254
    ...
    ipv6.method:                            manual
    ipv6.dns:                               2001:db8:1::fffd
    ipv6.dns-search:                        example.com
    ipv6.addresses:                         2001:db8:1::1/64
    ipv6.gateway:                           2001:db8:1::fffe
    ...
  2. team0 デバイスの設定を JSON ファイルにエクスポートします。

    # teamdctl team0 config dump actual > /tmp/team0.json
  3. ネットワークチームを削除します。たとえば、NetworkManager でチームを設定した場合は、team-team0 接続プロファイルと、関連するポートのプロファイルを削除します。

    # nmcli connection delete team-team0
    # nmcli connection delete team-team0-port1
    # nmcli connection delete team-team0-port2
  4. team2bond ユーティリティーをドライランモードで実行して、チームデバイスと同様の設定でネットワークボンディングを設定する nmcli コマンドを表示します。

    # team2bond --config=/tmp/team0.json --rename=bond0
    nmcli con add type bond ifname bond0 bond.options "mode=active-backup,num_grat_arp=1,num_unsol_na=1,resend_igmp=1,miimon=100,miimon=100"
    nmcli con add type ethernet ifname enp7s0 master bond0
    nmcli con add type ethernet ifname enp8s0 master bond0

    最初のコマンドには 2 つの miimon オプションが含まれます。これは、チーム設定ファイルに 2 つの link_watch エントリーが含まれているためです。これはボンディングの作成には影響しないことに注意してください。

    サービスをチームのデバイス名にバインドし、これらのサービスの更新や破損を回避する場合は、--rename=bond0 を省略します。この場合、team2bond は、チームと同じインターフェイス名をボンディングに使用します。

  5. team2bond ユーティリティーが推奨するボンディングのオプションが正しいことを確認します。
  6. ボンディングを作成します。推奨される nmcli コマンドを実行するか、--exec-cmd オプションを指定して team2bond コマンドを再実行できます。

    # team2bond --config=/tmp/team0.json --rename=bond0 --exec-cmd
    Connection 'bond-bond0' (0241a531-0c72-4202-80df-73eadfc126b5) successfully added.
    Connection 'bond-slave-enp7s0' (38489729-b624-4606-a784-1ccf01e2f6d6) successfully added.
    Connection 'bond-slave-enp8s0' (de97ec06-7daa-4298-9a71-9d4c7909daa1) successfully added.

    次の手順では、ボンディング接続プロファイル (bond-bond0) の名前が必要です。

  7. team-team0 で以前設定した IPv4 設定を、bond-bond0 接続に設定します。

    # nmcli connection modify bond-bond0 ipv4.addresses '192.0.2.1/24'
    # nmcli connection modify bond-bond0 ipv4.gateway '192.0.2.254'
    # nmcli connection modify bond-bond0 ipv4.dns '192.0.2.253'
    # nmcli connection modify bond-bond0 ipv4.dns-search 'example.com'
    # nmcli connection modify bond-bond0 ipv4.method manual
  8. team-team0 で以前設定した IPv6 設定を、bond-bond0 接続に設定します。

    # nmcli connection modify bond-bond0 ipv6.addresses '2001:db8:1::1/64'
    # nmcli connection modify bond-bond0 ipv6.gateway '2001:db8:1::fffe'
    # nmcli connection modify bond-bond0 ipv6.dns '2001:db8:1::fffd'
    # nmcli connection modify bond-bond0 ipv6.dns-search 'example.com'
    # nmcli connection modify bond-bond0 ipv6.method manual
  9. 接続をアクティベートします。

    # nmcli connection up bond-bond0

検証

  1. bond-bond0 NetworkManager 接続の IP 設定を表示します。

    # nmcli connection show bond-bond0 | egrep "^ip"
    ...
    ipv4.method:                            manual
    ipv4.dns:                               192.0.2.253
    ipv4.dns-search:                        example.com
    ipv4.addresses:                         192.0.2.1/24
    ipv4.gateway:                           192.0.2.254
    ...
    ipv6.method:                            manual
    ipv6.dns:                               2001:db8:1::fffd
    ipv6.dns-search:                        example.com
    ipv6.addresses:                         2001:db8:1::1/64
    ipv6.gateway:                           2001:db8:1::fffe
    ...
  2. ボンドのステータスを表示します。

    # cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v5.13.0-0.rc7.51.el9.x86_64
    
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: enp7s0
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    Peer Notification Delay (ms): 0
    
    Slave Interface: enp7s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 52:54:00:bf:b1:a9
    Slave queue ID: 0
    
    Slave Interface: enp8s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 52:54:00:04:36:0f
    Slave queue ID: 0

    この例では、両方のポートが起動しています。

  3. ボンディングフェイルオーバーが機能することを確認するには、以下を行います。

    1. ホストからネットワークケーブルを一時的に削除します。コマンドラインでリンク障害イベントを適切にテストする方法がないことに注意してください。
    2. ボンドのステータスを表示します。

      # cat /proc/net/bonding/bond0