bond主备模式配置步骤

bond主备模式配置步骤

一、Linux Bond 7种模式完整说明

Bond(网卡绑定)是Linux内核提供的网卡聚合技术,通过将多张物理网卡虚拟为一张逻辑网卡,实现冗余备份、负载均衡或带宽叠加,共有7种工作模式(mode 0~6),不同模式适配不同场景,具体如下:

1. mode=0:balance-rr(轮询模式)

核心特点:数据包按顺序轮流从绑定的每张网卡发送,实现简单的负载分担,理论上可叠加带宽(如两张1G网卡可达到2G带宽)。

优点:实现负载均衡,提升数据传输吞吐量。

缺点:必须在交换机上配置静态链路聚合,否则会出现数据包乱序、丢包或网络环路问题;适配性差,不适合虚拟机、普通家用/办公交换机环境。

适用场景:物理服务器搭配企业级可配置交换机,追求带宽叠加的高吞吐量场景(如大型文件传输、高并发数据读写)。

2. mode=1:active-backup(主备模式)

核心特点:同一时间只有一张网卡(主网卡)处于工作状态,另一张(备网卡)处于待机状态;当主网卡出现故障(如硬件损坏、网线松动、链路中断),系统会自动切换到备网卡,全程无感。

优点:无需交换机任何配置,部署简单;稳定性极高,无丢包、环路风险;故障切换快速,不影响业务正常运行。

缺点:无法实现负载均衡,带宽无法叠加,仅能利用单张网卡的带宽。

适用场景:虚拟机、普通交换机环境、生产业务高可用场景(优先保障网络不中断,对带宽叠加需求低),也是本次配置选用的模式。

3. mode=2:balance-xor(异或哈希模式)

核心特点:根据源MAC地址、目的MAC地址进行哈希计算,确定数据包从哪张网卡发送,实现负载均衡,且同一源目地址的数据包始终从同一张网卡传输。

优点:负载均衡效果比轮询模式更稳定,避免数据包乱序。

缺点:需要交换机配合配置,配置复杂,普通环境不推荐使用;无明显优势,目前应用场景极少。

适用场景:特殊需求的物理服务器集群,且交换机支持相关配置。

4. mode=3:broadcast(广播模式)

核心特点:所有数据包会同时从绑定的所有网卡发送,接收端仅接收一份数据,其余数据会被丢弃。

优点:理论上冗余性极高,只要有一张网卡正常,数据就能正常传输。

缺点:极度浪费带宽,效率极低,会占用大量网络资源;实用性极差,几乎无实际应用场景。

适用场景:极端特殊的冗余需求(如军事、医疗等对数据传输零丢失的极端场景),日常环境完全不适用。

5. mode=4:802.3ad(LACP动态聚合模式)

核心特点:遵循IEEE 802.3ad标准,通过LACP(链路聚合控制协议)与交换机自动协商,实现动态链路聚合,可叠加带宽,且能自动检测链路状态、调整工作网卡。

优点:负载均衡效果好,带宽可叠加;支持动态协商,兼容性强,稳定性高。

缺点:交换机必须支持并开启LACP功能,配置门槛高;对交换机硬件有要求,普通交换机无法支持。

适用场景:大型机房、物理服务器集群,需要高带宽、高稳定性的核心业务场景(如数据库服务器、核心应用服务器)。

6. mode=5:balance-tlb(传输负载均衡模式)

核心特点:仅针对发送数据实现负载均衡,根据每张网卡的负载情况(带宽占用),动态分配数据包发送路径;接收数据仅从主网卡接收。

优点:无需交换机配置,实现发送端负载均衡,提升发送吞吐量。

缺点:接收数据无法负载均衡,带宽瓶颈仍存在;对网卡驱动有要求,部分老旧网卡可能不支持。

适用场景:发送数据量远大于接收数据量的场景(如视频推送、文件上传服务器)。

7. mode=6:balance-alb(适配器负载均衡模式)

核心特点:在mode=5的基础上优化,同时实现发送和接收数据的负载均衡,通过修改ARP缓存,让不同的客户端从不同的网卡接收数据。

优点:无需交换机配置,实现全方向负载均衡,带宽利用率最高。

缺点:配置相对复杂,对系统内核和网卡驱动要求较高;部分场景下可能出现ARP缓存异常,导致网络不稳定。

适用场景:对带宽利用率要求高,且网卡、系统驱动支持的物理服务器场景。

二、为什么选用 mode=1 主备模式

结合本次演示环境(VMware CentOS 7.9虚拟机、NAT模式双网卡、搭配仅主机模式管理网卡)及日常运维场景,选用主备模式(mode=1)的核心原因的如下,也是其最突出的优势所在:

1. 部署门槛极低,无需交换机额外配置

本次演示使用VMware虚拟网卡(NAT模式),且日常很多场景下使用的是普通交换机,这类环境无法配置链路聚合(LACP/静态聚合)。而主备模式是唯一无需交换机参与配置的bond模式,只要服务器有两张物理网卡,即可直接配置,部署简单、无兼容性问题,适配虚拟机、普通办公/家用等绝大多数场景。

2. 核心保障网络高可用,避免单点故障

单张物理网卡存在明显的单点故障风险:网卡硬件损坏、网线松动、链路中断等,都会直接导致服务器断网,进而影响业务运行。主备模式下,两张网卡互为备份,只要不是两张网卡同时故障,备网卡会在主网卡异常时自动接管流量,业务网络不中断,这是保障服务器网络稳定性的核心需求(尤其是生产环境)。

3. 搭配管理网卡,彻底避免远程失联

本次环境中,服务器有一张仅主机模式的管理网卡(ens33),用于应急登录。bond0负责业务网络,即使bond0的两张网卡出现异常,仍可通过管理网卡远程登录服务器排查问题,避免出现服务器无法远程连接、无法运维的情况,进一步提升运维安全性。

4. 稳定性强,无额外风险

其他模式(如mode=0、mode=2、mode=4)要么需要交换机配置,要么存在丢包、环路风险,而主备模式逻辑简单,仅实现"主用+备用"的切换,无任何额外网络风险,适合对稳定性要求高于带宽需求的场景(绝大多数业务场景均满足)。

5. 适配虚拟化环境,运维简洁

VMware虚拟机添加多张网卡后,通过主备模式绑定为bond0,统一使用一个IP(172.160.60.100)和网关,无需为每张虚拟网卡单独配置网络参数,后续防火墙规则、路由配置均基于bond0逻辑网卡,简化运维操作,降低管理成本。

三、bond主备(主备模式)完整配置步骤

【环境准备】

  • 系统:CentOS 7.9 虚拟机(基于VMware启动)

  • 网卡要求:至少两张物理网卡(本次使用ens36、ens37,均为NAT模式)

  • 管理网卡:ens33(仅主机模式,不通外网,用于应急登录,可选但推荐)

  • 网络参数:bond0 IP=172.160.60.100,子网掩码=255.255.255.0,网关=172.160.60.2,DNS=8.8.8.8

注意事项1:添加网卡后需重启虚拟机,确保系统识别到ens36、ens37两张网卡,可通过ip a命令查看网卡是否正常识别。

注意事项2:网卡名称(ens36、ens37)不可修改,需与配置文件中DEVICE参数一致,否则配置无法生效。

注意事项3:配置过程中,管理网卡(ens33)无需修改,避免影响远程登录。

【配置步骤】

步骤1:进入网卡配置文件目录

Linux系统网卡配置文件均存放在/etc/sysconfig/network-scripts目录下,先进入该目录:

bash 复制代码
cd /etc/sysconfig/network-scripts

步骤2:创建并配置bond0主配置文件(ifcfg-bond0)

新建ifcfg-bond0文件,写入主备模式相关配置,确保参数正确:

bash 复制代码
cat > ifcfg-bond0 << EOF
TYPE=Bond
BOOTPROTO=static
NAME=bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=172.160.60.100
NETMASK=255.255.255.0
GATEWAY=172.160.60.2
DNS1=8.8.8.8
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
EOF

参数说明:

  • TYPE=Bond:指定网卡类型为Bond(网卡绑定),固定写法,用于告知系统该网卡是虚拟聚合网卡,区别于普通物理网卡(TYPE=Ethernet)。

  • BOOTPROTO=static:指定网卡的IP获取方式为静态IP,固定不变;若设为dhcp则是自动获取IP,本次需固定IP,故设为static。

  • NAME=bond0:指定网卡的逻辑名称,需与DEVICE参数一致,用于系统识别该网卡,可自定义但需统一。

  • DEVICE=bond0:指定网卡的设备名称,与NAME保持一致,是系统识别网卡的核心参数,必须与配置文件名(ifcfg-bond0)中的"bond0"部分完全匹配。

  • ONBOOT=yes:设置网卡开机自启,确保虚拟机重启后,bond0网卡能自动加载配置、正常工作,避免手动启动。

  • IPADDR=172.160.60.100:指定bond0的静态IP地址,是业务网络访问该服务器的核心地址,需按需求配置。

  • NETMASK=255.255.255.0:指定子网掩码,用于划分网络段,与IPADDR配合使用,本次配置的子网段为172.160.60.0/24。

  • GATEWAY=172.160.60.2:指定网关地址,用于实现服务器与其他网段的通信,确保服务器能正常访问外网或其他网络。

  • DNS1=8.8.8.8:指定首选DNS服务器,用于解析域名(如访问百度、阿里云等),避免无法通过域名访问网络,8.8.8.8是谷歌公共DNS,稳定且通用。

  • BONDING_MASTER=yes:指定该网卡为bond主网卡(逻辑聚合网卡),用于管理下属的从网卡(ens36、ens37),固定写法。

  • BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1":核心配置,mode=1表示主备模式,miimon=100表示每100ms检测一次链路状态,fail_over_mac=1表示故障切换时自动适配MAC地址,避免切换异常导致网络中断。

注意事项4:IPADDR、GATEWAY、NETMASK参数需严格按照需求配置,不可写错,否则bond0无法正常联网。

步骤3:配置第一张从网卡(ens36)

创建/修改ifcfg-ens36文件,将其设置为bond0的从网卡,无需单独配置IP:

bash 复制代码
cat > ifcfg-ens36 << EOF
TYPE=Ethernet
BOOTPROTO=none
NAME=ens36
DEVICE=ens36
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no
EOF

参数说明:

  • TYPE=Ethernet:指定网卡类型为普通以太网物理网卡,区别于bond虚拟网卡(TYPE=Bond),是物理网卡的固定写法。

  • BOOTPROTO=none:从网卡无需配置IP,设为none即可,避免与bond主网卡的IP冲突,所有网络参数由主网卡统一管理。

  • NAME=ens36:指定该物理网卡的逻辑名称,需与DEVICE参数、系统识别的网卡名(通过ip a查看)完全一致,不可修改。

  • DEVICE=ens36:指定该物理网卡的设备名称,与NAME、系统识别的网卡名一致,是系统识别该物理网卡的核心参数。

  • ONBOOT=yes:设置该物理网卡开机自启,确保虚拟机重启后,从网卡能自动被bond0管理,避免手动启动。

  • MASTER=bond0:指定该物理网卡的主网卡为bond0,告知系统该网卡是bond0的从网卡,受主网卡统一管理。

  • SLAVE=yes:指定该网卡为从网卡,确认其从属关系,配合MASTER参数使用,固定写法。

  • NM_CONTROLLED=no:禁止NetworkManager服务管理该网卡,避免该服务自动修改网卡配置,导致bond绑定失败、配置冲突。

步骤4:配置第二张从网卡(ens37)

配置与ens36一致,创建/修改ifcfg-ens37文件:

bash 复制代码
cat > ifcfg-ens37 << EOF
TYPE=Ethernet
BOOTPROTO=none
NAME=ens37
DEVICE=ens37
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no
EOF

注意事项5:ens36和ens37的配置仅DEVICE、NAME参数不同,其余参数需完全一致,避免配置错误导致某张网卡无法加入bond0。

步骤5:启动网卡并加载配置

依次启动两张从网卡,再重启网络服务,使配置生效:

bash 复制代码
# 启动ens36网卡
ifup ens36

# 启动ens37网卡
ifup ens37

# 重启网络服务(二选一即可,推荐第一种)
systemctl restart network
# 或
service network restart

注意事项6:启动网卡时,若提示"Device ens36 does not seem to be present",说明网卡未被系统识别,需重启虚拟机重试。

【配置验证】

配置完成后,通过以下命令验证bond0是否正常工作,确保主备模式生效:

1. 查看网卡IP信息

bash 复制代码
ip a
bash 复制代码
[root@kube ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:8d:f2:d5 brd ff:ff:ff:ff:ff:ff
    inet 172.160.150.150/24 brd 172.160.150.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe8d:f2d5/64 scope link
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:8d:f2:df brd ff:ff:ff:ff:ff:ff
4: ens37: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:8d:f2:e9 brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:8d:f2:df brd ff:ff:ff:ff:ff:ff
    inet 172.160.60.100/24 brd 172.160.60.255 scope global bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe8d:f2df/64 scope link
       valid_lft forever preferred_lft forever
[root@kube ~]#

正常效果:

  • ens36、ens37状态显示为"SLAVE,UP,LOWER_UP",且标注"master bond0"。

  • bond0状态显示为"MASTER,UP,LOWER_UP",且已获取配置的静态IP(172.160.60.100)。

  • ens33(管理网卡)正常显示其IP,不受bond0影响。

2. 查看bond0工作状态

bash 复制代码
cat /proc/net/bonding/bond0
bash 复制代码
[root@kube ~]#
[root@kube ~]# cat cat /proc/net/bonding/bond0
cat: cat: 没有那个文件或目录
Ethernet Channel Bonding Driver: v6.7.8-1.el7.elrepo.x86_64

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: ens36
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: ens36
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8d:f2:df
Slave queue ID: 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8d:f2:e9
Slave queue ID: 0
[root@kube ~]#

关键验证信息:

  • Bonding Mode:显示"fault-tolerance (active-backup) (fail_over_mac active)",确认为主备模式。

  • Currently Active Slave:显示当前活跃的主网卡(默认是ens36)。

  • Slave Interface:ens36、ens37均显示"MII Status: up",说明两张网卡均正常。

3. 高可用测试(可选)

在VMware中断开ens36(主网卡)的链路(或移除该网卡),再次执行cat /proc/net/bonding/bond0,查看"Currently Active Slave"是否切换为ens37;同时测试网络连通性(如ping网关172.160.60.2),确认网络不中断,即主备切换生效。

复制代码
[root@kube ~]#
[root@kube ~]# ifdown ens36
[root@kube ~]#
[root@kube ~]#
[root@kube ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:8d:f2:d5 brd ff:ff:ff:ff:ff:ff
    inet 172.160.150.150/24 brd 172.160.150.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe8d:f2d5/64 scope link
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 00:0c:29:8d:f2:df brd ff:ff:ff:ff:ff:ff
4: ens37: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:8d:f2:e9 brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:8d:f2:e9 brd ff:ff:ff:ff:ff:ff
    inet 172.160.60.100/24 brd 172.160.60.255 scope global bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe8d:f2df/64 scope link
       valid_lft forever preferred_lft forever
[root@kube ~]#
[root@kube ~]#
[root@kube ~]#
[root@kube ~]#  cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v6.7.8-1.el7.elrepo.x86_64

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: ens37
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8d:f2:e9
Slave queue ID: 0
[root@kube ~]#
[root@kube ~]#

四、核心注意事项总结

  • 主备模式(mode=1)无需交换机配置,是虚拟机、普通环境的最优选择,核心保障网络高可用。
  • bond0是虚拟逻辑网卡名,与模式无关,可修改为其他名称,但从网卡配置中MASTER参数需对应修改。
  • 从网卡(ens36、ens37)必须设置NM_CONTROLLED=no,避免NetworkManager干扰配置。
  • 配置完成后,务必验证bond0状态和主备切换功能,确保配置生效。
  • 管理网卡(ens33)建议保留,避免bond0链路异常时无法远程登录服务器。
  • 注意 NetworkManager 和 network 冲突。一般保留network 即可(systemctl stop NetworkManager && systemctl disable NetworkManager)

五、bond主备配置全部操作总结

bash 复制代码
cd /etc/sysconfig/network-scripts

cat > ifcfg-ens36 <<-EOF
TYPE=Ethernet
BOOTPROTO=none
NAME=ens36
DEVICE=ens36
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no
EOF

cat > ifcfg-ens37 <<-EOF
TYPE=Ethernet
BOOTPROTO=none
NAME=ens37
DEVICE=ens37
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no
EOF


cat > ifcfg-bond0 <<-EOF
TYPE=Bond
BOOTPROTO=static
NAME=bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=172.160.60.100
NETMASK=255.255.255.0
GATEWAY=172.160.60.2
DNS1=8.8.8.8
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
EOF

systemctl restart network
相关推荐
国冶机电安装2 小时前
其他弱电系统安装:从方案设计到落地施工的完整指南
大数据·运维·网络
m0_738120722 小时前
我的创作纪念日0328
java·网络·windows·python·web安全·php
安科士andxe3 小时前
实操指南|安科士EPON OLT光模块选型、部署与运维全流程解析
运维·服务器·网络
老前端的功夫3 小时前
【Java从入门到入土】21:List三剑客:ArrayList、LinkedList、Vector的爱恨情仇
java·javascript·网络·python·list
百度智能云技术站3 小时前
ClawHub 漏洞警示:官方商店失守,百度智能云守护小龙虾 Skill 供应链安全
网络·安全·web安全
薛定猫AI4 小时前
【深度解析】从 Claude Mythos 到自进化 Agent:下一代 AI 智能体技术栈与落地实践
网络·人工智能
okra-4 小时前
什么是接口?
服务器·前端·网络
DX_水位流量监测5 小时前
德希科技在线色度传感器
大数据·网络·人工智能·水质监测·水质传感器·水质厂家·农村供水水质监测方案
Blurpath住宅代理5 小时前
原生住宅IP深度解析:技术本质、优势边界与使用规范
网络·静态ip·动态ip·代理·代理ip·住宅ip·住宅代理