引言
在最近一次机房服务器的部署中,我们遇到了一个不同于以往的配置需求。通常,业务系统会要求使用双网线并配置bond0,以实现主从网卡的轮番使用。然而,这次网络管理员提出了使用bond4模式,即链路聚合的要求。为了满足这一需求,我们查阅了相关资料,并发现了bond配置的不同方法。特别地,Ubuntu系统与CentOS在bond配置上存在差异,Ubuntu主要使用bond0,但通过不同的转发策略可以实现类似bond4的模式。
基础知识:Bond模式
以下是几种常见的Bond模式及其特点:
- Mode 0 (balance-rr):轮询策略,顺序使用各个可用的从网卡。提供负载均衡和故障容忍。
- Mode 1 (active-backup):主备策略,只有一个从网卡处于活动状态,当活动网卡失败时,另一个网卡才会接管。提供故障容忍。
- Mode 2 (balance-xor):基于可选择的哈希算法传输,默认策略是简单的源+目标MAC地址算法。提供负载均衡和故障容忍。
- Mode 3 (broadcast):广播策略,所有从网卡都会收到相同的报文。提供故障容忍。
- Mode 4 (802.3ad):IEEE 802.3ad动态链路聚合,创建具有相同速度和双工设置的聚合组。需要支持的驱动和交换机。
- Mode 5 (balance-tlb):自适应传输负载平衡,不需要特殊交换机支持。根据每个从网卡的当前负载分配输出流量。
- Mode 6 (balance-alb):自适应负载平衡,包括balance-tlb和接收负载平衡(rlb)。
配置步骤
要配置bond4模式,我们需要修改Ubuntu的netplan配置文件。以下是配置的示例:
sudo vim /etc/netplan/00-installer-config.yaml
# 配置文件内容
network:
ethernets:
switchports:
match: {name: "eth*"}
version: 2
renderer: networkd
bonds:
bond0:
addresses: [xxx.xxx.xxx.xxx/24] # 指定IP地址
gateway4: xxx.xxx.xxx.xxx
nameservers:
addresses: [114.114.114.114, 8.8.8.8]
interfaces: [switchports]
parameters:
mode: 802.3ad # 设置模式为802.3ad
lacp-rate: fast
transmit-hash-policy: layer3+4 # 设置传输哈希策略
参考文档
说明
本文旨在解释transmit-hash-policy
的不同配置选项:
- layer2:使用硬件MAC地址的XOR生成哈希,将特定网络对等设备的流量放在同一个从网卡上。
- layer2+3:在layer2的基础上增加了基于IP地址的负载计算。
- layer3+4:使用上层协议信息生成哈希,允许特定网络对等设备的流量跨越多个从网卡,但单个连接不会跨越多个从网卡。
- encap2+3 和 encap3+4:在layer2+3和layer3+4的基础上,增加了skb_flow_dissect报文头,用于控制负载。