Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.10. コマンドラインを使用したネットワークチームの設定

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

システムで利用可能な接続を表示するには、以下のコマンドを実行します。
~]$ nmcli connection show
NAME  UUID                                  TYPE            DEVICE
enp2s0  0e8185a1-f0fd-4802-99fb-bedbb31c689b  802-3-ethernet  --
enp1s0  dfe1f57b-419d-4d1c-aaf5-245deab82487  802-3-ethernet  --
システムで利用可能なデバイスを表示するには、以下のコマンドを実行します。
~]$ nmcli device status
DEVICE      TYPE      STATE                                  CONNECTION
virbr0      bridge    connected                              virbr0
ens3        ethernet  connected                              ens3
新しいチームインターフェイスを、ServerA という名前で作成するには、以下のコマンドを実行します。
~]$ nmcli connection add type team ifname ServerA
Connection 'team-ServerA' (b954c62f-5fdd-4339-97b0-40efac734c50) successfully added.
NetworkManager は内部パラメーター connection.autoconnectyes に設定します。IP アドレスが指定されていないため、ipv4.methodauto に設定されます。NetworkManager は、設定ファイルを /etc/sysconfig/network-scripts/ifcfg-team-ServerA に書き込みます。ここで、対応する ONBOOT は yes に、BOOTPROTO は dhcp に設定されます。
ifcfg ファイルへの手動の変更は、インターフェイスが次に起動するまで NetworkManager では認識されません。設定ファイルの使用方法については、「sysconfig ファイルによる NetworkManager の使用」を参照してください。
割り当てた別の値を表示するには、以下のコマンドを実行します。
~]$ nmcli con show team-ServerA
connection.id:                          team-ServerA
connection.uuid:                        b954c62f-5fdd-4339-97b0-40efac734c50
connection.interface-name:              ServerA
connection.type:                        team
connection.autoconnect:                 yes

ipv4.method:                            auto
[output truncated]
JSON 設定ファイルが指定されていないので、デフォルト値が適用されます。チーム JSON パラメーターとそのデフォルト値の詳細は、teamd.conf (5) man ページを参照してください。名前は、インターフェイス名の前に種類を追加したものになっていることに留意してください。別の方法では、以下のように con-name オプションで名前を指定します。
~]$ nmcli connection add type team con-name Team0 ifname ServerB
Connection 'Team0' (5f7160a1-09f6-4204-8ff0-6d96a91218a7) successfully added.
設定したチームインターフェイスを表示するには、以下のコマンドを実行します。
~]$ 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
チームに割り当てられた名前を変更するには、以下の形式でコマンドを入力します。
nmcli con mod old-team-name connection.id new-team-name
すでに存在するチームのチーム設定ファイルを読み込むには、
nmcli connection modify team-name team.config JSON-config
: JSON 文字列としてチーム設定を指定するか、設定を含むファイル名を指定します。ファイル名には、パスを含めることができます。いずれの場合も、team.config プロパティーに保存される内容は JSON 文字列です。JSON 文字列の場合は、文字列を単一引用符で囲み、文字列全体をコマンドラインにペーストします。
team.config プロパティーを確認するには、以下を実行します。
nmcli con show team-name | grep team.config
team.config プロパティーを設定すると、それに応じてその他のチームプロパティーがすべて更新されます。
対応する JSON 文字列を直接変更せずに、特定のチームオプションを公開して設定するより柔軟な方法も可能になります。これは、利用可能なその他のチームプロパティーを使用して、必要な値に 1 つずつ関連するチームオプションを設定できます。その結果、新しい値に一致するように team.config プロパティーが更新されます。
たとえば、1 つまたは複数のリンク監視を指定できるようにする team.link-watchers プロパティーを設定するには、
nmcli connection modify team-name team.link-watchers "name=ethtool delay-up=5, name=nsna_ping target-host=target.host"
の形式でコマンドを入力します。必要な link-watchers はコンマで区切り、同じ link-watcher に属する属性はスペースで区切られます。
team.runner および team.link-watchers プロパティーを設定するには、次の形式でコマンドを入力します。
nmcli connection modify team-name team.runner activebackup team.link-watchers "name=ethtool delay-up=5, name=nsna_ping target-host=target.host"
これは、team.config プロパティーを対応する JSON 文字列に設定するのと同じです。
nmcli connection modify team-name team.config '{"runner": {"name": "activebackup"}, "link_watch": [{"name": "ethtool", "delay_up": 5},{"name": "nsna_ping", "target_host ": "target.host"}]'
Team0-port1 という名前の Team0 にインターフェイス enp1s0 を追加するには、以下のコマンドを実行します。
~]$ nmcli con add type ethernet con-name Team0-port1 ifname enp1s0 slave-type team master Team0
Connection 'Team0-port1' (ccd87704-c866-459e-8fe7-01b06cf1cffc) successfully added.
同様に Team0-port2 の名前で別のインターフェイス enp2s0 を追加するには、以下のコマンドを実行します。
~]$ nmcli con add type ethernet con-name Team0-port2 ifname enp2s0 slave-type team master Team0
Connection 'Team0-port2' (a89ccff8-8202-411e-8ca6-2953b7db52dd) successfully added.
nmcli は、イーサネットポートのみをサポートします。
チームを有効にするには、以下のように最初にポートをアップにする必要があります。
~]$ nmcli connection up Team0-port1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
~]$ nmcli connection up Team0-port2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
以下のようにポートをアクティブ化することで、チームインターフェイスがアップになっていることを確認できます。
~]$ ip link
3:  Team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 52:54:00:76:6f:f0 brd ff:ff:ff:ff:ff:f
あるいは、以下のようにチームを有効にするコマンドを実行します。
~]$ nmcli connection up Team0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
nmcliの概要は、「nmcli を使用する IP ネットワークの設定」 を参照してください。

8.10.2. teamd を使用したネットワークチームの作成

注記
teamd を使って作成された設定には永続性がありません。このため、「nmcli を使用したネットワークチーミングの設定」または「ifcfg ファイルを使用したネットワークチームの作成」で定義されているステップを使ってチームを作成する必要がある場合があります。
ネットワークチームを作成するには、ポートまたはリンクのチームに対するインターフェイスとして作動する仮想インターフェイスの設定ファイルが JSON 形式で必要になります。簡単な方法は、サンプル設定ファイルをコピーし、root 権限でエディターを使用してファイルを編集することです。利用可能な設定例をリスト表示するには、以下のコマンドを実行します。
~]$ ls /usr/share/doc/teamd-*/example_configs/
activebackup_arp_ping_1.conf  activebackup_multi_lw_1.conf   loadbalance_2.conf
activebackup_arp_ping_2.conf  activebackup_nsna_ping_1.conf  loadbalance_3.conf
activebackup_ethtool_1.conf   broadcast.conf                 random.conf
activebackup_ethtool_2.conf   lacp_1.conf                    roundrobin_2.conf
activebackup_ethtool_3.conf   loadbalance_1.conf             roundrobin.conf
activebackup_ethtool_1.conf など、含まれているファイルのいずれかを表示するには、以下のコマンドを実行します。
~]$ cat /usr/share/doc/teamd-*/example_configs/activebackup_ethtool_1.conf
{
	"device":	"team0",
	"runner":	{"name": "activebackup"},
	"link_watch":	{"name": "ethtool"},
	"ports":	{
		"enp1s0": {
			"prio": -10,
			"sticky": true
		},
		"enp2s0": {
			"prio": 100
		}
	}
}
teamd 設定ファイルを保存する作業設定ディレクトリーを作成します。たとえば通常ユーザーの場合、以下の形式のコマンドを実行します。
~]$ mkdir ~/teamd_working_configs
選択したファイルを作業ディレクトリーにコピーし、必要に応じて編集します。以下の形式のコマンドを使用できます。
~]$ cp /usr/share/doc/teamd-*/example_configs/activebackup_ethtool_1.conf \ ~/teamd_working_configs/activebackup_ethtool_1.conf
ネットワークチームのポートとして使用するインターフェイスを変更する場合など、使用中の環境に適合するようにファイルを編集するには、以下のように編集するファイルを開きます。
~]$ vi ~/teamd_working_configs/activebackup_ethtool_1.conf
必要な変更を加えて、ファイルを保存します。vi (1) の man ページでは、vi エディターの使用についてのヘルプを参照するか、お好みのエディターを使用してください。
チーム内でポートとして使用するインターフェイスをチームデバイスに追加する際には、それがアクティブになっていない、つまりdownになっている必要があることに注意してください。インターフェイスのステータスを確認するには、以下のコマンドを実行します。
~]$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:d5:f7:d4 brd ff:ff:ff:ff:ff:ff
3: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
  link/ether 52:54:00:d8:04:70 brd ff:ff:ff:ff:ff:ff
この例では、使用する予定のインターフェイスはどちらもUPになっていることが分かります。
インターフェイスを停止するには、root で以下の形式のコマンドを実行します。
~]# ip link set down em1
必要に応じて各インターフェイスでこれを繰り返します。
設定ファイルに基づいてチームインターフェイスを作成するには、root ユーザーとして作業設定ディレクトリー(この例ではteamd_working_configs )に移動します。
~]# cd /home/userteamd_working_configs
それから、以下の形式のコマンドを実行します。
~]# teamd -g -f activebackup_ethtool_1.conf -d
Using team device "team0".
Using PID file "/var/run/teamd/team0.pid"
Using config file "/home/user/teamd_working_configs/activebackup_ethtool_1.conf"
-g オプションはデバッグメッセージ用のオプションであり、-f オプションは、読み込む設定ファイルを指定することです。-d オプションは、起動後にプロセスがデーモンとして実行されるようにします。その他のオプションについては、teamd (8) man ページを参照してください。
チームのステータスを確認するには、root で以下のコマンドを実行します。
~]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  em1
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
  em2
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
runner:
  active port: em1
アドレスをネットワークチームインターフェイスに適用するには、以下を実行します。team0root で以下の形式でコマンドを実行します。
~]# ip addr add 192.168.23.2/24 dev team0
チームインターフェイスの IP アドレスを確認するには、以下のコマンドを実行します。
~]$ ip addr show team0
4: team0:  <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 16:38:57:60:20:6f brd ff:ff:ff:ff:ff:ff
    inet 192.168.23.2/24 scope global team0
       valid_lft forever preferred_lft forever
    inet6 2620:52:0:221d:1438:57ff:fe60:206f/64 scope global dynamic
       valid_lft 2591880sec preferred_lft 604680sec
    inet6 fe80::1438:57ff:fe60:206f/64 scope link
       valid_lft forever preferred_lft forever
チームインターフェイスをアクティブにするか、を起動するには、root で以下の形式のコマンドを実行します。
~]# ip link set dev team0 up
チームインターフェイスを一時的に非アクティブ化するか、を 停止 するには、root で以下の形式のコマンドを実行します。
~]# ip link set dev team0 down
チームデーモンのインスタンスを終了するか、または強制終了するには、root ユーザーとして以下の形式のコマンドを実行します。
~]# teamd -t team0 -k
-k オプションは、デバイスに関連付けられたデーモンのインスタンスを指定することです。 team0 強制終了されます。その他のオプションについては、teamd (8) man ページを参照してください。
teamd のコマンドラインオプションのヘルプは、次のコマンドを発行します。
~]$ teamd -h
また、teamd (8) の man ページを参照してください。

8.10.3. ifcfg ファイルを使用したネットワークチームの作成

ifcfg ファイルを使用してネットワークチームを作成するには、以下のように /etc/sysconfig/network-scripts/ ディレクトリーにファイルを作成します。
DEVICE=team0
DEVICETYPE=Team
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.11.1
PREFIX=24
TEAM_CONFIG='{"runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}}'
これでチームへのインターフェイスが作成されます。つまり、これが マスター になります。
メンバーとなるポートを作成するには、以下を実行します。 team0/etc/sysconfig/network-scripts/ ディレクトリーに以下のように 1 つ以上のファイルを作成します。
DEVICE=enp1s0
HWADDR=D4:85:64:01:46:9E
DEVICETYPE=TeamPort
ONBOOT=yes
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio": 100}'
必要に応じてポートインターフェイスを同様に追加します。追加する各ポート (ネットワークデバイス) に応じて、DEVICE と HWADDR のフィールドを変更します。ポートの優先度が prio によって指定されていない場合、デフォルトで 0 になります。-32,767 から + 32,767 までの範囲の負の値および正の値を受け入れます。
HWADDR ディレクティブを使用してハードウェアまたは MAC アドレスを指定すると、デバイスの命名手順に影響します。これについては、11章ネットワークデバイス命名における一貫性で説明します。
ネットワークチームを開くには、root で以下のコマンドを実行します。
~]# ifup team0
ネットワークチームを表示するには、以下のコマンドを実行します。
~]$ ip link show

8.10.4. iputils を使用したネットワークチームへのポートの追加

ポートを追加するには、以下を実行します。 em1 ネットワークチームへ team0ip ユーティリティーを使用して、root で以下のコマンドを実行します。
~]# ip link set dev em1 down
~]# ip link set dev em1 master team0
必要に応じてさらにポートを追加します。チームドライバーが自動的にポートをアップにします。

8.10.5. teamnl を使用したチームのポートのリスト表示

teamnl ユーティリティーを使用して、ネットワークチーム内のポートを表示または一覧表示するには、root で以下のコマンドを実行します。
~]# teamnl team0 ports
em2: up 100 fullduplex
em1: up 100 fullduplex

8.10.6. teamnl を使用したチームのオプション設定

teamnl ユーティリティーを使用して、現在利用可能なすべてのオプションを表示または一覧表示するには、root で以下のコマンドを実行します。
~]# teamnl team0 options
チームがアクティブなバックアップモードを使用するように設定するには、root で以下のコマンドを実行します。
~]# teamnl team0 setoption mode activebackup

8.10.7. iputils を使用したネットワークチームへのアドレス追加

チームへのアドレスの追加 team0ip ユーティリティーを使用して、root で以下のコマンドを実行します。
~]# ip addr add 192.168.252.2/24 dev team0

8.10.8. iputils を使用したネットワークチームへのインターフェイスの有効化

ネットワークチームへインターフェイスをアクティブまたは 開く には、以下を行います。team0ip ユーティリティーを使用して、root で以下のコマンドを実行します。
~]# ip link set team0 up

8.10.9. teamnl を使用したチームのアクティブポートオプション表示

teamnl ユーティリティーを使用して、ネットワークチームで activeport オプションを表示または一覧表示するには、root で以下のコマンドを実行します。
~]# teamnl team0 getoption activeport
0

8.10.10. teamnl を使用したチームのアクティブポートオプション設定

teamnl ユーティリティーを使用して、ネットワークチームで activeport オプションを設定するには、root で以下のコマンドを実行します。
~]# teamnl team0 setoption activeport 5
チームポートオプションの変更を確認するには、root で以下のコマンドを実行します。
~]# teamnl team0 getoption activeport
5