bond绑定

一.传统的bond方式

① mode=0 ,(round-robin)模式 (平衡轮询策略)
特点:数据包以此传输(第一个包走 eth0,第二个包走 eth1,一直循环到结束)此模式提供负载平衡和容错能力。
缺点:我们知道一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降
必要条件:需要交换机支持

②mode=1,active-backup模式(主-备份策略)
特点:只有一个网卡设备处于活动状态,当一个宕掉另一个网卡马上由备切成主。
mac地址是外部可见的,从外面看开bond的mac地址是唯一的。提供了容错能力
缺点:资源利用率低,只有一个接口处于工作状态,1/N的利用率

③mode=2,即:(balance-xor) XOR policy(平衡策略)
④mode=3,即:broadcast(广播策略)

⑤mode=4,(IEEE 802.3ad 动态链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。将多个slave工作在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略
必要条件:
条件1:ethtool支持获取每个slave的速率和双工设定
条件2:需要交换机开启lacp
条件3:配置为主动(active)模式

⑥mode=5,(适配器传输负载均衡)
特点:不需要任何特别的switch(交换机)支持的通道bonding。
在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
必要条件:ethtool支持获取每个slave的速率。

⑥mode=6,(适配器适应性负载均衡)
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。而且不需要任何switch(交换机)的支持。
在这里插入图片描述


二、配置bond

1.实验环境:centos 7.2

物理网口:eno16777736,eno33554984
绑定后虚拟口:bond0
IP地址:192.168.0.111
网关:192.168.0.1
掩码:255.255.255.0
DNS:218.85.157.99

2.查看并加载bound

[root@localhost ~]# modprobe  bonding  
[root@localhost ~]# lsmod|grep bonding           
bonding               132885  0 

加载成功后#ip add查看会多出bond0网卡
在这里插入图片描述

3、 需要关闭NetworkManager服务

[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager

4、配置bond0网卡

#vim /etc/sysconfig/network-script/ifcfg-bond0
BOOTPROTO=static
DEVICE=bond0
TYPE=Bond
ONBOOT=yes
USERCTL=no				//USERCTL:是否允许普通用户控制此设备
IPADDR=192.168.0.222
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=218.85.157.99
NM_CONTROLLED=no		//NetworkManger服务的参数,配置修改后无重启立即生效
BONDING_MASTER=yes	//定义此网卡为bond主
BONDING_OPTS="miimon=100 mode=6"      //配置bonding驱动

4.1 也可使用配置文件定义

# vi /etc/modprobe.d/bond.conf  //没有的话手动创建
# cat /etc/modprobe.d/bond.conf 
alias bond0 binding
options bond0 miimon=100 mode=6   //miimon是用来进行链路监测检查的间隔时间,单位是ms

在这里插入图片描述

5、配置两个slave网卡

#vim /etc/sysconfig/network-script/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTPO=none
#DEFROUTE=yes
#PEERDNS=yes
#PEERROUTES=yes
NAME=eno16777736
DEVICE=eno16777736
ONBOOT=yes
MASTER=bond0		 //认定bond主为bond0  
SLAVE=yes			//是否加入至bond0组中起作用	
USERCTL=no

在这里插入图片描述


#vim /etc/sysconfig/network-script/ifcfg-eno33554984
TYPE=Ethernet
BOOTPROTPO=none
NAME=eno33554984
DEVICE=eno33554984
ONBOOT=yes
MASTER=bond0
SLAVE=yes

在这里插入图片描述

6、查看bonding的状态
[root@localhost ~]# cat /proc/net/bonding/bond0
在这里插入图片描述

7、测试
通过在vmware上断开eno33554984网卡连接,此时长ping就会出现一个丢包。
原因:系统自动切换网卡
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
8、删除bond0
删除网卡配置文件ifcfg-bond0
恢复物理网卡配置文件ifcfg-eno16777736ifcfg-eno33664984
卸载模块:rmmod bonding
重启网络:systemctl restart network

问题:
在linux系统中将slave的某张网卡ifdown eno16777736 关闭后,这时的bond0就完全不工作了。出现ping不通的情况
在vmware上将网卡断开连接,就能实现实验效果。不懂这是为什么


二、NetworkManager服务的nmcli方式team 网卡绑定配置 实验未成功
(1)查看网络设备状态
在这里插入图片描述
(2)查看网络连接状态
在这里插入图片描述
(3)创建team0(也就是bond接口)
用 nmcli 命令为网络组接口创建一个连接。

# nmcli con add type team con-name CNAME ifname INAME  [config JSON]
CNAME:表示代连接名称
INAME:表示接口名称
JSON:表示指定所使用的处理器(runner)
JSON语法格式:'{"runner":{"name":"METHOD"}}'
METHOD 是以下的其中一个:broadcast、activebackup、roundrobin、loadbalance 或者 lacp。

下面以roundrobin为例

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

在这里插入图片描述
此时#ip add查看 网卡设备多出个 team0
在这里插入图片描述
设置team0的ip,gateway,dns

[root@localhost ~]# nmcli con modify team0 ipv4.address "192.168.0.66/24" ipv4.gateway "192.168.0.1"
[root@localhost ~]# nmcli con modify team0 ipv4.dns "218.85.157.99"

在这里插入图片描述
注意: 掩码的写法只能写成/xx,nmcli 里没有netmask选项
在这里插入图片描述

设置team0的属性为手动(manual)

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

添加slave网卡

[root@localhost ~]# nmcli con add type team-slave con-name team-port1 ifname eno16777736 master team0
Connection 'team-port1' (48a8da90-0b0a-4894-81ee-9d8117b44590) successfully added.
[root@localhost ~]# nmcli con add type team-slave con-name team-port2 ifname eno33554984 master team0
Connection 'team-port2' (1e4a688f-1e5c-4bcc-9016-c5793b540b25) successfully added.

在这里插入图片描述

启动team0网口,并检查

[root@localhost ~]# nmcli con up team0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

在这里插入图片描述
在这里插入图片描述


常见故障:
启动team0网口,team0仍旧为down
在这里插入图片描述

排错:
1.检查网络连接状态,发现team-port1和team-port2以及team0没有连接到网卡设备
在这里插入图片描述

2.删除eth0和eth1的连接
在这里插入图片描述

3再次查看发现team0及slave接口正常连接到设备
在这里插入图片描述
重启网卡
#systemctl restart network

4.查看team0接口状态并测试连通性在这里插入图片描述
注意测试中出现以下状况是由于交换机端没有做端口聚合配置造成
在这里插入图片描述


team 参考文档
https://blog.51cto.com/zaa47/1925126

猜你喜欢

转载自blog.csdn.net/qq_37126850/article/details/111029874
今日推荐