在linux 6中使用的是bonding技术双网卡绑定技术,而在linux 7中使用了teaming技术,其实在linux7中双网卡绑定既能使用teaming也可以使用bonding,这里推荐使用teaming技术,方便与查看和监控。
Teaming功能主要由kernel里的team driver、用来作为通讯接口的libteam lib和userspace的teamd 三部分组成,teaming也支持不同的工作模式,相比bonding 来说少了balance-xor和balance-alb这两种模式的支持,其中的balance-xor完全可以通过lacp代替,另外一种balance-alb功能据说以后teaming也会支持。
mode 0 :load balancing(round-robin)模式,需要交换机端支持,支持多端口负载均衡,支持端口冗余,slave接口的mac相同;
mode 1:active-backup模式,最大支持两个端口,一主一备,同一时间只有一块网卡工作,不支持抢占;
mode 2:balance-xor 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)
mode 3:broadcast 表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合;
mode 4:采用IEEE802.3ad方式的动态协商机制聚合端口,需要交换机开启lacp并配置为主动(active)模式
mode 5:(balance-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave;
mode 6:(balance-alb) 在5的tlb基础上增加了rlb,类似mode 1的主备模式,不常用。5和6不需要交换机端的设置,网卡能自动聚合。4需要支持802.3ad。0,2和3理论上需要静态聚合方式
但实测中0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。
实质上teaming的目的就是要把网卡绑定的功能从kernel里搬出来,把这些功能放到userspace来解决,保持kernel的简洁,让它只做kernel应该做的事情。
在本文中介绍rhel7.3两种最常见的双网卡绑定模式:
(1) activebackup - 主备模式:
一个网卡处于活动状态,另一个处于备份状态,所有流量都在主链路上处理,当活动网卡down掉时,启用备份网卡。
(2) roundrobin - 轮询模式:
所有链路处于负载均衡状态,这种模式的特点增加了带宽,同时支持容错能力,网卡上进行轮询,即第一个数据包走一张网卡,第二个数据包走第二张网卡,依次轮询。
下面以activebackup - 主备模式为例来做下示例配置:
1、进入系统,查看服务器网卡配置情况。
cd /etc/sysconfig/network-scripts/
ls
# 共有ens3及ens8两块网卡共4个端口。决定为两个网段分别配置双网卡绑定,业务网绑定ens3f0和ens8f0两个端口,私网绑定ens3f1和ens8f1两个端口。
# 查看网卡连接信息:
nmcli connection show
#查看物理网卡信息:
nmcli dev
2、我们可以使用nmcli命令进行网卡绑定,具体命令如下:
# 配置业务网主接口team0,设置模式为activebackup
nmcli con add type team con-name team0 ifname team0 config‘{“runner”: {“name”: ”activebackup”}}’
# 设置IP地址,子网掩码,网关
nmcli con mod team0 ipv4.addresses 11.11.205.145/24 ipv4.gateway 11.11.205.158 ipv4.method manual connectio.autoconnect yes
# 添加绑定到team0的端口ens3f0
nmcli con add type team-slave con-name team0-port1 ifname ens3f0 master team0
# 添加绑定到team0的端口ens8f0
nmcli con add type team-slave con-name team0-port2 ifname ens8f0 master team0
# 重新载入连接配置
nmcli con reload
# 启动team0
nmcli con up team0
3、查看状态,使用teamdctl命令进行验证
# 查看team0状态
teamdctl team0 state
4、检测发现状态都正常
5、如果需要尝试换成roundrobin模式,则可以进入team0和team1的配置文件,修改模式为roundrobin,其他配置不变。
提示:在做网卡绑定的时候,如果发现物理网卡总是无法绑定到team0,请检查该物理网卡是否处于up状态。
6、其他配置说明
#删除掉没有添加成功team0-port1 team0-port2两张网卡
nmcli connection delete team0-port1
nmcli connection delete team0-port2
# 删除两张物理网卡ens33,ens38
nmcli connection delete ens33 ens38
# 再次添加team0-port1 team0-port2两张网卡
nmcli connection add type team-slave con-name team0-port1 ifname ens33 master team0
nmcli connection add type team-slave con-name team0-port2 ifname ens38 master team0
总结:
#知道两张物理网卡连接名则:
nmcli connection add type team ifname team0 con-name team0 config '{"runner":{"name":"activebackup"}}'
nmcli connection mod team0 ipv4.addresses 192.168.1.20/24 ipv4.gateway 192.168.1.1
nmcli connection modify team0 ipv4.method manual
nmcli connection add type team-slave con-name team0-port1 ifname ens33 master team0
nmcli connection add type team-slave con-name team0-port2 ifname ens38 master team0
systemctl restart network
teamdctl team0 state