【RHEL 7】ネットワークチーミング設定について

インフラサーバ

ネットワークリンクのグループ化について

ネットワークリンクをグループ化して冗長化する技術については、

  • チャンネルボンディング
  • イーサネットボンディング
  • ポートトランキング
  • チャンネルチーミング
  • NIC チーミング
  • リンクアグリゲーション

など様々な名前があるが、Red Hat Enterprise Linux 7 においては元々ボンディング機能があり、ネットワークチーミング(またはネットワークチームともいう)はその代替機能に位置づけられる。

ボンディングとネットワークチーミングの違いは以下の公式ページ参照。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/networking_guide/sec-comparison_of_network_teaming_to_bonding

ボンディング設定については以下記事を参照。
【CentOS 8】ネットワークボンディング設定について

ネットワークチーミングの負荷分散またはバックアップの方式としては以下がある。

  • broadcast
    • データは全ポートから送信される
  • round-robin(デフォルト)
    • データは全ポートで順番に送信される
  • active-backup
    • 1 つのポートまたはリンクが使用され、他はバックアップとして維持される
  • loadbalance
    • アクティブ Tx 負荷分散と BPF ベースの Tx ポートセレクターを使用
  • lacp
    • 802.3ad リンクアグリゲーション制御プロトコルを実装

ネットワークチーミングデーモンのインストール

  • ネットワークチーミングデーモンは teamd
  • デフォルトでは teamd はインストールされていない
  • インストールコマンドは以下の通り
yum install teamd

ネットワークチーミング設定方法について

以下の設定方法がある。

  • nmtui を使用する
    • NetworkManager のテキストユーザーインターフェース
  • nmcli を使用する
    • NetworkManager のコマンドラインツール
  • teamd を使用する
  • ifcfg ファイルを使用する
  • GUI を使用する

nmcli を使用したネットワークチーミングの設定

チームデバイスおよびコネクションの作成

チームデバイスおよびそのコネクションを作成するコマンドは以下。

  • nmcli con add type team ifname Interface-name
    • コネクション名を指定しない場合
  • nmcli con add type team con-name Connection-name ifname Interface-name
    • コネクション名を指定する場合
$ nmcli con add type team ifname ServerA
Connection 'team-ServerA' (b954c62f-5fdd-4339-97b0-40efac734c50) successfully added.

$ nmcli con add type team con-name Team0 ifname ServerB
Connection 'Team0' (5f7160a1-09f6-4204-8ff0-6d96a91218a7) successfully added.

チームデバイスおよびコネクション作成時は自動で以下のように設定される。

  • connection.id = team-Interface-name (con-name を指定しない場合)
  • connection.autoconnect = yes
  • ipv4.method = auto
  • ONBOOT = yes
  • BOOTPROTO = dhcp
  • /etc/sysconfig/network-scripts/ifcfg-team-Interface-name が作成される

■作成したチームコネクションの表示

$ nmcli con show
NAME                UUID                                  TYPE            DEVICE
team-ServerA        b954c62f-5fdd-4339-97b0-40efac734c50  team            ServerA
enp2s0                0e8185a1-f0fd-4802-99fb-bedbb31c689b  802-3-ethernet  --
enp1s0                dfe1f57b-419d-4d1c-aaf5-245deab82487  802-3-ethernet  --
Team0               5f7160a1-09f6-4204-8ff0-6d96a91218a7  team            ServerB

チームデバイスの IP アドレスを設定

  • nmcli con modify Con-name ipv4.method manual ipv4.addresses x.x.x.x/prefix
nmcli con modify team0 ipv4.method manual ipv4.address 192.168.1.2/24

チームデバイスへの物理インターフェースの追加

事前準備として、チームデバイスに追加する物理インターフェースに対応するコネクションが存在する場合は、そのコネクションを削除しておく。

以下コマンドでチームデバイスへ物理インターフェースを追加する。

  • nmcli con add type team-slave con-name Connection-name ifname Interface-name master Parent-team
    • Connection-name は追加するコネクションの名前を指定
      • 追加する物理インターフェースに対応するコネクションになる
    • Interface-name は追加する物理インターフェースの名前
    • Parent-team は追加先のチームデバイスの名前
      • デバイス名でもコネクション名でもどちらでも良い
$ nmcli con add type team-slave con-name Team0-port1 ifname enp1s0 master Team0
Connection 'Team0-port1' (ccd87704-c866-459e-8fe7-01b06cf1cffc) successfully added.

$ nmcli con add type team-slave con-name Team0-port2 ifname enp2s0 master Team0
Connection 'Team0-port2' (a89ccff8-8202-411e-8ca6-2953b7db52dd) successfully added.

※ネットワークチーミングにおいて、チームデバイスのことをマスタ、そのメンバーである物理インターフェースのことをスレーブという

チームの有効化

チームを有効化させるにはスレーブ、マスタの順にコネクションを up させる。

$ nmcli con up Team0-port1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

$ nmcli con up Team0-port2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

$ nmcli con up Team0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

チームデバイスの状態確認

  • nmcli con
  • ip link
  • teamdctl team-device-name state
# teamdctl team0 state
setup:
  runner: roundrobin
ports:
  ens37
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  ens38
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0

参考資料

第8章 ネットワークチーミングの設定 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.
8.10. コマンドラインを使用したネットワークチームの設定 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.
RHEL7 Teamingによる冗長化 - Qiita
RHEL7 Teamingによる冗長化TeamingBondingドライバーは、すべての機能がカーネルモジュールとして実装されており、機能拡張が困難。また、設定変更にはモジュールの再読み込み…

―――――――――――――

タイトルとURLをコピーしました