网络绑定 Bonding 冗余配置教程
Linux 网络 Bonding(也称为链路聚合或 NIC Teaming)是一种将多块物理网卡绑定为一个逻辑网卡的技术。通过 Bonding 可以实现网络链路的冗余备份和带宽叠加,当某条链路故障时自动切换到另一条链路,保证网络服务不中断。本文将详细介绍 Bonding 的各种工作模式和在 Linux 系统上的配置方法。
一、Bonding 工作模式
Linux Bonding 支持七种工作模式(mode 0-6),不同模式适用于不同场景:
- Mode 0(balance-rr):轮询模式,数据包依次通过各网卡发送,提供负载均衡和容错能力。
- Mode 1(active-backup):主备模式,同一时间只有一块网卡活动,主网卡故障时自动切换到备用网卡。最常用的模式。
- Mode 2(balance-xor):XOR 模式,基于源和目的 MAC 地址的哈希进行负载均衡。
- Mode 3(broadcast):广播模式,所有数据同时通过所有网卡发送,提供最高的容错能力。
- Mode 4(802.3ad):IEEE 802.3ad 动态链路聚合,需要交换机支持 LACP 协议。
- Mode 5(balance-tlb):自适应传输负载均衡,出站流量负载均衡,不需要交换机特殊支持。
- Mode 6(balance-alb):自适应负载均衡,出入站流量均可负载均衡。
二、加载 Bonding 内核模块
modprobe bonding
echo "bonding" >> /etc/modules-load.d/bonding.conf
验证模块加载:
lsmod | grep bonding
三、使用 Netplan 配置(Ubuntu 18.04+)
cat > /etc/netplan/01-bonding.yaml <<EOF
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
eth1:
dhcp4: no
bonds:
bond0:
interfaces:
- eth0
- eth1
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
parameters:
mode: active-backup
primary: eth0
mii-monitoring-interval: 100
fail-over-delay-ms: 200
EOF
netplan apply
四、使用 NetworkManager 配置(CentOS/RHEL)
# 创建 Bond 接口
nmcli con add type bond con-name bond0 ifname bond0 mode active-backup
# 添加从属网卡
nmcli con add type ethernet con-name bond0-eth0 ifname eth0 master bond0
nmcli con add type ethernet con-name bond0-eth1 ifname eth1 master bond0
# 配置 IP 地址
nmcli con mod bond0 ipv4.addresses "192.168.1.10/24"
nmcli con mod bond0 ipv4.gateway "192.168.1.1"
nmcli con mod bond0 ipv4.dns "8.8.8.8"
nmcli con mod bond0 ipv4.method manual
# 配置 Bond 参数
nmcli con mod bond0 bond.options "mode=active-backup,miimon=100,primary=eth0"
# 启动
nmcli con up bond0
五、使用传统配置文件
对于 CentOS 7 或其他使用传统网络脚本的系统:
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 <<EOF
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100 primary=eth0"
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
DEVICE=eth0
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
ONBOOT=yes
BOOTPROTO=none
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <<EOF
DEVICE=eth1
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
ONBOOT=yes
BOOTPROTO=none
EOF
systemctl restart network
六、验证 Bonding 状态
# 查看 Bond 详细状态
cat /proc/net/bonding/bond0
# 查看网卡状态
ip link show bond0
ip addr show bond0
# 查看从属接口
cat /sys/class/net/bond0/bonding/slaves
七、故障切换测试
模拟网卡故障进行切换测试:
# 关闭主网卡
ip link set eth0 down
# 观察 Bond 状态变化
cat /proc/net/bonding/bond0
# 测试网络连通性
ping -c 4 192.168.1.1
# 恢复主网卡
ip link set eth0 up
八、监控参数
- miimon:MII 链路监控间隔(毫秒),推荐 100ms。
- downdelay:链路断开后延迟切换时间,避免链路抖动导致频繁切换。
- updelay:链路恢复后延迟切回时间。
- arp_interval:ARP 监控间隔,可替代 MII 监控。
# 使用 ARP 监控代替 MII
BONDING_OPTS="mode=1 arp_interval=1000 arp_ip_target=192.168.1.1"
九、常见问题
Bonding 接口无法获取 IP
确认从属网卡的配置文件中没有设置 IPADDR,IP 地址应该只在 Bond 接口上配置。
故障切换延迟过高
减小 miimon 值和 downdelay 值可以加快故障检测和切换速度。
总结
网络 Bonding 是保障网络连接高可用的重要技术,Mode 1 主备模式是最常用且最稳定的方案。虽然搬瓦工 VPS 通常只有单网卡,但掌握 Bonding 技术对于管理物理服务器和多网卡 VPS 非常有价值。配合 Keepalived 高可用配置 可以构建更完善的冗余架构。购买搬瓦工 VPS 请查看 全部方案,使用优惠码 NODESEEK2026 可享 6.77% 折扣,购买链接:bwh81.net。