在Ubuntu上配置链路聚合

前文:

今天想着给服务器弄个链路聚合,把服务器的几个网口利用上,然后顺便写一篇博文记录一下。

Linux上的6种链路聚合模式

1. mode=0 (balance-rr)

描述:该模式使用循环算法(Round-robin)发送数据包,顺序地将每个数据包发送到每个接口。

优点:

提供了负载均衡和故障冗余。
所有接口带宽可以被同时使用。

缺点:

需要交换机支持且配置成适当的模式。
数据包顺序可能会被打乱,这对某些应用可能有问题。

2. mode=1 (active-backup)

描述:只有一个活动接口,其他接口处于备用状态。当活动接口发生故障时,备用接口会被激活。

优点:

简单可靠,适用于任何网络设备,不需要特殊交换机支持。
提供故障冗余。

缺点:

不能增加带宽,只有一个接口是活动的。

3. mode=2 (balance-xor)

描述:根据源MAC地址和目标MAC地址的异或结果选择接口发送数据包,从而实现负载均衡。

优点:

提供负载均衡和故障冗余。
能够增加带宽使用效率。

缺点:

需要交换机支持且配置成适当的模式。

4. mode=3 (broadcast)

描述:将所有数据包广播到所有接口。

优点:

提供冗余。

缺点:

网络流量增加,效率低。
不适合需要高效带宽使用的场景。

5. mode=4 (802.3ad)

描述:使用IEEE 802.3ad 动态链路聚合协议(LACP)。动态协商和管理聚合链路。

优点:

动态协商,自动配置链路聚合。
提供负载均衡和故障冗余。
增加带宽使用效率。

缺点:

需要交换机支持IEEE 802.3ad并配置成LACP模式。

6. mode=5 (balance-tlb)

描述:基于传输负载(传输负载均衡,TLB)自动地在接口之间分配出站流量。接收流量由当前接口处理。

优点:

不需要特殊交换机支持。
提供负载均衡和故障冗余。

缺点:

接收流量不能负载均衡。

7. mode=6 (balance-alb)

描述:基于适应性负载均衡(自适应负载均衡,ALB),包括传输负载均衡(TLB)和接收负载均衡(RLB)。

优点:

提供负载均衡和故障冗余。
不需要特殊交换机支持。
增加传输和接收的带宽利用率。

缺点:

实现相对复杂。

对比图

mode mode名称 描述 负载均衡 冗余 交换机支持 场景
0 balance-rr 轮询方式 (Round-Robin),依次发送数据包 多数场景下的负载均衡
1 active-backup 主备模式 (Active-Backup),一个接口工作,另一个备用 需要高可用的场景
2 balance-xor 根据 MAC 地址对流量进行散列 多数场景下的负载均衡
3 broadcast 广播模式,所有数据包在所有链路上发送 需要极高冗余度的场景
4 802.3ad (LACP) IEEE 802.3ad 动态链路聚合 (Link Aggregation Control Protocol),自动协商多条链路为一条逻辑链路 企业级环境、需要动态链路聚合的场景
5 balance-tlb 自适应传输负载均衡 (Adaptive Transmit Load Balancing),基于流量自动平衡传输负载 客户端较多且接收流量较少的场景
6 balance-alb 自适应负载均衡 (Adaptive Load Balancing),在mode5的基础上增加了接收负载均衡 接收和发送流量都较多的场景

网络配置文件

从Ubuntu20.04开始,网络配置文件就更改到了/etc/netplan/00-installer-config.yaml

配置链路聚合

/etc/netplan/00-installer-config.yaml配置文件里(如果不是这个配置文件就使用ls /etc/netplan/命令查看实际配置文件),使用vim打开,在这个文件里添加以下代码,需要根据实际情况进行更改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

bonds:
bond0: #链路聚合网络的名字
dhcp4: no #自动true/手动no 获取ip地址
addresses: [192.168.3.75/24] #ip地址
#gateway4: 192.168.3.1 #网关 补充:在最新的netplan语法中以及不再支持gateway4这种写法了需要更换为routes
routes: #网关
- to: 0.0.0.0/0
via: 192.168.3.1
nameservers: #dns地址
addresses:
- 202.96.128.86 #根据实际情况进行更改
- 202.96.134.33 #根据实际情况进行更改
interfaces: #需要参与链路聚合的网卡名称
- eno1
- eno2
- eno3
parameters:
mode: balance-alb #mode6的链路聚合模式
mii-monitor-interval: 100 #设置 MII 监控间隔为100毫秒,用于检测链路状态
#lacp-rate: fast #配置 LACP(链路聚合控制协议)的速率为快速模式。LACP 是链路聚合的一种协议,用于协商链路聚合的成员。快速模式下,LACP 每秒发送一次 PDU(协议数据单元)
transmit-hash-policy: layer2 #设置传输哈希策略为 layer2

注意,LACP协议与balance-alb模式冲突,需要注释

应用

使用 netplan apply 进行应用

使用 ip a 查看是否出现bond0

查看速度

apt安装net-tools工具

1
2
3

sudo apt-get install net-tools -y

使用 ethtool bond0 命令可以查看到bond0的详细信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

root@hpdl360g9:~# ethtool bond0
Settings for bond0:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 3000Mb/s
Duplex: Full
Auto-negotiation: off
Port: Other
PHYAD: 0
Transceiver: internal
Link detected: yes


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]

文章标题:在Ubuntu上配置链路聚合

字数:1.4k

本文作者:许子晋

发布时间:2024-08-13, 19:23:30

最后更新:2025-06-08, 13:09:22

原始链接:https://xuzijin.com/2024/08/13/Link-aggregation-on-Ubuntu/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。