193 lines
3.5 KiB
Markdown
193 lines
3.5 KiB
Markdown
## 1、Bonding 概览
|
||
|
||
Bonding(网卡绑定)是把多块物理网卡组合成一个逻辑接口,对外通常表现为一个 IP 地址。
|
||
|
||
常见目的:
|
||
|
||
- 提高链路可用性
|
||
- 实现故障切换
|
||
- 提升带宽或做负载分担
|
||
|
||
是否真正实现带宽叠加,取决于 **Bond 模式**、交换机配置、流量模型等因素。
|
||
|
||
## 2、常见 Bond 模式
|
||
|
||
### 2.1 `mode=0` `balance-rr`
|
||
|
||
轮询发送流量。
|
||
|
||
特点:
|
||
|
||
- 负载均衡
|
||
- 支持容错
|
||
- 需要交换机配合链路聚合
|
||
- 可能出现包乱序问题
|
||
|
||
### 2.2 `mode=1` `active-backup`
|
||
|
||
主备模式。
|
||
|
||
特点:
|
||
|
||
- 同时只有一块网卡工作
|
||
- 一块故障时自动切换到备份网卡
|
||
- 主要用于高可用
|
||
- 对交换机要求较低
|
||
|
||
这是生产中非常常见、也相对稳妥的模式。
|
||
|
||
### 2.3 `mode=2` `balance-xor`
|
||
|
||
基于哈希策略分担流量。
|
||
|
||
特点:
|
||
|
||
- 支持负载均衡和容错
|
||
- 需要交换机聚合配置
|
||
- 常结合 `xmit_hash_policy`
|
||
|
||
### 2.4 `mode=3` `broadcast`
|
||
|
||
所有包都从所有网卡发出。
|
||
|
||
特点:
|
||
|
||
- 容错强
|
||
- 资源浪费大
|
||
- 一般不常用
|
||
|
||
### 2.5 `mode=4` `802.3ad`
|
||
|
||
也就是 LACP 动态链路聚合。
|
||
|
||
特点:
|
||
|
||
- 标准化程度高
|
||
- 需要交换机支持 802.3ad / LACP
|
||
- 兼顾性能和可靠性
|
||
- 配置要求更高
|
||
|
||
### 2.6 `mode=5` `balance-tlb`
|
||
|
||
发送负载均衡。
|
||
|
||
特点:
|
||
|
||
- 不要求交换机特殊支持
|
||
- 主要对发送流量做均衡
|
||
|
||
### 2.7 `mode=6` `balance-alb`
|
||
|
||
自适应负载均衡。
|
||
|
||
特点:
|
||
|
||
- 在 `mode=5` 基础上增强
|
||
- 不依赖交换机特殊支持
|
||
- 能做一定程度的接收负载均衡
|
||
|
||
## 3、模式选择建议
|
||
|
||
### 3.1 追求稳定高可用
|
||
|
||
优先考虑:
|
||
|
||
- `mode=1` `active-backup`
|
||
|
||
### 3.2 有交换机配合且希望聚合
|
||
|
||
优先考虑:
|
||
|
||
- `mode=4` `802.3ad`
|
||
|
||
### 3.3 没有交换机聚合能力
|
||
|
||
可考虑:
|
||
|
||
- `mode=1`
|
||
- `mode=6`
|
||
|
||
## 4、配置示例
|
||
|
||
不同发行版网络配置方式不同,常见有 `netplan`、`NetworkManager`、`ifcfg-*` 等。
|
||
|
||
### 4.1 Netplan 示例
|
||
|
||
```yaml
|
||
network:
|
||
version: 2
|
||
ethernets:
|
||
eth1:
|
||
addresses: []
|
||
dhcp4: no
|
||
eth2:
|
||
addresses: []
|
||
dhcp4: no
|
||
|
||
bonds:
|
||
bond0:
|
||
addresses:
|
||
- 192.168.30.10/24
|
||
gateway4: 192.168.30.250
|
||
nameservers:
|
||
addresses:
|
||
- 114.114.114.114
|
||
interfaces:
|
||
- eth1
|
||
- eth2
|
||
parameters:
|
||
mode: balance-alb
|
||
```
|
||
|
||
### 4.2 传统 ifcfg 配置示例
|
||
|
||
`/etc/sysconfig/network-scripts/ifcfg-bond0`
|
||
|
||
```ini
|
||
NAME=bond0
|
||
TYPE=Bond
|
||
DEVICE=bond0
|
||
BOOTPROTO=none
|
||
IPADDR=10.0.0.100
|
||
PREFIX=8
|
||
BONDING_OPTS="mode=1 miimon=100"
|
||
```
|
||
|
||
从接口配置中要指定:
|
||
|
||
- `MASTER=bond0`
|
||
- `SLAVE=yes`
|
||
|
||
## 5、关键参数说明
|
||
|
||
### 5.1 `miimon`
|
||
|
||
用于指定链路检测间隔,单位通常是毫秒。
|
||
|
||
例如:
|
||
|
||
```ini
|
||
miimon=100
|
||
```
|
||
|
||
表示每 100 ms 检测一次链路状态。
|
||
|
||
### 5.2 `xmit_hash_policy`
|
||
|
||
用于指定发包哈希策略,在某些负载均衡模式中很关键。
|
||
|
||
## 6、常见运维注意点
|
||
|
||
- Bond 能不能真正提升带宽,要看连接模型和交换机配置
|
||
- 配 `802.3ad` 前先确认交换机侧也已正确配置 LACP
|
||
- `active-backup` 最简单、最稳,适合先保高可用
|
||
- 做 Bond 前,最好先明确目标:是要容灾,还是要带宽聚合
|
||
- 变更 Bond 配置前要评估中断风险,最好有带外或控制台入口
|
||
|
||
## 7、小结
|
||
|
||
- Bonding 是把多块网卡组合成一个逻辑接口
|
||
- 常见目标是高可用、容错和流量分担
|
||
- `mode=1` 适合高可用,`mode=4` 适合标准聚合
|
||
- 配置时既要看 Linux 端,也要看交换机端是否匹配
|