155 lines
5.5 KiB
Markdown
155 lines
5.5 KiB
Markdown
网卡的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模式时,请确保了解网络环境和业务需求,并在测试环境中验证后再部署到生产环境。 |