Files
Knowledge/1 使用/Linux/网卡 bond.md
T

155 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
网卡的bond(绑定)是一种网络技术,它允许将多个物理网络接口卡(NIC)组合成一个单一的逻辑通道,以提高网络吞吐量并提供冗余。以下是网卡绑定的一些关键点:
1. **提高带宽**:通过将多个网卡绑定在一起,可以增加可用的网络带宽,因为数据可以通过多个网卡同时传输。
2. **冗余**:如果其中一个网卡出现故障,绑定可以自动切换到另一个网卡,从而减少网络中断的风险。
3. **负载均衡**:绑定还可以在多个网卡之间分配网络流量,这称为负载均衡,有助于更均匀地使用网络资源。
以下是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运算选择出口
- **优点**:同会话流量走同一接口,避免乱序
- **缺点**:负载均衡不够精细
- **配置示例**:
```bash
# 哈希策略选项
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协议
- **优点**:标准协议,兼容性好,智能负载均衡
- **缺点**:依赖交换机配置
- **交换机配置要求**:
```bash
# 配置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. **基础参数**
```bash
BONDING_OPTS="mode=1 miimon=100"
```
- **miimon=100**:每100ms检查链路状态(毫秒)
- **downdelay=200**:链路down后等待200ms再禁用
- **updelay=200**:链路恢复后等待200ms再启用
### 2. **主备模式专用参数**
```bash
BONDING_OPTS="mode=1 miimon=100 primary=eth0"
```
- **primary=eth0**:指定主接口
- **primary_reselect=always**:主接口恢复后是否切回
### 3. **LACP模式专用参数**
```bash
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4"
```
## 配置文件示例
### RHEL/CentOS/Fedora
```bash
# /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
```bash
# /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
```
## 状态检查命令
```bash
# 查看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
```
## 选择建议
1. **需要高可用性**:mode=1(主备模式)
2. **需要带宽聚合且交换机支持LACP**:mode=4(802.3ad)
3. **需要带宽聚合但交换机不支持LACP**:mode=0或mode=6
4. **需要极致的冗余性**:mode=3(广播模式)
5. **服务器负载均衡**:mode=2或mode=4
选择bond模式时,请确保了解网络环境和业务需求,并在测试环境中验证后再部署到生产环境。