bonding

1、网卡bonding简介
bonding:linux操作系统网卡绑定技术,可以把多张物理网卡通过内核驱动虚拟成一个虚拟的逻辑网卡,实现本地网卡的冗余,能够提升网络吞吐量、实现网络冗余、负载均衡等功能。
网卡绑定的目的:提高网卡的吞吐量,增强网络的高可用,同时也能实现负载均衡。

2、bond的七种模式
(1)Mode=0(balance-rr)
平衡轮询策略,轮流在每一个slave网卡上发送数据包,提供负载均衡和容错能力,需要交换机设置聚合模式,将多个网卡绑定为一条链路。
(2)Mode=1(active-backup)
主备模式,只有一个slave被激活,只有当active的slave的接口down时,才会激活其它slave接口。冗余性高,但链路利用率低。
(3)Mode=2(balance-xor)
Hash负载分担(异或平衡策略),基于指定的传输HASH策略传输数据包,和交换机的聚合强制不协商方式配合。
(4)Mode=3(broadcast)
广播策略,包从所有网卡发出,具有容错能力,这个不均衡,只有冗余机制,浪费资源,适合金融行业,和交换机的聚合强制不协商方式配合。
(5)Mode=4(802.3ad)
IEEE802.3ad动态链接聚合和交换机的聚合LACP方式配合,创建一个聚合组,它们共享同样的速率和双工设定。
(6)Mode=5(balance-tlb)
自适应传输负载均衡:根据每个slave的负载决定从哪个接口发送数据包,从当前接口接收数据包。如果接收的slave接口故障,其它slave接口将接管它的mac地址继续接收。
(7)Mode=6(balance-alb) 在5的tlb基础上增加了rlb。适配器负载均衡模式并行发送,并行接收数据包

常用的有三种
mode=0:平衡负载模式,有自动备援,但需要Switch支持及配置。
mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
mode=4:如果交换机及网卡都确认支持802.3ab,则实现负载均衡时尽量使用mode 4以提高系统性能。
mode=6:平衡负载模式,有自动备援,不需要Switch支持及配置。

如何选择:
如果业务流量不超过单个网卡的带宽,使用mode1 主备模式最好,因为负载均衡需要进行额外计算,对系统性能有损耗。
如果交换机不支持聚合,可以使用mode5、mode6模式。
如果交换机及网卡都确认支持802.3ab,则实现负载均衡时尽量使用mode 4以提高系统性能。

3、bond Mode4 配置

参数说明:
miimon和arp: miimon检测链路层的状态单位ms,arp网络层的状态检测,可以直接arp网关。
xmit_hash_policy:分发策略定义
layer2:使用二层帧头作为计算分发出口的参数。
layer2+3:在layer的基础上增加了三层的ip报头信息,计算量增加,负载更加均衡。
layer3+4:可以形成一个个端口到端口的流,负载更加均衡。通过TCP及UDP端口及其IP地址进行HASH计算。

# cd /etc/sysconfig/network-scripts
# cat ifcfg-bond0
DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NETMASK=255.255.255.0
GATEWAY=172.16.1.1
DNS1=8.8.8.8
IPADDR=172.16.1.3
BONDING_OPTS=”mode=4 miimon=100 xmit_hash_policy=layer3+4 lacp_rate=fast”

# cat ifcfg-em1
TYPE=Ethernet
BOOTPROTO=none
NAME=em1
UUID=”a44ef156-28e6-4c74-be9f-1cdd00574c30″
DEVICE=em1
ONBOOT=yes
MASTER=bond0
USERCTL=no
SLAVE=yes

# cat ifcfg-em2
TYPE=Ethernet
BOOTPROTO=none
NAME=em2
UUID=198ff582-98f5-47cb-acf9-768f6f1ca8c7
DEVICE=em2
ONBOOT=yes
MASTER=bond0
USERCTL=no
SLAVE=yes
……

vlan配置
# cat /etc/sysconfig/network-scripts/ifcfg-vlan10
DEVICE=vlan10
ONBOOT=yes
BOOTPROTO=none
PHYSDEV=bond1
VLAN=yes
USERCTL=no
IPADDR=172.16.1.3
NETMASK=255.255.255.0

路由配置
Centos7的路由文件。
# cat /etc/sysconfig/network-scripts/route-bond0
10.0.0.0/8 via 172.16.1.1 dev bond0
172.16.0.0/12 via 172.16.1.1 dev bond0
Centos6的路由文件。
# cat /etc/sysconfig/static-routes
any net 10.0.0.0/8 gw 172.16.1.1
any net 172.16.0.0/12 gw 172.16.1.1

交换机配置参考网络区帖子。