网卡bond模式是通过把多个物理网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,具体的功能取决于采用的哪种模式。
- bond的七种模式介绍:
1、mode=0(balance-rr)(平衡抡循环策略)
2、mode=1(active-backup)(主-备份策略)
3、mode=2(balance-xor)(平衡策略)
4、mode=3(broadcast)(广播策略)
5、mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合)
6、mode=5(balance-tlb)(适配器传输负载均衡)
7、mode=6(balance-alb)(适配器适应性负载均衡)
它们其中具体的信息,可以查看这篇文章上的说明,非常详细https://blog.51cto.com/linuxnote/1680315。
下面来说一下怎么实现服务器网口聚合功能
- 服务器侧配置(以下主要配置是mode 1即端口主备模式)
1、创建bond0口,其mode为1。(active-backup)(主-备份策略)
# nmcli connection add type bond con-name bond0 ifname bond0 mode 1
备注:会创建一个名为bond0的口,在路径/etc.sysconfig/network-scripts/就是ifcfg-bond0这个文件。
2、将2个网口enp6s0f0、enp6s0f1加到bond0里去。
#nmcli connection add type bond-slave con-name bond0-1 ifname enp6s0f0 master bond0
#nmcli connection add type bond-slave con-name bond0-2 ifname enp6s0f1 master bond0
备注:会分别创建名为bond0-1和bond0-2的二个文件,在路径/etc/sysconfig/network-scripts/就是ifcfg-bond0-1与ifcfg-bond0-2这二个文件。
3、修改路径/etc/sysconfig/network-scripts/下ifcfg-bond0、ifcfg-bond0-1、ifcfg-bond0-2、ifcfg-enp6s0f0和ifcfg-enp6s0f1这些文件。
1)ifcfg-bond0
将原先里面的配置删的只留下下面配置:
DEVICE=bond0
TYPE=bond
BONDING_MASTER=yes
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.2
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
(备注:经实际验证,BONDING_OPTS='miimon=100 mode=1' 是命令错误的)
说明:miimon是用来进行链路监测的,其原理是检测网上的链路状态,一般将miimon值设为100,表示系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路。mode为绑定的模式,1为主-备模式。
BONDING_OPTS='miimon=100 mode=1' #该条命令是错误的,使用之后,拔掉一根网线,网络会继续丢包,重新插上也还是会继续丢包
需要将命令修改成:
BONDING_OPTS='mode=1 miimon=100'
备注:若不加该条命令:BONDING_OPTS='mode=1 miimon=100' ,后面轮流插拔网线,也不会丢包(希望有人可以解答是什么原因)
2)ifcfg-bond0-1不用修改,默认会出现下面配置:
TYPE=Ethernet
NAME=bond0-1
UUID=XXXXXXXXXXXXXXXXX
DEVICE=enp4s0f0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
3)ifcfg-bond0-2也不用修改,默认会出现下面配置:
TYPE=Ethernet
NAME=bond0-2
UUID=YYYYYYYYYYYYYYYYYYYY
DEVICE=enp4s0f0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
4)ifcfg-enp6s0f0
TYPE=Ethernet
BOOTPROTO=none #原先是dhcp,要修改成 none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp4s0f0
UUID=AAAAAAAAAAAAAAAAAAAAA
DEVICE=enp6s0f0
ONBOOT=yes #原先是no,要修改成yes
MASTER=bond0
SLAVE=yes #这一行是自己添加上的
5)ifcfg-enp6s0f1
TYPE=Ethernet
BOOTPROTO=none #原先是dhcp,要修改成 none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp4s0f0
UUID=BBBBBBBBBBBBBBBBBB
DEVICE=enp6s0f1
ONBOOT=yes #原先是no,要修改成yes
MASTER=bond0
SLAVE=yes #这一行是自己添加上的
上面配置好之后重启网络服务,会显示如下信息就说明服务启动了,可以测试将任意一个网线拔出再插回,看网络传输是否有问题。
最后实际测试所有的mode类型,如下图所示