前言
在 linux 中, Rhel7 之前都是使用 bond 机制
来实现多网卡绑定同一个 IP 地址,来对网络提供访问,并按不同的模式来负载均衡或者轮回接替管理处理数据。而到了 Rhel7 之后,提供了一种强大的工具, nmcli 工具命令,使用此工具,将会根据命令参数的配置来重新生成特定的配置文件来供网络接口使用,方便而又灵活。在 Rhel7中,不再使用bond 机制定义,而是使用网络组 team 机制
,把 team 组当作一个设备
示例
接下来我们直接做一个简单实验
先添加两张网卡
查看网卡及其绑定信息:nmcli device
,nmcli connection
很显然,ens33
是我们原有的网卡,并且已成功连接,而 ens37
和 ens38
是我们刚刚添加的网卡,我们可以对其进行手动配置
现在,我们需要查看Team网络组的示例文件并选择链路聚合模型
路径:/usr/share/doc/teamd/example_configs/
,我们 cd 过去看一下
我们选择第一个文件,并截取其中的一部分内容:cat activebackup_arp_ping_1.conf
截取如下:"runner": {"name": "activebackup"}
(没有逗号)
添加 Team 设备及会话:nmcli connection add ifname team0 con-name team0 type team config '{"runner": {"name": "activebackup"}}'
我们为其手动配置 IP 地址(这里也可以 dhcp 自动获取):nmcli connection modify team0 ipv4.method manual ipv4.addresses 192.168.32.168/24 ipv4.gateway 192.168.32.1 ipv4.dns 114.114.114.114
我们已经成功为其配上 168 的地址(我随便配的)
添加设备到 team0 :(team0-port1 也是我随便写的)
nmcli connection add type team-slave ifname ens37 con-name team0-port1 master team0
nmcli connection add type team-slave ifname ens38 con-name team0-port2 master team0
激活从设备:nmcli connection up team0-port1
nmcli connection team0-port2
激活主设备:nmcli connection up team0
查看状态:teamdctl team0 state
可以看到,当前活跃的设备是 ens37
我们用另一台设备 ping 一下 168(本机)
这时,我们关闭 ens37:nmcli connection down team0-port1
此时工作的就只剩下 ens38,我们看一下另一台主机是否还可以 ping 通
很显然,依然可以,这就是链路聚合的优点
最后一步,删除Team0
断开连接:nmcli connection down team0
删除team0:nmcli connection delete team0
nmcli connection delete team0-port1
nmcli connection delet team0-port2