Linux服务器Bonding网卡绑定模式与多链路冗余存储网络配置实战

服务器网络冗余是生产环境的基本要求。单网卡故障会导致服务中断,存储链路单点失效会造成数据不可访问。Linux Bonding驱动通过将多块物理网卡绑定为一个逻辑接口,提供链路聚合、故障切换和负载均衡能力。结合多路径存储配置,可以构建高可用的服务器网络与存储架构。

Bonding七种工作模式与适用场景对比

Bonding驱动提供7种工作模式,不同模式在冗余能力、负载均衡方式和交换机要求上差异显著:

Mode 0 (balance-rr):轮询负载均衡。数据包按顺序依次从每张网卡发出,提供负载均衡和容错能力。要求交换机支持静态聚合(无LACP协商),两端配置需一致。

Mode 1 (active-backup):主备模式。同一时刻只有一张网卡活跃,其他作为备份。主网卡故障时自动切换到备份网卡。不要求交换机支持任何特殊功能,兼容性最好。切换时间约1-3秒。

Mode 2 (balance-xor):基于MAC地址XOR的负载均衡。源MAC和目标MAC做XOR运算选择网卡,同一会话固定走同一网卡。需要交换机支持静态聚合。

Mode 3 (broadcast):广播模式。所有数据包从所有网卡发送,仅在需要极高可靠性的场景使用。带宽利用率最低。

Mode 4 (802.3ad / LACP):动态链路聚合。使用LACP协议与交换机协商,提供标准化的负载均衡和冗余。要求交换机支持802.3ad,是最推荐的生产环境方案。

Mode 5 (balance-tlb):自适应发送负载均衡。出站流量按当前负载分配到各网卡,入站由当前活跃网卡接收。不需要交换机特殊支持。

Mode 6 (balance-alb):自适应负载均衡。在Mode 5基础上增加入站负载均衡,通过ARP协商实现。不需要交换机特殊支持,但ARP处理会增加少量CPU开销。

Mode 4 LACP模式配置与交换机端协商

Mode 4是生产环境首选,需要服务器和交换机两端同时配置。以CentOS/RHEL 9为例:

# 1. 加载bonding模块
modprobe bonding mode=802.3ad miimon=100 lacp_rate=fast

# 2. 创建bond接口配置文件
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 << 'EOF'
DEVICE=bond0
TYPE=Bond
BONDING_OPTS="mode=802.3ad miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4"
IPADDR=10.0.1.100
PREFIX=24
GATEWAY=10.0.1.1
ONBOOT=yes
BOOTPROTO=static
BONDING_MASTER=yes
EOF

# 3. 配置成员网卡enp68s0f0
cat > /etc/sysconfig/network-scripts/ifcfg-enp68s0f0 << 'EOF'
DEVICE=enp68s0f0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
EOF

# 4. 配置成员网卡enp68s0f1
cat > /etc/sysconfig/network-scripts/ifcfg-enp68s0f1 << 'EOF'
DEVICE=enp68s0f1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
EOF

# 5. 重启网络
nmcli connection reload
nmcli connection up bond0
nmcli connection up enp68s0f0
nmcli connection up enp68s0f1

xmit_hash_policy参数控制负载均衡的流量分配粒度:

layer2:基于MAC地址,同一目标MAC走同一网卡,分配粒度粗。

layer3+4:基于IP地址和端口号,同一连接走同一网卡,分配更均匀。生产环境推荐此设置。

Bonding状态监控与故障排查命令

# 查看bond接口状态
cat /proc/net/bonding/bond0

# 输出示例(正常状态):
# Ethernet Channel Bonding Driver: v3.7.1
# Bonding Mode: IEEE 802.3ad Dynamic link aggregation
# Transmit Hash Policy: layer3+4 (layer3+4)
# MII Status: up
# MII Polling Interval (ms): 100
#
# Slave Interface: enp68s0f0
# MII Status: up
# Speed: 25000 Mb/s
# Duplex: full
# Link Failure Count: 0
# Aggregator ID: 1
# Aggregator link state: active
#
# Slave Interface: enp68s0f1
# MII Status: up
# Speed: 25000 Mb/s
# Duplex: full
# Link Failure Count: 0
# Aggregator link state: active

# 实时监控bond状态变化
watch -n 1 'cat /proc/net/bonding/bond0 | grep -E "MII Status|Speed|Link Failure"'

# 查看LACP协商状态
cat /proc/net/bonding/bond0 | grep -A5 "LACP"

# 手动测试故障切换(拔掉一根网线后观察)
dmesg | grep -i bond | tail -20

# 查看bond接口统计信息
ip -s link show bond0

常见故障排查:

LACP协商失败:检查交换机端口是否配置了LACP模式,lacp_rate=fast要求交换机也设为fast模式。若交换机设为slow,将lacp_rate改为slow。

单卡模式下带宽不翻倍:Mode 4的LACP聚合中,同一会话(相同源IP+目标IP+端口)始终走同一物理链路,不会跨链路分配。这是协议限制,不是故障。使用layer3+4策略可使不同连接分布到不同链路。

Bonding配合多路径存储链路冗余配置

存储网络(如iSCSI、FC)的多路径与Bonding是不同层面的冗余机制。Bonding提供链路层冗余,多路径(multipath)提供SCSI层冗余。两者配合可构建端到端的存储高可用。

# 1. 安装多路径工具
dnf install -y device-mapper-multipath

# 2. 生成默认配置
mpathconf --enable --with_multipathd y

# 3. 配置多路径策略
cat > /etc/multipath.conf << 'EOF'
defaults {
    user_friendly_names yes
    find_multipaths yes
    path_grouping_policy multibus
    path_checker readsector0
    path_selector "round-robin 0"
    failback immediate
    no_path_retry 18
    polling_interval 2
}

# 存储阵列特定配置
multipaths {
    multipath {
        wwid 3600508b1001c3a0b48e2c6c7d8e9f0a1
        alias data-lun-01
        path_grouping_policy multibus
        path_selector "round-robin 0"
    }
}

# 存储控制器黑名单(本地磁盘)
blacklist {
    devnode "^sd[a-b]$"
    wwid "*"
}
blacklist_exceptions {
    wwid "3600508b1001c3a0b48e2c6c7d8e9f0a1"
}
EOF

# 4. 重启multipath服务
systemctl restart multipathd
systemctl enable multipathd

# 5. 查看多路径状态
multipath -ll

# 输出示例:
# data-lun-01 (3600508b1001c3a0b48e2c6c7d8e9f0a1) dm-1 
# size=2.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
# |-+- policy='round-robin 0' status=active
# | |- 5:0:0:1 sdc 8:32 active ready running
# | |- 6:0:0:1 sde 8:64 active ready running
# |-+- policy='round-robin 0' status=enabled
#   |- 5:0:1:1 sdd 8:48 active ready running
#   |- 6:0:1:1 sdf 8:80 active ready running

# 6. 使用多路径设备
mkfs.xfs /dev/mapper/data-lun-01
mount /dev/mapper/data-lun-01 /data

round-robin 0策略将IO轮询分配到所有活跃路径,提供负载均衡。multibus分组策略将所有路径放入同一组,故障时自动切换到组内其他路径。

no_path_retry 18设置所有路径失效时重试18次(约36秒),避免IO立即返回错误导致文件系统挂起。超过重试次数后返回IO错误,上层应用可感知并处理。

生产环境Bonding与多路径联合部署检查清单

1. 确认交换机端口配置与Bonding模式匹配。Mode 4需要在交换机端配置LACP(Cisco为channel-group mode active,华为为eth-trunk mode lacp-static)。

2. Bonding成员网卡应连接到不同交换机,避免单交换机故障导致bond完全失效。

3. 存储多路径的两条链路应分别走不同HBA卡、不同Bond接口、不同交换机,形成物理隔离。

4. 部署后进行故障注入测试:依次拔掉每个链路,验证业务无中断、路径自动切换。使用fio工具进行持续IO测试的同时拔线,观察IO延迟变化和恢复时间。

5. 配置监控告警:通过snmpd暴露bond接口状态,配合Zabbix/Prometheus监控链路状态变化和Link Failure Count增长。

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

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

相关推荐