Bond口原理和配置。
一,Bond口的原理和模式:
mod=0 ,即:(balance-rr)Round-robin policy(平衡轮循环策略)
第一个包走eth0,第二个包走eth1。该模式下所有网卡的mac-address相同。此模式提供负载平衡和容错能力,交换机需做端口绑定。
mod=1, 即: (active-backup)Active-backuppolicy(主-备份策略)
只有一个网卡在负载,所有网卡的mac-address相同,无需交换机支持
mod=2,即:即:(balance-xor)XOR policy(平衡策略)
本模式提供负载均衡和容错的能力,交换机端口需要能配置为“port channel”。这模式是通过源和目标mac做hash因子来做xor算法来选路的。
mod=3,即:broadcast(广播策略)
本模式在每个slave接口上传输每个数据包,提供了容错能力。交换机端应该无需支持。
mod=4, 即:(802.3ad)IEEE 802.3ad Dynamic link aggregation(IEEE802.3ad 动态链接聚合)
IEEE 802.3ad 动态链路聚合。创建共享相同的速率和双工模式的聚合组。能根据802.3ad规范利用所有的slave来建立聚合链路。Salve的出站选择取决于传输的hash策略,默认策略是简单的XOR策略,而hash策略则可以通xmit_hash_policy选项加以改变。
必要条件:
条件1:ethtool支持获取每个slave的速率和双工设定
条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation
条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式
mod=5, 即:(balance-tlb)Adaptivetransmit load balancing(适配器传输负载均衡)
不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。接收的流量和发送的流量在同一个slave。
必要条件:
ethtool支持获取每个slave的速率。
mod=6,即:(balance-alb)Adaptive load balancing(适配器适应性负载均衡)
这种模式包含了mod5,但是增加了ipv4流量的负载均衡。接收负载均衡通过ARP协商实现。bonding的驱动拦截本机发出的ARP Replies(ARP回应报文),并且用bond的某一个slave的硬件地址改写ARP报文的源地址,使得本服务器对不同的设备使用不同的硬件地址。本服务器建立的连接的接收流量也是负载均衡的。当本机发送ARP Request时,bonding驱动通过ARP报文复制并保存节点的IP信息。当从其他节点接收到ARP Reply,bonding驱动获取节点的硬件地址并且会回应一个包含绑定好的slave的硬件地址的ARP Reply给发送的节点。用ARP协商的负载均衡的有一个问题是每次用bond的硬件地址广播ARP报文,那么其他节点发送的数据全部集中在一个slave上,处理ARP更新给其他所有节点的时候,每个节点会重新学习硬件地址,导致流量重新分配。当新加入一个slave或者一个非激活的slave重新激活的时候也会导致接收流量重新分配。接收流量负载是串行(轮转)的分配在bond的一组速率最高的slave上。
当一个链路重连或者一个新的slave加入的时候,bond会重新初始化ARP Replies给所有的客户端。updelay参数的值必须等于或者大于交换机的forwarding delay,以免ARP Replies被交换机阻塞。
必要条件:
1.每个slave的基本驱动支持Ehtool获取速率状态。
2. 基本驱动支持当设备打开时重新设置硬件地址。也要求每一个slave具有唯一的硬件地址。如果curr_active_slave失败,它的硬件地址被新选上的curr_active_slave硬件地址来替换。
二,配置过程,最好使用nmcli命令来配置。
nmcli connection add con-name bond0-p1 ifname eno33554984 type bond-slave master bond0
nmcli connection add con-name bond0-p2 ifname eno50332208 type bond-slave master bond0
nmcli connection add con-name bond0 ifname bond0 autoconnect yes type bond miimon 100 mode balance-rr
nmcli connection modify bond0 ipv4.addresses 192.168.44.105/24 connection.autoconnect yes ipv4.method manual
配置文件如下:
在/etc/sysconfig/network-scripts/ 下
vim ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=bond0
UUID=cf7e1158-5778-4266-baf8-9feaf1cb1c0c
ONBOOT=yes
IPADDR0=192.168.44.105
PREFIX0=24
GATEWAY0=192.168.44.2
BONDING_OPTS="miimon=100 updelay=0 downdelay=0 mode=balance-rr"
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
vim ifcfg-bond0-p1
TYPE=Ethernet
NAME=bond0-p1
UUID=2b8000dc-5eea-456e-ace9-dd6d6619770a
DEVICE=eno33554984
ONBOOT=yes
MASTER=bond0
SLAVE=yes
vim ifcfg-bond0-p2
YPE=Ethernet
NAME=bond0-p2
UUID=76b76e5d-14cd-4cf7-9e4c-9f04f4e1e23f
DEVICE=eno50332208
ONBOOT=yes
MASTER=bond0
SLAVE=yes
通过nmcli 命令上述配置文件自动生成。