应选用mode=6(balance-alb)模式实现高可靠链路冗余与负载均衡,因其收发双向均衡、免交换机配置、物理链路up即生效;需加载bonding模块并固化配置,关闭networkmanager,严格配置bond0及从属网卡,最后验证绑定状态与故障切换。

要真正实现高可靠链路冗余与负载均衡,不能只把两块网卡“绑在一起”,关键在于模式选择、底层连通性、交换机协同和配置稳定性四者协同。其中,mode=1(主备)天然支持高可靠但不负载均衡;mode=4(LACP)可兼顾两者,但强依赖交换机;mode=6(ALB)收发双向均衡且免交换机配置,是更平衡的选择。
选对模式:先明确目标再定方案
不同模式能力差异显著,不是所有模式都同时满足“高可靠+负载均衡”:
- mode=1(active-backup):仅主网卡工作,故障秒级切换,100%冗余,但带宽不叠加——适合纯高可用场景
- mode=4(802.3ad/LACP):需交换机开启LACP并严格匹配速率/双工/LACP超时等参数,成功后才能实现带宽聚合与自动故障转移
- mode=6(balance-alb):无需交换机配合,自动协商ARP和TCP流,实现发送端负载均衡 + 接收端被动均衡,物理链路UP即生效,推荐用于通用高可靠+均衡场景
- mode=0(balance-rr)虽能轮询分发,但易因包序错乱影响TCP性能,且必须交换机做端口聚合,实际稳定性弱于mode=6
加载模块并固化配置
确保 bonding 内核模块已加载且参数持久化:
- 检查是否已加载:
lsmod | grep bonding;未加载则执行:modprobe bonding mode=balance-alb miimon=100 - 写入永久配置(如 /etc/modprobe.d/bonding.conf):
alias bond0 bondingoptions bonding mode=balance-alb miimon=100 updelay=200 -
务必关闭 NetworkManager,避免其干扰bond接口管理:
systemctl stop NetworkManager && systemctl disable NetworkManager
配置bond0及从属网卡
以CentOS/RHEL 7+或兼容发行版为例,配置文件需严格遵循依赖关系:
-
/etc/sysconfig/network-scripts/ifcfg-bond0:
DEVICE=bond0TYPE=BondBONDING_MASTER=yes-
BOOTPROTO=static(或dhcp) ONBOOT=yes-
IPADDR=192.168.1.100(按需填写) -
BONDING_OPTS="mode=balance-alb miimon=100"(参数优先级高于modprobe.d)
-
/etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/sysconfig/network-scripts/ifcfg-eth1:
-
DEVICE=eth0(或ens33等真实名) TYPE=EthernetBOOTPROTO=noneONBOOT=yesMASTER=bond0SLAVE=yesUSERCTL=no- 删除或注释掉 IPADDR、GATEWAY 等地址相关字段
-
验证与日常维护要点
配置完成后,不能只看IP是否通,要确认逻辑与物理层协同有效:
- 查看绑定状态:
cat /proc/net/bonding/bond0,确认两块网卡均处于Up且MII Status: up - 模拟单网卡断开:
ip link set eth0 down,观察bond0是否持续通信、slave切换是否发生(mode=1/4/6均应无中断) - 检查命名稳定性:使用
udevadm info -q property -n eth0 | grep ID_NET_NAME确认网卡名不随重启漂移,否则bond可能绑定失败 - 避免MAC冲突:bond0会自动生成唯一MAC,从属网卡无需设MAC;若手动指定,须确保bond0与slave MAC一致(仅mode=0/2/4需要)











