双网卡绑定在核心业务中主要用于提升可用性与带宽利用率,前提须匹配业务场景、物理拓扑及交换机配置;mode=1(active-backup)最稳妥,适合数据库主节点等高可用场景;mode=4(802.3ad)需交换机启用LACP且接入同一逻辑设备;应避免mode=0和mode=6,因其易引发MAC抖动、负载倾斜或单点丢包。

双网卡绑定(Bonding)在核心业务中主要用于提升网络链路的可用性与带宽利用率,但真正起作用的前提是正确匹配业务场景、物理拓扑和上行交换机配置。盲目启用 Bonding 反而可能引发中断或负载不均。
明确业务需求再选 Bonding 模式
Linux 的 bonding 支持多种 mode(如 0、1、4、6),每种适用场景差异显著:
- mode=1(active-backup):最稳妥的选择,主备切换无依赖交换机支持,适合对高可用要求严苛的核心服务(如数据库主节点、API 网关)。单点故障时自动切备卡,MAC 地址不变,ARP 行为稳定。
- mode=4(802.3ad / LACP):需交换机开启 LACP 协商,能实现负载分担+冗余,但要求两网口接入同一台物理交换机(或堆叠/虚拟化交换机),否则跨设备聚合会失败或导致环路。
- 避免使用 mode=0(balance-rr)或 mode=6(balance-load):前者依赖 ARP 轮询,易被交换机 MAC 表抖动干扰;后者哈希策略不透明,实际负载常严重倾斜,且不提供真冗余(单卡断开即丢包)。
物理连接与交换机必须协同配置
Bonding 不是主机单方面配置就能生效的“魔法”。关键约束如下:
- 若用 mode=1:两网线可分别连到不同交换机(推荐),但需确保两交换机间三层互通(避免因 STP 阻塞导致备用链路无法及时接管)。
- 若用 mode=4:两网口必须接入支持 LACP 的同一逻辑交换设备(如 Cisco VSS、华为堆叠、Aruba VSX),且交换机侧需显式创建 port-channel 并启用 LACP active 模式。
- 所有参与 bonding 的物理接口,建议关闭 Spanning Tree(STP)的 BPDU guard 和 portfast,防止主备切换时被误判为环路而 shutdown 接口。
系统级配置要点与验证方法
以 RHEL/CentOS 或主流 Debian 系发行版为例:
- 加载 bonding 模块并设置永久参数:echo "bonding mode=1 miimon=100" > /etc/modprobe.d/bonding.conf
- 配置 bond0 接口(如使用 ifcfg-bond0):指定 BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1",其中 fail_over_mac=1 可避免主备切换后因 MAC 地址未同步导致短暂 ARP 失效。
- 将 eth0、eth1 的 ifcfg 文件设为 MASTER=bond0、SLAVE=yes,并清空其 IP 和路由配置。
- 验证命令:cat /proc/net/bonding/bond0 查看当前状态与活动端口;ip link show bond0 确认 UP 状态;模拟拔线后观察是否秒级切换(watch -n1 'cat /proc/net/bonding/bond0 | grep -A2 "MII Status\|Slave Interface"')。
监控与运维注意事项
Bonding 本身不提供深度可观测性,需主动补足:
- 在 Zabbix/Prometheus 中采集 /proc/net/bonding/bond0 内的 MII Status、Link Failure Count 和 Up Delay/Down Delay,设置阈值告警(如 Link Failure Count 持续增长说明物理链路不稳定)。
- 定期检查 ethtool eth0 和 ethtool eth1 的协商速率、双工模式是否一致;不一致会导致 bonding 认为链路异常而反复切换。
- 升级内核或网卡驱动前,务必在测试环境验证 bonding 状态迁移行为——部分旧驱动在热插拔后无法正确恢复 slave 状态。

















