Linux服务器bonding网卡聚合支持mode=0轮询、mode=1主备、mode=6自适应负载均衡及策略路由四类部署方案,分别适配带宽叠加、高可用、免交换机配置和内核限制场景,并需通过/proc/net/bonding等验证链路状态。

如果您在Linux服务器上需要提升网络吞吐能力、增强链路冗余或实现流量负载分担,则需配置bonding网卡聚合。以下是多种可实际部署的bonding绑定方法,涵盖不同业务场景与硬件约束条件。
一、配置mode=0(balance-rr)轮询负载均衡模式
该模式通过轮询方式将数据包依次分发至各物理网卡,理论上实现带宽叠加与基础容错,但要求交换机端必须启用802.3ad链路聚合或端口组配置,否则可能引发MAC地址冲突与数据包丢失。
1、确认内核支持bonding模块:modinfo bonding | grep -E '^(version|description)'
2、加载bonding模块并设置开机自动加载:echo "alias bond0 bonding" >> /etc/modprobe.d/bonding.conf && echo "options bond0 mode=0 miimon=100" >> /etc/modprobe.d/bonding.conf
3、编辑主接口配置文件:vi /etc/sysconfig/network-scripts/ifcfg-bond0,写入:
DEVICE=bond0
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
4、编辑从属网卡配置(以ens33、ens37为例):vi /etc/sysconfig/network-scripts/ifcfg-ens33,内容为:
DEVICE=ens33
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
5、重启网络服务:systemctl restart network 或 ifdown bond0 && ifup bond0
二、配置mode=1(active-backup)主备高可用模式
此模式仅允许一块网卡处于活动状态,另一块始终待命;当主网卡失效时,备用网卡立即接管MAC与IP,保障业务连续性。无需交换机特殊配置,兼容性最强,适用于对稳定性要求高于带宽的环境。
1、修改bonding模块参数:sed -i 's/mode=0/mode=1/' /etc/modprobe.d/bonding.conf
2、在bond0配置中添加故障检测参数:echo "BONDING_OPTS=\"mode=1 miimon=100 updelay=200 downdelay=200\"" >> /etc/sysconfig/network-scripts/ifcfg-bond0
3、确保两块从属网卡配置中均包含:PRIMARY=ens33(指定默认主网卡),避免切换时ARP响应延迟
4、执行重载配置:modprobe -r bonding && modprobe bonding,再重启bond0接口
三、配置mode=6(balance-alb)自适应双向负载均衡模式
该模式无需交换机配合,支持发送与接收双向负载分担:发送流量按各网卡实时速率分配,接收流量通过ARP协商动态引导不同客户端使用不同物理网卡MAC通信,兼顾性能与部署简易性。
1、更新模块参数:echo "options bond0 mode=6 miimon=100 lp_interval=1" > /etc/modprobe.d/bonding.conf
2、在每张从属网卡配置文件中移除GATEWAY、DNS等路由相关字段,仅保留:MASTER=bond0 SLAVE=yes
3、在bond0配置中显式启用ALB特性:echo "BONDING_OPTS=\"mode=6 miimon=100 alb_interval=1000\"" >> /etc/sysconfig/network-scripts/ifcfg-bond0
4、重启网络后验证接收均衡效果:cat /proc/net/bonding/bond0 | grep -A 5 "Slave Interface",观察各接口RX数据是否趋于分散
四、基于策略路由的双网卡同网段绑定(无bond驱动依赖)
当系统内核不支持bonding、或需绕过内核绑定限制时,可采用策略路由+多IP+源地址选择方式,在同一子网内使两张网卡并行收发,适用于特定监控、采集类场景。
1、为两张网卡分别配置独立IP(如ens33: 192.168.1.100,ens37: 192.168.1.101),子网掩码一致,均不配置GATEWAY字段
2、创建自定义路由表:echo "200 table_eth33" >> /etc/iproute2/rt_tables && echo "201 table_eth37" >> /etc/iproute2/rt_tables
3、为每张网卡添加对应路由规则:ip rule add from 192.168.1.100 table table_eth33 && ip rule add from 192.168.1.101 table table_eth37
4、为每个表填充直连路由:ip route add 192.168.1.0/24 dev ens33 src 192.168.1.100 table table_eth33 && ip route add default via 192.168.1.1 dev ens33 table table_eth33
5、启用策略路由持久化:echo "ip rule add from 192.168.1.100 table table_eth33" >> /etc/rc.local && echo "ip rule add from 192.168.1.101 table table_eth37" >> /etc/rc.local
五、验证bonding状态与链路健康度
完成任一模式配置后,必须通过内核接口确认bonding逻辑设备已正确建立,并持续监测底层物理链路状态,防止静默故障。
1、查看bond0聚合状态:cat /proc/net/bonding/bond0,确认“Bonding Mode”、“MII Status”及“Slave Interface”字段值正常
2、检查内核日志中的bonding事件:dmesg | grep -i bonding,排查模块加载或链路协商失败提示
3、强制触发主备切换测试(仅mode=1):ifconfig ens33 down && sleep 5 && ifconfig ens33 up,观察bond0是否维持UP且MAC未变更
4、持续监控链路抖动:watch -n1 'cat /proc/net/bonding/bond0 | grep -E "(Link Failure|Up Delay|Down Delay)"'

















