一、网卡绑定模式
模式 | 类型 | 特点 |
mode0 | round-robin(平衡轮询策略) | 基于per packet方式,轮询往每条链路发送报文。提供负载均衡和容错的能力,当有链路出问题,会把流量切换到正常的链路上。交换机端需要配置聚合口。 |
mode1 | active-backup(主-备份策略) | 一个端口处于主状态 ,一个处于从状态,所有流量都在主链路上处理,从链路不会有任何流量。当主端口down掉时,从端口接手主状态。不需要交换机端支持。 |
mode2 | balance-xor(平衡策略) | 该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。交换机端需要配置聚合口。 |
mode3 | brodcast(广播策略) | 在每个slave接口上传输每个数据包,适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。 |
mode4 | IEEE 802.3ad(动态链接聚合) | 802.3ad模式是IEEE标准,因此所有实现了802.3ad的对端都可以很好的互操作。802.3ad 协议包括聚合的自动配置,因此只需要很少的对交换机的手动配置(要指出的是,只有某些设备才能使用802.3ad)。802.3ad标准也要求帧按顺序(一定程度上)传递,因此通常单个连接不会看到包的乱序。 |
mode5 | Balance-tlb(适配器传输负载均衡) | 不需要交换机支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。 |
mode6 | Balance-alb(适配器适应性负载均衡) | 模式包含了上一个模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何交换机的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。 |
日常生产环境中常用的模式是mode4。
二、常用配置项
# primay 指定哪个slave成为主设备,只针对mode-1
# updelay 指定当发现一个链路恢复时,在激活该链路之前的等待时间,以毫秒计算。
# arp_interval 指定ARP链路监控频率,单位是毫秒(ms)。
# arp_ip_target 指定一组IP地址用于ARP监控的目标,它只在arp_interval > 0时有效。
# downdelay 指定一个时间,用于在发现链路故障后,等待一段时间然后禁止一个slave,单位是毫秒(ms)。
# lacp_rate 指定在802.3ad模式下,我们希望的链接对端传输LACPDU包的速率。有如下选项:
# 1)slow 或者 0 请求对端每30s传输LACPDU
# 2)fast 或者 1 请求对端每1s传输LACPDU
# 3)缺省值是slow
# max_bonds 为bonding驱动指定创建bonding设备的数量。
# miimon 指定MII链路监控频率,单位是毫秒(ms)。
# mode 指定bonding的策略。
三、bond0
1)关闭Networking服务
[root@localhost network-scripts]# systemctl stop NetworkManager
2)配置ens33
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
UUID=8bf9b3d0-2885-4740-927a-c6e03ebd5e41
DEVICE=ens33
ONBOOT=yes
MASTER=bond0
SLAVE=yes
3)配置ens37
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
NAME=ens37
UUID=55e27294-0578-364d-acc6-1077fd83cb21
DEVICE=ens37
ONBOOT=yes
MASTER=bond0
SLAVE=yes
4)配置bond0
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-bond0
TYPE=bond
BOOTPROTO=none
DEFROUTE=yes
NAME=bond4
DEVICE=bond4
ONBOOT=yes
IPADDR=192.168.56.136
NETMASK=255.255.255.0
GATEWAY=192.168.56.2
DNS1=8.8.8.8
BONDING_MASTER=yes
USERCTL=no
BONDING_OPTS="mode=0 miimon=100 primary=ens37 updelay=60000"
# 设置自动加载配置
[root@localhost network-scripts]# vi /etc/modprobe.d/bonding.conf
alias bond0 binding
options bond0 mode=0 miimon=100 primary=ens37 updelay=60000
5)开启混杂模式
[root@localhost network-scripts]# ip link set ens33 promisc on
[root@localhost network-scripts]# ip link set ens37 promisc on
# 设置开机自动将网卡设为混杂模式
[root@localhost network-scripts]# vi /etc/rc.local
ip link set ens33 promisc on
ip link set ens37 promisc on
6)测试
重启服务,分别移除不同的网络适配器,验证bond的高可用。
四、bond1
1)配置ens33
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
UUID=8bf9b3d0-2885-4740-927a-c6e03ebd5e41
DEVICE=ens33
ONBOOT=yes
MASTER=bond4
SLAVE=yes
2)配置ens37
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
BOOTPROTO=none
NAME=ens37
DEVICE=ens37
UUID=55e27294-0578-364d-acc6-1077fd83cb21
ONBOOT=yes
MASTER=bond4
SLAVE=yes
3)配置bond1
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-bond1
TYPE=bond
BOOTPROTO=none
DEFROUTE=yes
NAME=bond4
DEVICE=bond4
ONBOOT=yes
IPADDR=192.168.56.136
NETMASK=255.255.255.0
GATEWAY=192.168.56.2
DNS1=8.8.8.8
BONDING_MASTER=yes
USERCTL=no
BONDING_OPTS="mode=1 miimon=100 primary=ens37 updelay=60000"
# 设置自动加载配置
[root@localhost network-scripts]# vi /etc/modprobe.d/bonding.conf
alias bond1 binding
options bond1 mode=1 miimon=100 primary=ens37 updelay=60000
4)测试
分别断开网卡,使用ping命令测试网络连通性