Linux网络:bond简介与配置
bond简介
Bond是Linux内核提供的一种网络驱动,它可以将多个网络接口聚合为一个逻辑接口,从而提高网络带宽、实现负载均衡和故障转移。
bond模式介绍
模式名称 | 模式编号 | 描述 | 交换机支持要求 | 常用性 |
Balance-RR(轮询模式) | 0 | 数据包依次发送到所有网络接口上,实现负载均衡。 | 需要配置静态链路聚合 mode on | 常用 |
Active-Backup(主备模式) | 1 | 只有一个接口处于活动状态,其他作为备份,活动接口故障时自动切换。 | 不需要交换机做配置,仅需要划分对应的vlan | 非常常用 |
Balance-XOR(平衡异或模式) | 2 | 根据源MAC地址和目的MAC地址的异或值来选择发送数据的接口。 | 需要配置静态链路聚合 mode on ,同时需要设置对应的balance | 较少使用 |
Broadcast(广播模式) | 3 | 所有接口都发送相同的数据包,适用于广播或多播场景。 | 需要配置静态链路聚合 mode on | 很少使用 |
802.3ad(LACP模式) | 4 | 遵循LACP协议,通过LACP协商实现链路聚合。 | 需要配置lacp动态链路聚合 mode active | 常用 |
Balance-TLB(自适应传输负载均衡模式) | 5 | 根据每个接口的负载情况动态调整数据包发送。 | 不需要 | 较少使用 |
Balance-ALB(自适应负载均衡模式) | 6 | Bond5模式的扩展,同时实现发送和接收的负载均衡。 | 不需要 | 较少使用 |
常用的模式:
模式 | 简介 |
Active-Backup(主备模式) | 因其简单和可靠性,通常用于需要高可用性的场景。 |
Balance-RR(轮询模式) | 因其简单实现负载均衡,适用于需要提高带宽的场景。 |
802.3ad(LACP模式) | 在需要遵循标准协议且交换机支持LACP的环境中广泛使用。 |
bond7种模式详细介绍
1. Mode 0 - Balance-RR(轮询模式)
模式编号:0
轮流发送数据包,实现负载均衡
不需要交换机支持
2. Mode 1 - Active-Backup(主备模式)
模式编号:1
提高网络可靠性
只有一个网络接口处于活动状态,其他接口作为备份
需要交换机支持链路聚合
3. Mode 2 - Balance-XOR(平衡异或模式)
模式编号:2
根据源目MAC地址进行负载均衡
需要交换机支持链路聚合
4. Mode 3 - Broadcast(广播模式)
模式编号:3
所有接口都发送相同的数据包
适用于需要广播或多播的应用场景
5. Mode 4 - 802.3ad(LACP模式)(常用)
模式编号:4
遵循LACP协议,实现链路聚合
需要交换机支持LACP
6. Mode 5 - Balance-TLB(自适应传输负载均衡模式)
模式编号:5
动态调整数据包发送,实现负载均衡
使用ARP协商来决定哪个接口用于发送数据包。
当需要发送数据包时,bonding驱动会检查哪个接口的负载最低,并将数据包发送到该接口。
如果目标主机发送了ARP回复,bonding驱动会记录这个接口用于将来的数据包发送。
不需要交换机支持
7. Mode 6 - Balance-ALB(自适应负载均衡模式)
模式编号:6
同时实现发送和接收负载均衡
对于发送(TX)负载均衡,Bond6使用类似于Bond5的方法,通过ARP协商来确定发送接口。
对于接收(RX)负载均衡,bonding驱动通过修改MAC地址哈希来分配接口,使得不同接口可以接收来自不同源的数据包。
Bond6还支持将多播和广播流量分散到不同的接口上。
不需要交换机支持
bond配置测试
1. 配置Mode 0 - Balance-RR(轮询模式)
背景:我这里使用ens36、ens37网卡进行实验。
1)、启动NetworkManager。
systemctl start NetworkManager
2)、创建bond。
1#创建bond网卡:[root@lsq ~]# nmcli connection add type bond ifname bond0 mode 0
Connection 'bond-bond0' (8a9f4d37-ce62-4016-aa23-ddb7c6fc5f27) successfully added.
[root@lsq network-scripts]#创建2张从卡:
[root@lsq ~]# nmcli connection add type bond-slave ifname ens36 master bond0
Connection 'bond-slave-ens33' (49e4db4f-a846-4919-85b9-daa27dac5a51) successfully
[root@lsq network-scripts]#[root@lsq ~]# nmcli connection add type bond-slave ifname ens37 master bond0
Connection 'bond-slave-ens36' (4a211e67-e219-42c3-8a75-bae9e2517a68) successfully added.
[root@lsq network-scripts]#
3)、查看bond。
#可以看到已经有了bond的配置文件
[root@lsq network-scripts]# ls -l /etc/sysconfig/network-scripts/
total 264
-rw-r--r-- 1 root root 329 May 4 14:18 ifcfg-bond-bond0
-rw-r--r-- 1 root root 125 May 4 14:19 ifcfg-bond-slave-ens36
-rw-r--r-- 1 root root 125 May 4 14:19 ifcfg-bond-slave-ens37[root@lsq network-scripts]# cd /etc/sysconfig/network-scripts/
[root@lsq network-scripts]# cat ifcfg-bond-slave-ens36
TYPE=Ethernet
NAME=bond-slave-ens36
UUID=086d97c1-9668-4ab7-90b4-2d094bf65be1
DEVICE=ens36
ONBOOT=yes
MASTER=bond0
SLAVE=yes
[root@lsq network-scripts]#
4)、修改bond配置文件:ifcfg-bond-bond0。
设置bond0
[root@lsq network-scripts]# cat ifcfg-bond-bond0
BONDING_OPTS=mode="balance-rr miimon=100"
#BONDING_OPTS="mode=0 miimon=100" #这两种写法一致,选其一即可
TYPE=Bond
BONDING_MASTER=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none #修改1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=bond-bond0
UUID=7113370c-23b6-4a51-b094-5a127090c546
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.222.199 #修改2
NETMASK=255.255.255.0 #修改3
GATEWAY=192.168.0.2 #修改4
DNS1=192.168.0.2 #修改5,可以设置,可以不设置
[root@lsq network-scripts]#
5)、查看bond生效情况。
#重启网络
[root@lsq network-scripts]# service network restart
Restarting network (via systemctl): [ OK ]
[root@lsq network-scripts]##查看bond是否生效
[root@lsq network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)Bonding Mode: load balancing (round-robin) #生效
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:85:21:dc
Slave queue ID: 0Slave Interface: ens36
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:85:21:d2
Slave queue ID: 0
[root@lsq network-scripts]#
2. Mode 1 - Active-Backup(主备模式)
在上面配置的Mode 0 - Balance-RR(轮询模式)基础上直接操作。
1)、修改bond配置文件。
[root@lsq network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-bond-bond0
BONDING_OPTS=mode="active-backup miimon=100" #修改的地方1
#BONDING_OPTS="mode=1 miimon=100" #与上面配置一样,选其一即可。
TYPE=Bond
BONDING_MASTER=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=bond-bond0
UUID=7113370c-23b6-4a51-b094-5a127090c546
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.222.199
NETMASK=255.255.255.0
GATEWAY=192.168.0.2
[root@lsq network-scripts]#
2)、生效配置。
#重启网卡
[root@lsq network-scripts]# service network restart
Restarting network (via systemctl): [ OK ]#查看配置是否生效
[root@lsq network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)Bonding Mode: fault-tolerance (active-backup) #生效
Primary Slave: None
Currently Active Slave: ens37 #可以看到目前使用的ens37
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:85:21:dc
Slave queue ID: 0Slave Interface: ens36
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:85:21:d2
Slave queue ID: 0
[root@lsq network-scripts]#
3)、down掉ens37网卡。
[root@lsq network-scripts]# ifconfig ens37 down
4、查看已经切换到了ens36网卡,且ens37状态为down。
[root@lsq network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens36 #使用了ens36
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0Slave Interface: ens37
MII Status: down
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:85:21:dc
Slave queue ID: 0Slave Interface: ens36
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:85:21:d2
Slave queue ID: 0
[root@lsq network-scripts]#
5、启用ens37,可以看到ens37为up状态。
[root@lsq network-scripts]# ifconfig ens37 up
[root@lsq network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens36
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:85:21:dc
Slave queue ID: 0Slave Interface: ens36
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:85:21:d2
Slave queue ID: 0
[root@lsq network-scripts]#
以上就是关于bond的介绍。