linux多网卡负载均衡可通过四种方法实现:一、bonding主备模式保障高可用;二、bonding平衡轮询模式提升吞吐但需交换机支持;三、策略路由按源ip分流适用于多isp;四、tc+ifb哈希分流实现会话级均衡。

如果您在 Linux 系统中部署了多块物理网卡,但流量始终只通过其中一张网卡转发,导致带宽利用率不均或单点故障风险升高,则可能是未正确配置链路聚合或负载均衡策略。以下是实现 Linux 多网卡负载均衡的几种可行方法:
一、基于 bonding 驱动的主备模式(active-backup)
该模式下仅有一张网卡处于活动状态,另一张作为热备份;虽不提供带宽叠加,但可实现高可用性与故障自动切换,适用于对可靠性要求高于吞吐量的场景。
1、确认内核已加载 bonding 模块:modprobe bonding。
2、创建 bonding 接口配置文件,例如 /etc/sysconfig/network-scripts/ifcfg-bond0,内容包含:DEVICE=bond0、BOOTPROTO=static、IPADDR=192.168.1.100、NETMASK=255.255.255.0、ONBOOT=yes、BONDING_OPTS="mode=active-backup miimon=100 primary=eth0"。
3、修改原网卡配置文件 ifcfg-eth0 和 ifcfg-eth1,设置 MASTER=bond0、SLAVE=yes、ONBOOT=yes,并注释掉 IPADDR 等地址相关字段。
4、重启网络服务:systemctl restart network(CentOS/RHEL)或 sudo systemctl restart networking(Debian/Ubuntu)。
二、基于 bonding 的平衡轮询模式(balance-rr)
该模式按数据包顺序轮流从各成员网卡发出,理论上可提升总吞吐量,但要求交换机端口必须聚合且支持相同 MAC 地址多端口转发,否则可能引发 MAC 地址抖动或丢包。
1、编辑 /etc/sysconfig/network-scripts/ifcfg-bond0,将 BONDING_OPTS 中的 mode 改为 balance-rr,并保留 miimon=100 参数。
2、确保交换机已启用端口汇聚(如 Cisco 的 EtherChannel 或华为的Eth-Trunk),且所有参与 bonding 的物理端口加入同一组、配置为静态 LACP 或 on 模式。
3、检查 bonding 状态:cat /proc/net/bonding/bond0,确认 MII Status 全为 up,且当前模式显示为 balance-rr。
4、验证流量分布:在持续传输大文件时,分别执行 watch -n1 'cat /proc/net/dev | grep eth',观察各 eth 接口 RX/TX 字节数是否交替增长。
全国首个为手机行业定制的网站,外观豪华、时尚。DIV+CSS构建,符合W3C标准,完美搜索引擎优化迅速提高搜索引擎排名,稳定性、执行效率、负载能力均居国内同类产品领先地位。安装简单,傻瓜式操作,在线下单、支付、发货,轻松管理网站。 多套模板更换,界面更加豪华 完美搜索引擎优化 集成支付宝、财付通、网银等多种在线支付平台 手机、配件商品不同颜色、型号不同价格设置 图片化多种参数设置、搜索、评论 新闻
三、基于策略路由(policy routing)的源地址分流
该方法不依赖 bonding 驱动,而是利用 Linux 内核的多路由表与 ip rule 规则,根据源 IP 地址将出向流量导向不同网关及物理接口,适用于多 ISP 接入或跨子网出口分离场景。
1、为每张网卡配置独立 IP 与默认路由,例如 eth0 对应 192.168.10.2/24,网关 192.168.10.1;eth1 对应 192.168.20.2/24,网关 192.168.20.1。
2、添加自定义路由表,在 /etc/iproute2/rt_tables 中追加两行:100 table_eth0 与 101 table_eth1。
3、为每个表填充路由:执行 ip route add 192.168.10.0/24 dev eth0 src 192.168.10.2 table table_eth0 和 ip route add default via 192.168.10.1 table table_eth0;同理配置 table_eth1。
4、添加策略规则:运行 ip rule add from 192.168.10.2 table table_eth0 与 ip rule add from 192.168.20.2 table table_eth1,使对应源地址流量强制走指定路由表。
四、基于 tc + ifb 的出向流量哈希分流
此方案通过流量控制子系统(tc)配合虚拟接口 ifb(Intermediate Functional Block),在 egress 方向依据五元组进行哈希分发,实现更细粒度的会话级负载均衡,无需交换机配合,但需手动维护流分类规则。
1、加载 ifb 模块:modprobe ifb numifbs=2,然后启用接口:ip link set dev ifb0 up 与 ip link set dev ifb1 up。
2、将 eth0 和 eth1 的出向流量重定向至 ifb 接口:tc qdisc add dev eth0 handle ffff: ingress,再执行 tc filter add dev eth0 parent ffff: protocol ip u32 match ip dst 0.0.0.0/0 action mirred egress redirect dev ifb0;同理配置 eth1 → ifb1。
3、在 ifb0 和 ifb1 上分别配置 fq_codel 队列并绑定 cls_u32 分类器,使用 hash keys nfkuid 实现基于源/目的 IP+端口的哈希分流。
4、为每个 ifb 接口设置不同速率上限,例如 tc qdisc add dev ifb0 root tbf rate 500mbit burst 32kbit latency 400ms,以避免单接口过载。









