Bond(也称为网络绑定或链路聚合)是一种将多物理接口经过绑定形成一个逻辑接口,主要是为了提高数据报文的高可用和高吞吐量。目前bond有七种绑定模式,可以根据自己的业务模型去选择合适的bond类型。以下是Bond的七种模式解释及配置示例:
Bond七种模式解释
- Mode 0 - Balance-RR(轮询模式)
- 原理:数据包按照轮询的方式依次发送到每个接口,实现负载均衡,每个接口都有相同的mac
- 优点:增加网络吞吐量,另外也会增加高可用
- 缺点:不提供冗余性,交换机需要配置trunking。
- 适用场景:报文无冗余,并在存在数据包顺序问题,例如流媒体服务
- Mode 1 - Active-Backup(主备模式)
- 原理:主备模式,可以多网卡bond,只有一个网卡传输数据,备网卡均处于就绪状态,在主网卡出故障时接管数据传输任务,接管任务时仍使用原来主网卡的mac,避免切网卡导致网络中断
- 优点:高可用,提供冗余。
- 缺点:端口利用率低,浪费一个网卡的性能。
- 适用场景:需要高可用性的场景。
- Mode 2 - Balance-XOR(平衡异或模式)
- 描述:基于源目的mac、传输层协议和端口选择传输的端口,两个口均处于工作中。
- 优点:提供负载均衡。
- 缺点:需要交换机支持链路聚合。
- 适用场景:需要负载均衡且交换机支持链路聚合的环境。
- Mode 3 - Broadcast(广播模式)
- 描述:将所有数据包发送到所有接口,所有网卡mac一致。
- 优点:实现广播传输,保证了网络的可靠性。
- 缺点:浪费带宽,可能会导致网络阻塞
- 适用场景:需要高可靠性但不介意带宽浪费的场合,如金融行业。
- Mode 4 - 802.3ad(LACP模式)
- 描述:使用LACP协议动态协商,数据传输时使用hash策略,可基于源目的mac,传输层ip端口hash。
- 优点:提供负载均衡和高可用,遵循标准协议。
- 缺点:需要交换机支持LACP。
- 适用场景:交换机支持LACP并且需要高可用和高带宽的场景
- Mode 5 - Balance-TLB(自适应传输负载均衡模式)
- 描述:根据网卡当前的负载情况动态调整,使其能够负载均衡
- 优点:提供传输方向的负载均衡,不需要交换机支持。
- 缺点:对于数据接收方不能有负载均衡
- Mode 6 - Balance-ALB(自适应负载均衡模式)
- 描述:与mode5类似,不同的是在接收端也支持负载均衡
- 优点:在传输和接收方向上都实现负载均衡,不需要交换机特殊支持。
配置示例
以下是在Linux系统中配置Bond模式的示例,步骤类似,但是配置可能因Linux发行版和版本而有所不同。以下示例基于ctyunos2发行版。
1. 配置Bond0(Balance-RR模式)
创建或编辑Bond接口配置文件
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
ONBOOT=yes
BONDING_MASTER=yes
BOOTPROTO=static
BONDING_OPTS="mode=6 miimon=100"
MTU=1500
IPADDR=192.168.1.101
NETMASK=255.255.255.0
为每个物理网络接口创建配置文件
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
TYPE=Ethernet
DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
MTU=1500
EOF
对eth1也进行类似配置。然后重启网络生效
2.配置Bond1(Active-Backup模式)
配置过程与Balance-RR模式类似,但Bond接口配置文件中的BONDING_OPTS
应设置为"mode=1 miimon=100"
。
3.配置Bond4(802.3ad LACP模式)
创建或编辑Bond接口配置文件
vi /etc/sysconfig/network-scripts/ifcfg-bond1
BONDING_OPTS="miimon=100 mode=802.3ad xmit_hash_policy=layer3+4"
TYPE=Bond
BONDING_MASTER=yes
NM_CONTROLLED=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPADDR=<ip 地址>
NETMASK=<子网掩码>
NAME=bond1
DEVICE=bond1
ONBOOT=yes
MTU=9000
cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
NAME=eth0
DEVICE=eth0
ONBOOT=yes
MASTER=bond1
SLAVE=yes
对eth1也进行类似配置。然后重启网络生效