5.5 KiB
5.5 KiB
网卡的bond(绑定)是一种网络技术,它允许将多个物理网络接口卡(NIC)组合成一个单一的逻辑通道,以提高网络吞吐量并提供冗余。以下是网卡绑定的一些关键点:
-
提高带宽:通过将多个网卡绑定在一起,可以增加可用的网络带宽,因为数据可以通过多个网卡同时传输。
-
冗余:如果其中一个网卡出现故障,绑定可以自动切换到另一个网卡,从而减少网络中断的风险。
-
负载均衡:绑定还可以在多个网卡之间分配网络流量,这称为负载均衡,有助于更均匀地使用网络资源。
以下是Linux网卡绑定(bonding)模式及其对应配置值的详细表格:
网卡Bonding模式对应关系表
| Mode编号 | 模式名称 | Linux内核名称 | 负载均衡 | 容错性 | 交换机要求 |
|---|---|---|---|---|---|
| mode=0 | 负载均衡(轮询) | balance-rr | ✅ 轮询方式 | ✅ | 不需要特殊配置 |
| mode=1 | 主备模式 | active-backup | ❌ | ✅ 高可用 | 不需要特殊配置 |
| mode=2 | 负载均衡(XOR哈希) | balance-xor | ✅ 基于哈希 | ✅ | 不需要特殊配置 |
| mode=3 | 广播模式 | broadcast | ❌ | ✅ 高冗余 | 不需要特殊配置 |
| mode=4 | 动态链路聚合 | 802.3ad | ✅ 动态聚合 | ✅ | 需要支持LACP |
| mode=5 | 适配器传输负载均衡 | balance-tlb | ✅ 自适应 | ✅ | 不需要特殊配置 |
| mode=6 | 适配器负载均衡 | balance-alb | ✅ 自适应 | ✅ | 不需要特殊配置 |
各模式详细说明
mode=0 (balance-rr) - 轮询负载均衡
- 特点:数据包按顺序轮流从每个slave接口发送
- 优点:带宽叠加,负载均衡
- 缺点:数据包可能乱序到达
- 适用场景:需要高带宽,不严格要求包顺序
mode=1 (active-backup) - 主备模式
- 特点:只有一个接口活跃,其他作为备份
- 优点:高可用性,配置简单
- 缺点:不能增加带宽
- 适用场景:关键业务需要冗余备份
mode=2 (balance-xor) - XOR哈希策略
- 特点:基于源/目的MAC地址的XOR运算选择出口
- 优点:同会话流量走同一接口,避免乱序
- 缺点:负载均衡不够精细
- 配置示例:
# 哈希策略选项 xmit_hash_policy=layer2 # 默认,基于MAC地址 xmit_hash_policy=layer2+3 # 基于MAC+IP xmit_hash_policy=layer3+4 # 基于IP+端口
mode=3 (broadcast) - 广播模式
- 特点:所有数据包在所有接口发送
- 优点:极高冗余性
- 缺点:网络开销大,浪费带宽
- 适用场景:极端可靠性要求
mode=4 (802.3ad/LACP) - 动态链路聚合
- 特点:需要交换机支持LACP协议
- 优点:标准协议,兼容性好,智能负载均衡
- 缺点:依赖交换机配置
- 交换机配置要求:
# 配置LACP参数 lacp_rate=slow # 默认,每30秒发送LACPDU lacp_rate=fast # 每秒发送LACPDU(1秒)
mode=5 (balance-tlb) - 适配器传输负载均衡
- 特点:根据每个slave的负载情况动态分配
- 优点:不需要特殊交换机
- 缺点:只均衡出站流量,入站流量由当前slave处理
mode=6 (balance-alb) - 适配器负载均衡
- 特点:mode=5的增强版,包含ARP协商
- 优点:出入站流量都均衡,无需交换机支持
- 缺点:可能引起ARP刷新问题
常用配置参数
1. 基础参数
BONDING_OPTS="mode=1 miimon=100"
- miimon=100:每100ms检查链路状态(毫秒)
- downdelay=200:链路down后等待200ms再禁用
- updelay=200:链路恢复后等待200ms再启用
2. 主备模式专用参数
BONDING_OPTS="mode=1 miimon=100 primary=eth0"
- primary=eth0:指定主接口
- primary_reselect=always:主接口恢复后是否切回
3. LACP模式专用参数
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4"
配置文件示例
RHEL/CentOS/Fedora
# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast"
# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
ONBOOT=yes
Ubuntu/Debian
# /etc/network/interfaces
auto bond0
iface bond0 inet static
address 192.168.1.100
netmask 255.255.255.0
bond-mode 4
bond-miimon 100
bond-lacp-rate 1
bond-slaves eth0 eth1
状态检查命令
# 查看bonding状态
cat /proc/net/bonding/bond0
# 查看网络接口统计
ip link show bond0
# 查看bonding模块参数
cat /sys/class/net/bond0/bonding/mode
cat /sys/class/net/bond0/bonding/slaves
选择建议
- 需要高可用性:mode=1(主备模式)
- 需要带宽聚合且交换机支持LACP:mode=4(802.3ad)
- 需要带宽聚合但交换机不支持LACP:mode=0或mode=6
- 需要极致的冗余性:mode=3(广播模式)
- 服务器负载均衡:mode=2或mode=4
选择bond模式时,请确保了解网络环境和业务需求,并在测试环境中验证后再部署到生产环境。