## 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 端,也要看交换机端是否匹配