1. 环境准备
目标定位:在Linux服务器上实现多网卡的负载均衡与高可用性,适配双网口或以上的场景,覆盖从配置到上线的全流程。
硬件与网卡要求:需要2块及以上支持流量聚合的网卡,优选同厂商同型号以简化对称性和驱动兼容性,确保网卡驱动支持 bonding 模块与 LACP 功能。

lspci -nn | grep -i ethernet
ethtool -i eth0
ethtool -i eth1
系统与内核准备:确认内核版本具备完整的 bonding 驱动支持,必要时安装所需的软件包,并确保不会有与网络管理工具的冲突。可在初始环境中加载 bonding 模块以验证可用性。
modprobe bonding
echo bonding > /etc/modules-load.d/bonding.conf
lsmod | grep bonding
网络管理工具的协调:在生产环境中,若使用 NetworkManager、systemd-networkd、或传统的 ifupdown,需要统一策略,避免同一台主机上的网络管理工具相互覆盖导致 bond 接口状态异常。
2. 负载均衡实现方案
2.1 LACP(802.3ad)模式
LACP 模式的核心思想:通过交换机端口聚合实现带宽聚合与冗余,确保任一端口故障时通信仍能通过其他端口继续。此模式适用于对吞吐和故障切换要求较高的生产环境。
在 Debian/Ubuntu 家族上的实现要点:使用 Bond0 搭配 802.3ad,指定 slave 网卡并在网卡清单中去除 IP,由 bond 接管。以下为常见配置示例(Debian/Ubuntu 传统网络脚本):
# /etc/network/interfaces 示例
auto bond0
iface bond0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1bond-slaves eth0 eth1bond-mode 802.3adbond-miimon 100
在 RHEL/CentOS 及其衍生发行版上的实现要点:通过 ifcfg 方式配置,将 eth0、eth1 设为 bond0 的从成员,并设置 bonding 选项。下列示例可直接落地应用于常见企业发行版:
# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_OPTS="mode=802.3ad miimon=100"
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
ONBOOT=yes
NM_CONTROLLED=no# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes# /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
测试与验证:配置完成后,使用 ip 命令查看 bond0 的状态、从口状态与聚合状态,确保两条物理链路处于 UP,bond0 已获取 IP。
ip -details link show bond0
ip addr show bond0
cat /proc/net/bonding/bond0
2.2 基本轮询策略(balance-rr)
适用场景:对对端交换机端口聚合要求较低,或网络拓扑不支持 LACP 的场景,采用轮询策略分摊流量。
实现要点:将两个网卡加入同一个 bond0,设置 bond-mode 为 balance-rr;该模式不进行链路状态自适应的协商,适合简单对等负载场景。
Debian/Ubuntu 及 RHEL/CentOS 的配置示例:
# Debian/Ubuntu(示例,依赖环境脚本可能不同)
auto bond0
iface bond0 inet staticaddress 192.168.2.100netmask 255.255.255.0gateway 192.168.2.1bond-slaves eth0 eth1bond-mode balance-rr
上线前的基本验证:确保两个网卡状态为 UP,bond0 的流量被分配在两条链路上。可对两个端口执行简单的并发带宽测试。
ethtool -S bond0
ip -s link show eth0
ip -s link show eth1
3. 实战落地:从环境搭建到上线
3.1 生产环境的监控与故障排查
日常监控要点:通过读取 /proc/net/bonding/bond0、ethtool 统计及系统日志,快速定位链路故障、超载与异常波动。
关键命令合集:查看 Bond 状态、从口信息、统计指标等,便于快速定位问题根因。
cat /proc/net/bonding/bond0
ethtool -S bond0
journalctl -u network -n 200 --no-pager
3.2 实战落地的上线步骤
上线前要点:确保交换机端对聚合组已开启 LACP/端口聚合,对应的速率、双工和 MTU 设置与服务器端一致。
上线落地的具体步骤:将配置落地到目标主机,重启网络服务或重启机器以使 Bond 生效,并通过物理切换演示故障切换。
# 将网卡加入 Bond0(示例命令,具体取决于发行版)
ip link set eth0 down
ip link set eth1 down
ip link set eth0 master bond0
ip link set eth1 master bond0
ip link set bond0 up
ip addr add 192.168.1.100/24 dev bond0
ip route add default via 192.168.1.1# 验证状态
cat /proc/net/bonding/bond0
ip -details link show bond0


