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

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

システム上で利用可能なデバイスを表示するには、以下のコマンドを実行します。
~]$ nmcli connection show
NAME  UUID                                  TYPE            DEVICE
eth1  0e8185a1-f0fd-4802-99fb-bedbb31c689b  802-3-ethernet  --
eth0  dfe1f57b-419d-4d1c-aaf5-245deab82487  802-3-ethernet  --
team-ServerA という名前の新規チームインターフェースを作成するには、以下のコマンドを実行します。
~]$ nmcli connection add type team ifname team-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 ファイルを使ったネットワーク設定」 を参照してください。
割り当てられた他の値を表示するには、以下のコマンドを実行します。
~]$ 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[出力は省略されています]
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
eth1                0e8185a1-f0fd-4802-99fb-bedbb31c689b  802-3-ethernet  --   
eth0                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
Team0Team0-port1 の名前でインターフェース eth0 を追加するには、以下のコマンドを実行します。
~]$ nmcli con add type team-slave con-name Team0-port1 ifname eth0 master Team0
Connection 'Team0-port1' (ccd87704-c866-459e-8fe7-01b06cf1cffc) successfully added.
同様に Team0-port2 の名前で別のインターフェース eth1 を追加するには、以下のコマンドを実行します。
~]$ nmcli con add type team-slave con-name Team0-port2 ifname eth1 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 の導入については、「NetworkManager のコマンドラインツール nmcli の使用」 を参照してください。

5.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":	{
		"eth1": {
			"prio": -10,
			"sticky": true
		},
		"eth2": {
			"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 の使用方法については、vi(1) man ページを参照してください。お好みのエディターを使用しても構いません。
チーム内でポートとして使用するインターフェースをチームデバイスに追加する際には、それがアクティブになっていない、つまり ダウン になっている必要があることに注意してください。インターフェースのステータスを確認するには、以下のコマンドを実行します。
~]$ 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
ネットワークチームインターフェース team0 にアドレスを適用するには、root で以下の形式のコマンドを実行します。
~]# 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
チームデーモンのインスタンスを強制終了、kill、するには、root で以下の形式のコマンドを実行します。
~]# teamd -t team0 -k
-k オプションは、デバイス team0 に関連するデーモンのインスタンスを強制終了、kill、することを指定します。他のオプションについては、teamd(8) man ページを参照してください。
teamd のコマンドラインオプションでヘルプを表示するには、以下のコマンドを実行します。
~]$ teamd -h
また、teamd(8) man ページも参照してください。

5.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/ ディレクトリー内に作成します。
DEVICE=eth1
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 アドレスを指定すると、デバイス命名手順に影響が出ます。これは「8章ネットワークデバイス命名における一貫性」で説明しています。
ネットワークチームをアップにするには、root で以下のコマンドを実行します。
~]# ifup team0
ネットワークチームを表示するには、以下のコマンドを実行します。
~]$ ip link show

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

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

5.10.5. teamnl を使用したチームのポートの一覧表示

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

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

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

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

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

5.10.8. iputils を使用したネットワークチームへのインターフェースのアクティブ化

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

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

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

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

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