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 小时前
为什么访问不一样的网站会有快有慢?
网络·安全
小熊officer2 小时前
网络渗透(Network Penetration)
网络·安全·web安全
长河2 小时前
APISIX
java·网络
FBI HackerHarry浩3 小时前
在Python中TCP网络程序开发的步骤流程
运维·服务器·开发语言·网络·python·pycharm
wanhengidc3 小时前
服务器 数据恢复
运维·服务器·网络·智能手机·云计算
草莓熊Lotso4 小时前
【Linux网络】深入理解 HTTP 协议(一):从基础概念到 URL 编码解码
linux·网络·c++·网络协议·http·软件工程
aodunsoft4 小时前
安全月报 | 傲盾DDoS攻击防御2026年5月简报
网络·安全·ddos
jingling5554 小时前
Flutter | 从基本跳转到路由守卫
服务器·前端·网络·flutter·前端框架
SilentSamsara4 小时前
HTTP 客户端实战:httpx/重试/限速/连接池/中间件设计
开发语言·网络·python·http·青少年编程·中间件·httpx
24zhgjx-fuhao4 小时前
ISIS:多区域集成IS-IS
网络·智能路由器