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.autoconnect 设定为 yes,这样就不会将给出 ipv4.methodIP 地址设定为 autoNetworkManager 还会将配置写入 /etc/sysconfig/network-scripts/ifcfg-team-ServerA,其中会将对应的 ONBOOT 设定为 yes,并将 BOOTPROTO 设定为 dhcp
注:再次启用该接口前,NetworkManager 不会意识到对 ifcfg 文件的手动更改。有关使用配置文件的详情,请查看 第 1.9 节 “使用 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 page。注:该名称衍生自接口名称,在接口名称的前面添加类型。另外还可使用 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
运行以下命令在 Team0 中添加名为 Team0-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)

5.10.2. 使用 teamd 创建网络成组

注意

使用 teamd 创建的配置不会持久,因此应按照 第 5.10.1 节 “使用 nmcli 配置网络成组”第 5.10.3 节 “使用 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 page。
注:在该成组内作为端口使用的接口不得处于 active 状态,就是说将其添加到成组设备时,它们必须处于 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 选项用于显示 debug 信息,-f 选项用于指定要载入的配置文件,-d 选项可让该进程中启动后作为守护进程运行。有关其他选项的详情请查看 teamd(8) man page。
请作为 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
请作为 root 用户,使用以下命令在网络成组接口 team0 中应用一个地址:
~]# 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 用户,使用以下命令激活该成组接口,或使其处于 up 状态:
~]# ip link set dev team0 up
请作为 root 用户,使用以下命令暂时取消激活成组接口,或使其处于 down 状态:
~]# ip link set dev team0 down
请作为 root 用户,使用以下命令格式终止或杀死成组守护进程的实例:
~]# teamd -t team0 -k
使用 -k 选项指定要杀死的与设备 team0 关联的守护进程实例。其他选项请查看 teamd(8) man page。
请运行以下命令获得 teamd 命令行选项帮助信息:
~]$ teamd -h
此外,请查看 teamd(8) man page。

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 在网络成组中添加端口

请作为 root,使用 ip 工具程序运行以下命令,在网络成组 team0 中添加端口 em1
~]# ip link set dev em1 down
~]# ip link set dev em1 master team0
根据需要添加附加端口。成组驱动程序会自动启用这些端口。

5.10.5. 使用 teamnl 列出成组连接的端口

请作为 root 使用 teamnl 工具程序,运行以下命令查看或列出网络成组中的端口:
~]# teamnl team0 ports
em2: up 100 fullduplex
em1: up 100 fullduplex

5.10.6. 使用 teamnl 配置成组连接选项

请作为 root 使用 teamnl 工具程序,运行以下命令查看或列出当前可用选项:
~]# teamnl team0 options
请作为 root 运行以下命令将网络成组配置为使用 active-backup 模式:
~]# teamnl team0 setoption mode activebackup

5.10.7. 使用 iputils 在网络成组中添加地址

请作为 root 使用 ip 工具程序,运行以下命令在成组接口 team0 中添加地址:
~]# ip addr add 192.168.252.2/24 dev team0

5.10.8. 使用 iputils 在网络成组中激活接口

请作为 root,使用 ip 工具程序,运行以下命令激活接口,或在网络成组中 启用 接口:
~]# ip link set team0 up

5.10.9. 使用 teamnl 查看成组连接的 activeport 选项

请作为 root,使用 teamnl 程序,运行以下命令查看或列出网络成组中的 activeport 选项:
~]# teamnl team0 getoption activeport
0

5.10.10. 使用 teamnl 设置成组连接的 activeport 选项

请作为 root,使用 teamnl 工具程序,运行以下命令在网络成组中设置 activeport 选项:
~]# teamnl team0 setoption activeport 5
请作为 root,使用以下命令检查成组端口选项变更:
~]# teamnl team0 getoption activeport
5