银河麒麟服务器双网卡负载均衡有四种方法:一、nmcli配置bonding(推荐,支持mode=0/4/6);二、编辑network-scripts传统方式;三、teamd配置teaming;四、独立路由+策略路由分流。

如果您在银河麒麟服务器操作系统中部署关键业务,需要提升网络吞吐能力并保障链路冗余,则双网卡负载均衡配置是核心操作。以下是实现该目标的多种可行方法:
一、使用nmcli命令行配置bonding(推荐)
该方法适用于无图形界面的服务器环境,通过NetworkManager直接创建bond接口,支持mode=0(轮询)、mode=4(802.3ad)、mode=6(ALB)等负载均衡模式,配置过程可持久化且易于批量部署。
1、确认物理网卡名称,执行ip a命令,记录待绑定网卡名(如ens33和ens34)。
2、创建bond0接口,指定负载均衡模式(以mode=6为例):nmcli connection add type bond ifname bond0 mode 6 miimon 100
3、为bond0配置静态IPv4地址:nmcli connection modify bond-bond0 ipv4.method manual ipv4.addresses 192.168.10.54/24 ipv4.gateway 192.168.10.1 ipv6.method ignore
4、将第一块物理网卡添加为slave:nmcli connection add type bond-slave ifname ens33 master bond-bond0 con-name bond0-ens33
5、将第二块物理网卡添加为slave:nmcli connection add type bond-slave ifname ens34 master bond-bond0 con-name bond0-ens34
6、依次启用两个slave连接:nmcli connection up bond0-ens33 和 nmcli connection up bond0-ens34
7、启用主bond接口:nmcli connection up bond-bond0
二、编辑network-scripts配置文件(传统方式)
该方式绕过NetworkManager,直接修改ifcfg配置文件,适用于对服务依赖关系敏感或已禁用NetworkManager的生产环境,所有配置保存于/etc/sysconfig/network-scripts/目录下,重启后自动生效。
1、关闭两块物理网卡:ifdown ens33 和 ifdown ens34
2、创建bond0主配置文件:vim /etc/sysconfig/network-scripts/ifcfg-bond0
3、写入以下内容:
TYPE=Ethernet
BOOTPROTO=static
NAME=bond0
DEVICE=bond0
IPADDR=192.168.10.54
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
ONBOOT=yes
BONDING_OPTS="miimon=100 mode=6"
4、修改第一块物理网卡配置文件:vim /etc/sysconfig/network-scripts/ifcfg-ens33
5、写入以下内容:
DEVICE=ens33
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
6、修改第二块物理网卡配置文件:vim /etc/sysconfig/network-scripts/ifcfg-ens34
7、写入与步骤5相同结构的内容,仅将DEVICE值改为ens34
8、重启网络服务:systemctl restart network
三、使用teamd配置teaming(灵活策略)
该方法基于teamd守护进程,支持lacp、loadbalance等动态策略,具备更细粒度的流量控制能力,无需内核bonding模块,适合需高灵活性的网络架构。
1、建立新的聚合连接:nmcli connection add con-name team0 type team ifname team0 config '{ "runner": { "name": "lacp" } }'
2、指定成员网卡1:nmcli connection add con-name team0-ens33 type team-slave ifname ens33 master team0
3、指定成员网卡2:nmcli connection add con-name team0-ens34 type team-slave ifname ens34 master team0
4、为聚合连接配置IP地址:nmcli connection modify team0 ipv4.method manual ipv4.addresses 192.168.10.54/24 ipv4.gateway 192.168.10.1 ipv4.dns 8.8.8.8 ipv6.method ignore
5、允许成员连接自动启用:nmcli connection modify team0-ens33 connection.autoconnect yes 和 nmcli connection modify team0-ens34 connection.autoconnect yes
6、激活聚合连接:nmcli connection up team0
7、确认连接状态:teamdctl team0 state
四、双网卡独立路由+策略路由实现逻辑分流
该方法不合并网卡为单一接口,而是为每张网卡分配独立IP及网关,并通过自定义路由表与规则实现按源地址、协议或端口分流,适用于多ISP接入或异构网络出口场景。
1、为ens33配置独立IP与网关:nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.10.54/24 ipv4.gateway 192.168.10.1
2、为ens34配置另一段IP与网关:nmcli connection modify ens34 ipv4.method manual ipv4.addresses 172.16.10.54/24 ipv4.gateway 172.16.10.1
3、创建自定义路由表,在/etc/iproute2/rt_tables末尾添加:200 table1 和 201 table2
4、为table1添加路由:ip route add 192.168.10.0/24 dev ens33 src 192.168.10.54 table table1
5、为table1添加默认路由:ip route add default via 192.168.10.1 dev ens33 table table1
6、为table2添加路由:ip route add 172.16.10.0/24 dev ens34 src 172.16.10.54 table table2
7、为table2添加默认路由:ip route add default via 172.16.10.1 dev ens34 table table2
8、添加策略规则:使来自192.168.10.54的数据包查table1,ip rule add from 192.168.10.54/32 table table1;使来自172.16.10.54的数据包查table2,ip rule add from 172.16.10.54/32 table table2
9、执行ip route flush cache刷新路由缓存
五、验证bond或team接口状态
无论采用哪种方法,均需验证绑定接口是否正常工作,包括链路状态、活跃端口、流量分发情况及故障切换能力。
1、检查bond接口状态:cat /proc/net/bonding/bond0
2、查看bond0接口IP与状态:ip addr show bond0
3、检查team接口状态:teamdctl team0 state
4、查看team0接口IP与状态:ip addr show team0
5、测试链路连通性:ping -I bond0 192.168.10.1 -c 4
6、模拟单网卡故障:ifconfig ens33 down,观察cat /proc/net/bonding/bond0中active slave是否自动切换至ens34
7、恢复网卡:ifconfig ens33 up,再次验证切换是否可逆
8、确认<strong><font color="green">bond0 或 team0 接口状态为 UP,且至少一个 slave 显示为 active</font></strong>











