如何在Linux中配置不同网卡的链路聚合

Red Hat Enterprise Linux 7 与 CentOS 7 中默认的网络服务由 NetworkManager 提供,这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的 ifcfg 类型的配置文件。

1、选择链路聚合配置模型
复制以下内容

[root@localhost ~]# vim /usr/share/doc/teamd-1.17/example_configs/activebackup_arp_ping_1.conf 
"runner": {"name": "activebackup"}

2、创建链路聚合
2.1、创建team0设备和team0会话

[root@localhost ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"} }'

查看创建好的team0会话

[root@localhost ~]# nmcli connection show

2.2、修改team0会话的IP地址和网关.

[root@localhost ~]# nmcli connection modify team0 ipv4.addresses 192.168.171.150/24
[root@localhost ~]# nmcli connection modify team0 ipv4.gateway 192.168.171.1

2.3、更改IP地址获取方式为手动

[root@localhost ~]# nmcli connection modify team0 ipv4.method manual

查看修改后的team0会话

[root@localhost ~]# nmcli connection show team0 | grep method

2.4、添加设备到team0

[root@localhost ~]# nmcli connection add type team-slave con-name team0-slave1 ifname eth1 master team0
[root@localhost ~]# nmcli connection add type team-slave con-name team0-slave2 ifname eth2 master team0

2.5、激活从设备

[root@localhost ~]# nmcli connection up team0-slave1
[root@localhost ~]# nmcli connection up team0-slave2

激活主设备

[root@localhost ~]# nmcli connection up team0

2.6、查看启动后的team0状态

[root@localhost ~]# teamdctl team0 state
[root@localhost ~]# ip add
...
20: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:0c:29:1e:51:6f brd ff:ff:ff:ff:ff:ff
inet 172.16.3.40/24 brd 172.16.3.255 scope global team0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe1e:516f/64 scope link
valid_lft forever preferred_lft forever

3、检测聚合:
停用一个从设备会话来检验效果,命令如下:

[root@localhost ~]# nmcli connection down team0-port1

测试分别停一个端口的变化/ 两个端口都停掉的变化/在停掉一个真实物理网卡的变化

两个端口都开着:

[root@system1 ~]# teamdctl team0 state
setup:
runner: activebackup
ports:
eth1
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
eth2
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: eth1

关闭一个接口,检测聚合是否成功:

[root@system1 ~]# nmcli connection down team0-slave1
Connection 'team0-slave1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/32)
[root@system1 ~]#
[root@system1 ~]# teamdctl team0 state
setup:
runner: activebackup
ports:
eth2
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: eth2

关闭两个接口,检测聚合是否成功:

[root@system1 ~]# nmcli connection down team0-slave2 
Connection 'team0-slave2' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/33)
[root@system1 ~]# teamdctl team0 state
setup:
runner: activebackup
runner:
active port:

4、检测聚合链路的连通性

[root@system1 ~]# ping 172.16.3.40
PING 172.16.3.40 (172.16.3.40) 56(84) bytes of data.
64 bytes from 172.16.3.40: icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from 172.16.3.40: icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from 172.16.3.40: icmp_seq=3 ttl=64 time=0.054 ms
^C
--- 172.16.3.40 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.044/0.050/0.054/0.009 ms

在这还可以ping通原因是172.16.3.0/24 段的地址都可以ping通。
#停用一个从设备真实网卡来检验效果

[root@localhost ~]# nmcli device disconnect eth0

创作者:Eric· Charles