1、bond的基本原理:

  bond技术是将多块物理网卡绑定同一IP地址对外提供服务,通过不同的模式配置,从而达到高可用、负载均衡及链路冗余等效果。

2、bond的模式:

bond总共有7种模式,分别是mode 0 -- mode 6

3、下面分别做这7种模式的网卡绑定,以及实际流量情况和对应交换机配置,先介绍一下测试服务器情况,真实物理机DELL R620,双万兆网口,对接交换机为华为S6720,创建bond工具 nmcli(centos自带),在线流量压力测试网站:超新星-免费压力测试

①mode 0 (round-robin-轮询策略)

nmcli connection add type bond ifname bond0 mode 0

nmcli connection add type bond-slave ifname p2p1 master bond0

nmcli connection add type bond-slave ifname p2p1 master bond0

(注意:p2p1、p2p2是我这台测试机的真实网卡名称,不同机器应该以真实网卡名为准)

上面3条命令成功之后,在 /etc/sysconfig/network-scripts 目录下会多出3个网卡文件

 然后将IP 配置在 ifcfg-bond-bond0文件下,重启网络(systemctl restart network)bond做成功如下。

 还有一个点要注意,mode 0 模式下,交换机端口同样需要做链路聚合配置配置如下

 mode 0 模式 服务器2个网卡是轮询策略,也就是流量会负载均衡,现在我利用流量压力测试看下端口流量情况(我看的是交换机端口)

查看bond0模式为 load balancing 

 利用压力测试网站对我这台服务器进行流量压力测试(我这台服务器配置的公网IP,所以可以用这个网站进行压测,其他同学可以找下ddos压力测试工具进行测试),如下是测试的端口流量是负载均衡的。

mode 0 模式 下,当其中一条链路down 了 还是可以用单条链路进行通信。

② mode 1 (active-backup 主备策略)

nmcli connection add type bond ifname bond0 mode 1

nmcli connetction add type bond-slave ifname p2p1 master bond0

nmcli connetction add type bond-slave ifname p2p2 master bond0

上面3条命令成功后,同样会生成3个新的网卡文件。

 在ifcfg-bond-bond0-1配置IP,重启网络,mode 1 模式的bond0就成功了。

 

 

 mode 1 模式的bond ,对接的交换机是不需要做链路聚合的,下面做流量压力测试,明显可以看出2个端口为一主一备。

 ③ mode 2 (load balancing 异或策略) balance-xor

nmcli connection add type bond ifname bond0 mode 2

nmcli connetction add type bond-slave ifname p2p1 master bond0

nmcli connetction add type bond-slave ifname p2p2 master bond0

一样的操作配置完IP重启网络之后,mode 2 模式的bond就做好了,mode 2 模式的bond交换机端同样要做链路聚合

从流量压力测试明细可以看出双网口是负载均衡的。

 mode 2 的bond的特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力。

④ mode 3 (broadcast)(广播策略)

nmcli connection add type bond ifname bond0 mode 3

nmcli connetction add type bond-slave ifname p2p1 master bond0

nmcli connetction add type bond-slave ifname p2p2 master bond0

 该模式的特点是:所有包从所有网络接口发出,这个不均衡,只有冗余机制。对接交换机同样需要配置链路聚合。

压力测试如下

 ⑤ mode 4 (IEEE 802.3ad 动态链接聚合)

nmcli connection add type bond ifname bond0 mode 4

nmcli connetction add type bond-slave ifname p2p1 master bond0

nmcli connetction add type bond-slave ifname p2p2 master bond0

 mode 4 模式下的bond 支持802.3ad协议,对接交换机也必须支持聚合LACP方式,否则不能正常通信,要求所有设备在聚合操作时,要在同样的速率和双工模式,除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。

 压力测试流量负载如下

 ⑥ mode 5 (balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)

nmcli connection add type bond ifname bond0 mode 5

nmcli connetction add type bond-slave ifname p2p1 master bond0

nmcli connetction add type bond-slave ifname p2p2 master bond0

mode 5 模式的bond是不需要交换机做链路聚合的,进行压力测试看下端口流量负载情况

从端口流量看出只有一个端口负载流量,这个模式的特点就是这样,在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

⑦ mode 6 (balance-alb) Adaptive load balancing(适配器适应性负载均衡)

nmcli connection add type bond ifname bond0 mode 6

nmcli connetction add type bond-slave ifname p2p1 master bond0

nmcli connetction add type bond-slave ifname p2p2 master bond0

 该模式也不需要交换机端做链路聚合,特点是,是先将eth1的端口流量跑量,再跑eth2,所以会有一个端口流量很高,另外一个端口流量很低的情况,这mode 0 模式的负载均衡存在一定的区别,下面的压力测试,之所以另外一个端口流量为0%,是因为压力测试流量不足的问题,不足以打满第一个端口。

 以上就是7中模式的bond的功能和特点,实际场景如何应该应根据本身业务情况进行选择。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐