网卡绑定(Network Bonding)通过将多块物理网卡虚拟成一块逻辑网卡,实现网络链路的冗余备份和带宽叠加。在企业服务器环境中,网卡绑定是保障网络高可用的关键配置,可以避免单点网卡故障导致的业务中断。本文以Fedora 30为例,详细介绍Linux网卡绑定的各种模式和配置方法。
▶一、Bonding模式详解
Linux Bonding支持7种绑定模式,适用不同的场景:mode 0(balance-rr)轮询分发,实现负载均衡和容错;mode 1(active-backup)主备模式,仅一块网卡工作,故障时自动切换;mode 2(balance-xor)基于MAC地址哈希分发;mode 3(broadcast)广播所有包;mode 4(802.3ad)标准的链路聚合(LACP);mode 5(balance-tlb)自适应发送负载均衡;mode 6(balance-alb)自适应负载均衡。
▶二、安装Bonding模块
# 加载bonding内核模块
modprobe bonding
echo "bonding" >> /etc/modules-load.d/bonding.conf
# 验证模块是否加载
lsmod | grep bonding
cat /proc/net/bonding/bond0
▶三、使用ifcfg配置文件绑定(CentOS/RHEL)
# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4"
# 第一块从属网卡 ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
SLAVE=yes
MASTER=bond0
# 第二块从属网卡 ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
SLAVE=yes
MASTER=bond0
▶四、NetworkManager方式配置绑定
# 使用nmcli创建绑定
nmcli connection add type bond con-name bond0 ifname bond0 mode 802.3ad
nmcli connection add type ethernet slave-type bond con-name bond0-eth0 ifname eth0 master bond0
nmcli connection add type ethernet slave-type bond con-name bond0-eth1 ifname eth1 master bond0
# 配置绑定接口IP
nmcli connection modify bond0 ipv4.addresses 192.168.1.100/24
nmcli connection modify bond0 ipv4.gateway 192.168.1.1
nmcli connection modify bond0 ipv4.dns "8.8.8.8"
nmcli connection modify bond0 ipv4.method manual
# 激活连接
nmcli connection up bond0
▶五、交换机端配置(LACP模式)
使用mode 4(802.3ad/LACP)时,交换机端必须做相应配置。对于Cisco交换机,配置端口通道(Port-Channel)和LACP协议;对于华为交换机,使用Eth-Trunk和LACP模式。交换机和服务器端的LACP速率和哈希策略必须一致才能成功协商。
▶六、Bonding状态监控与故障切换
# 查看绑定接口状态
cat /proc/net/bonding/bond0
# 监控链路状态变化
watch -n 1 "cat /proc/net/bonding/bond0 | grep -E 'MII Status|Link Failure|Active Slave'"
# 主动切换主备网卡(mode 1)
ifenslave -c bond0 eth1
# 网络可用性测试
mii-tool eth0 eth1
ethtool eth0
▶七、VLAN子接口配置
在绑定接口上配置VLAN子接口,可以实现绑定和VLAN的叠加使用。在bond0上创建VLAN 100和VLAN 200的子接口,分配给不同的虚拟机或容器。虚拟机使用子接口作为网络入口,通过绑定接口实现物理链路的冗余和负载均衡。
▶八、Bonding性能调优
# 调整绑定接口的MTU值(启用巨帧)
ip link set bond0 mtu 9000
# 优化收发队列
ethtool -G eth0 rx 4096 tx 4096
ethtool -G eth1 rx 4096 tx 4096
# 启用硬件加速
ethtool -K eth0 gro on gso on
ethtool -K eth1 gro on gso on
▶九、故障排查与恢复
网卡绑定常见故障包括:一侧网线松动导致链路降级、交换机端口配置不匹配导致LACP协商失败、MTU不一致导致大流量丢包、驱动不兼容导致从属网卡反复UP/DOWN。排查时首先检查物理连接和交换机配置,然后查看bonding状态和系统日志。
▶十、Bonding vs Teaming(新型链路聚合)
Teaming是NetworkManager引入的下一代链路聚合方案,相比Bonding支持更灵活的配置(如负载均衡策略动态调整)和更好的NetworkManager集成。但Bonding仍然是大多数发行版的标准配置,兼容性更好。推荐新部署系统优先测试Teaming方案。
▶十一、Bonding模式选择决策树
选择Bonding模式需要综合考虑交换机功能和后端网络架构。如果交换机支持LACP(802.3ad),推荐使用mode 4实现真正的链路聚合和负载均衡。如果交换机不支持LACP,使用mode 6(ALB)可在不依赖交换机配置的情况下实现发送和接收负载均衡。对于仅需要冗余不需要带宽叠加的场景,mode 1主备模式是最简单可靠的选择。
▶十二、Bonding与虚拟化网络集成
在虚拟化平台中,网卡绑定后需要作为网桥的上行链路。VMware ESXi支持在标准交换机和分布式交换机上配置负载均衡绑定策略,Proxmox VE通过Linux Bridge或OVS Bonding实现。虚拟化环境中的绑定需要在管理面确认所有上行链路正常工作,使用主动式监控脚本定期检测绑定状态的链路健康度。
▶十四、网卡绑定常见故障场景分析
网卡绑定在实际部署中可能遇到多种故障场景。最常见的是交换机端口配置不匹配导致LACP协商失败,bonding处于降级模式。物理线缆松动或网卡故障导致从属链路丢失,主动监控脚本需要及时检测并告警。链路抖动导致绑定接口频繁切主切备影响业务稳定性。不同网卡型号或固件版本不兼容导致性能和流模式不稳定。建立标准化的部署前兼容性测试流程避免上述问题。
注册
登录控制台
