linux双网卡实现负载均衡需选择合适绑定模式并配置路由策略。1. 推荐使用mode=6(balance-alb),可在多数环境实现流量分担;2. 配置bond接口包括创建bond0文件、修改物理网卡配置并重启网络服务;3. 多网关下通过策略路由控制流量,分别设置路由表和规则使不同源ip走不同线路;4. 注意交换机配置匹配、arp响应问题、测试验证及mtu一致性。
配置linux双网卡实现负载均衡和流量分担,是提升网络带宽、增强系统稳定性的常见做法。关键在于选择合适的绑定模式,并合理设置路由策略。
1. 网卡绑定(bonding)模式选择
Linux下通过bonding驱动可以将多个网卡逻辑上合并为一个接口。要实现负载均衡,首先要选对绑定模式:
- mode=0 (balance-rr):轮询方式发送数据包,适用于一般负载均衡,但交换机需要配合。
- mode=1 (active-backup):主备模式,不实现负载均衡,仅提供冗余。
- mode=2 (balance-xor):根据MAC地址做哈希决定出口,一定程度支持负载分担。
- mode=4 (802.3ad):链路聚合协议,需交换机支持LACP,适合高带宽需求场景。
- mode=5 (balance-tlb) 和 mode=6 (balance-alb):动态调整流量方向,不需要交换机特殊配置。
推荐使用mode=6 (balance-alb),在大多数环境中都能较好地实现流量分担。
2. 配置bonding接口的基本步骤
以centos/RHEL为例,操作如下:
-
创建bond接口的配置文件:
sudo vi /etc/sysconfig/network-scripts/ifcfg-bond0
内容示例:
DEVICE=bond0 TYPE=Bond NAME=bond0 BONDING_MASTER=yes BOOTPROTO=none ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 BONDING_OPTS="mode=6 miimon=100"
-
修改两个物理网卡的配置文件:
DEVICE=enp1s0 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes
另一个网卡类似,如enp2s0。
-
重启网络服务或使用ifdown/ifup启用bond接口。
3. 多网关下的策略路由配置(更灵活的流量分担)
如果你有两个不同的网关(比如连接两个不同ISP),就需要用到策略路由来控制流量走向。
基本思路:
- 给每个网卡分配独立的路由表
- 根据源IP地址选择对应路由表
- 设置默认路由指向各自的网关
例如,在/etc/iproute2/rt_tables中添加:
200 isp1 201 isp2
然后分别添加规则:
ip route add default via 192.168.1.1 dev enp1s0 table isp1 ip route add default via 192.168.2.1 dev enp2s0 table isp2 ip rule add from 192.168.1.100 lookup isp1 ip rule add from 192.168.2.100 lookup isp2
这样就能根据不同来源IP走不同线路了。
4. 常见问题与注意事项
- 交换机配置不匹配:特别是使用LACP(mode=4)时,交换机端必须开启相应聚合组。
- ARP响应混乱:某些模式下可能出现多个网卡同时回应ARP请求,建议配置arp_ip_target等参数。
- 测试验证方法:可以通过cat /proc/net/bonding/bond0查看状态;使用iftop或nload观察实际流量分布。
- MTU一致性:确保绑定接口和物理接口的MTU一致,避免出现丢包。
基本上就这些。Linux双网卡负载均衡看起来复杂,其实只要选对模式、配好路由,整体并不难,只是有些细节容易被忽略。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END