服务器多网卡绑定实战:Linux bonding七种模式与链路冗余配置方案

Linux bonding(链路聚合)将多块物理网卡绑定为逻辑接口,实现链路冗余和带宽扩展。在服务器运维场景中,单网卡故障导致服务中断是高频问题,bonding通过对等网卡自动切换规避单点故障,部分模式还可叠加带宽。本文覆盖bonding的七种工作模式、CentOS/Ubuntu配置方法及交换机侧适配。

Bonding七种工作模式对比与选型

bonding驱动提供7种模式,编号0-6,各模式在冗余能力、带宽扩展和交换机要求上差异显著:

Mode 0 (balance-rr):轮询分发,数据包依次从各网卡发出,带宽叠加,需要交换机配置静态聚合。无冗余能力,单链路中断会导致丢包。

Mode 1 (active-backup):主备模式,同一时刻只有一块网卡活动,故障时自动切换。无需交换机特殊配置,兼容性最好,是服务器运维中应用最广泛的模式。

Mode 2 (balance-xor):基于源的哈希分发,同一源MAC固定走同一网卡,带宽叠加,需交换机配置静态聚合。

Mode 3 (broadcast):所有数据包从所有网卡发出,容错能力最强但带宽利用率最低,适用于特殊组播场景。

Mode 4 (802.3ad):LACP动态聚合,标准协议,带宽叠加且支持冗余,需交换机支持LACP并配置动态聚合组。这是数据中心首选模式。

Mode 5 (balance-tlb):自适应发送负载均衡,出口流量按负载分发,入口流量走活动网卡。不需交换机特殊配置。

Mode 6 (balance-alb):在Mode 5基础上增加入口负载均衡,通过ARP协商实现。不需交换机特殊配置,兼容性好。

选型建议:跨交换机堆叠环境用Mode 1,同交换机高带宽需求用Mode 4,无法改交换机配置时用Mode 6。

CentOS 7/8 bonding配置与网络接口绑定

以两块网卡enp3s0和enp3s1配置Mode 1(active-backup)为例。先加载bonding模块并确认:

modprobe bonding
echo "bonding" >> /etc/modules-load.d/bonding.conf

创建bond接口配置文件:

# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100 primary=enp3s0"

修改从接口配置,将其绑定到bond0:

# /etc/sysconfig/network-scripts/ifcfg-enp3s0
DEVICE=enp3s0
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes

# /etc/sysconfig/network-scripts/ifcfg-enp3s1
DEVICE=enp3s1
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes

miimon参数指定链路监测间隔(毫秒),100ms是常用值,降低该值加快故障检测但增加开销。primary参数指定主网卡,正常状态下优先使用。重启网络服务生效:

systemctl restart network

Ubuntu 22.04 netplan配置bonding与VLAN叠加

Ubuntu使用netplan管理网络,配置语法不同。新建或编辑/etc/netplan/01-bond.yaml:

network:
  version: 2
  renderer: networkd
  bonds:
    bond0:
      interfaces: [enp3s0, enp3s1]
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100
        transmit-hash-policy: layer3+4
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]
  ethernets:
    enp3s0:
      dhcp4: no
    enp3s1:
      dhcp4: no

transmit-hash-policy设为layer3+4使流量按IP和端口号哈希分发,避免同源同目的流量集中到单链路。lacp-rate设为fast加快LACP协商速度(每1秒发送一次LACPDU),default为slow(每30秒)。应用配置:

sudo netplan apply

如果配置错误导致网络中断,物理终端执行netplan try可自动回滚。

交换机侧LACP配置与兼容性验证

Mode 4(802.3ad)需要交换机配置端口聚合组。以Cisco交换机为例:

interface Port-channel1
  switchport mode access
  switchport access vlan 10
!
interface GigabitEthernet0/1
  channel-group 1 mode active
!
interface GigabitEthernet0/2
  channel-group 1 mode active

mode active表示主动发送LACP协商报文,passive表示被动等待。两端至少一端为active才能建立聚合。华为交换机使用Eth-Trunk配置:

interface Eth-Trunk1
  trunkport gigabitethernet 0/0/1
  trunkport gigabitethernet 0/0/2
  mode lacp-static

bonding状态监控与故障切换验证

使用/proc/net/bonding查看实时状态:

cat /proc/net/bonding/bond0

# 输出示例
Ethernet Channel Bonding Driver: v3.7.1
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: enp3s0
Currently Active Slave: enp3s0
MII Status: up
MII Polling Interval (ms): 100

Slave Interface: enp3s0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0

Slave Interface: enp3s1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0

验证故障切换效果,手动down掉主网卡:

ip link set enp3s0 down
# 查看切换
cat /proc/net/bonding/bond0 | grep "Currently Active"
# 应显示 enp3s1

切换过程中有少量丢包(通常1-2个包),应用层重试机制可覆盖。恢复主网卡后,根据primary参数决定是否回切:

ip link set enp3s0 up
# primary=enp3s0时自动回切到enp3s0

监控告警方面,建议在Prometheus中采集node_network_up指标,对bond0的Slave接口状态做告警规则:任何Slave接口MII Status非up持续30秒触发告警,确保双链路环境下单链路故障能及时发现。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/fu-wu-qi-duo-wang-ka-bang-ding-shi-zhan-linuxbonding-qi/

(0)
小编小编
上一篇 2小时前
下一篇 2小时前

相关推荐