4、链路聚合:手工聚合与LACP配置、负载均衡模式、故障切换验证
链路聚合,说白了就是把多条物理链路绑在一起,当成一条逻辑链路来用。我刚开始接触这个技术时,觉得它挺神奇的——明明是多根网线,怎么在交换机看来就变成了一根?后来自己动手配了几次,才真正理解它的价值:带宽叠加、链路冗余,这两点对网络来说太重要了。
今天咱们就聊聊链路聚合的两种实现方式:手工聚合和LACP。嗯,这里要注意,不同厂商的叫法可能不一样,但核心原理是相通的。
4.1 手工聚合:简单粗暴但有效
手工聚合,就是管理员手动把几个端口绑定成一个聚合组。这种方式不依赖任何协议,全靠配置说话。
配置要点:
- 所有成员端口必须属于同一个VLAN
- 端口速率、双工模式必须一致
- 对端设备也必须做同样的手工聚合配置
核心命令示例(华为设备):
# 创建Eth-Trunk接口
[Switch] interface Eth-Trunk 1
[Switch-Eth-Trunk1] mode manual load-balance
[Switch-Eth-Trunk1] trunkport GigabitEthernet 0/0/1 to 0/0/4
# 将Eth-Trunk接口配置为Trunk模式
[Switch-Eth-Trunk1] port link-type trunk
[Switch-Eth-Trunk1] port trunk allow-pass vlan all
我在项目中遇到过这样的情况:有次给客户做网络改造,设备比较老旧,不支持LACP。当时我就用了手工聚合,把4条千兆链路绑在一起,带宽从1G提升到了4G。虽然负载均衡效果一般,但胜在稳定可靠。
小技巧:手工聚合配置完成后,记得用display eth-trunk 1查看成员端口状态。如果某个端口显示为"Down",多半是物理链路或者对端配置有问题。
4.2 LACP:智能化的链路聚合
LACP(Link Aggregation Control Protocol)是IEEE 802.3ad标准定义的协议。它最大的好处是——能自动检测链路状态,动态添加或移除成员端口。
你想想看,如果某条链路突然断了,手工聚合不会自动调整,但LACP可以。它会自动把流量重新分配到剩下的链路上,整个过程对上层应用完全透明。
LACP的两种模式:
- Active(主动):主动发送LACPDU报文,协商建立聚合链路
- Passive(被动):被动响应LACPDU报文,不会主动发起协商
LACP配置示例(华为设备):
# 创建Eth-Trunk并启用LACP
[Switch] interface Eth-Trunk 1
[Switch-Eth-Trunk1] mode lacp-static
[Switch-Eth-Trunk1] trunkport GigabitEthernet 0/0/1 to 0/0/4
# 配置LACP优先级(可选)
[Switch-Eth-Trunk1] lacp preempt enable
[Switch-Eth-Trunk1] lacp preempt delay 30
我个人习惯在生产环境中优先使用LACP。为什么?因为它能自动检测对端设备的能力,避免配置不一致导致的问题。我曾经遇到过因为手工聚合两端端口数量不一致,导致流量丢包的情况。换成LACP后,这种问题再也没出现过。
注意:LACP协商需要时间,设备启动初期可能会有短暂的流量中断。建议在业务低峰期进行配置变更。
4.3 负载均衡模式:流量怎么分?
链路聚合配好了,流量怎么分配到各个成员端口上?这就涉及到负载均衡模式了。说白了,就是根据某种算法,决定把某个数据流送到哪条物理链路上。
常见的负载均衡模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 源MAC | 根据源MAC地址计算哈希值 | 二层网络,终端数量少 |
| 目的MAC | 根据目的MAC地址计算哈希值 | 二层网络,服务器端 |
| 源+目的MAC | 结合源和目的MAC计算 | 通用二层场景 |
| 源IP | 根据源IP地址计算哈希值 | 三层网络,客户端多 |
| 目的IP | 根据目的IP地址计算哈希值 | 三层网络,服务器端 |
| 源+目的IP | 结合源和目的IP计算 | 通用三层场景 |
| 源+目的IP+端口 | 结合IP和四层端口计算 | 数据中心,精细化负载 |
嗯,这里要注意:负载均衡是基于流的,不是基于包的。同一个数据流(比如一次TCP连接)的所有报文,会走同一条物理链路。这样做的好处是——避免报文乱序。
我在数据中心项目中,通常选择"源+目的IP+端口"模式。为什么?因为这种模式能最大程度地利用所有链路,尤其是在有大量短连接的业务场景下,效果特别明显。
配置示例:
# 华为设备配置负载均衡模式
[Switch-Eth-Trunk1] load-balance src-dst-ip-port
# 查看当前负载均衡模式
[Switch] display eth-trunk load-balance
4.4 故障切换验证:别光配不测
配置完了,一定要验证。我见过太多人配完链路聚合就不管了,结果真出故障时才发现配置有问题。
验证步骤:
- 查看聚合组状态:确认所有成员端口都处于"Selected"状态
- 测试连通性:从终端ping网关,确认业务正常
- 模拟链路故障:拔掉一根网线,观察业务是否中断
- 检查流量切换:用
display eth-trunk traffic查看流量分布
故障切换验证命令:
# 查看Eth-Trunk详细信息
[Switch] display eth-trunk 1 verbose
# 模拟链路故障(在交换机上shutdown某个成员端口)
[Switch] interface GigabitEthernet 0/0/1
[Switch-GigabitEthernet0/0/1] shutdown
# 验证流量是否切换到其他链路
[Switch] display eth-trunk 1 traffic
我曾经在一次割接中,配完链路聚合后忘了验证。结果第二天客户报障,说网络时断时续。排查了半天,发现是其中一根网线接触不良,但手工聚合没有自动切换,导致部分流量丢失。从那以后,我每次配完链路聚合,都会做完整的故障切换验证。
避坑指南:我曾经遇到过两端设备LACP的System ID配置不一致,导致协商失败。建议在配置前,先检查两端设备的LACP系统优先级,确保一致。
4.5 知识体系总览
下面这张图,是我自己总结的链路聚合知识体系。你可以把它当成一个快速参考,遇到问题时回来翻一翻。
链路聚合这块,说白了就是三个核心点:怎么绑(手工还是LACP)、怎么分(负载均衡模式)、怎么切(故障切换)。把这三点搞明白了,大部分场景都能应对。
好了,这一章的内容就到这里。记住,配完一定要测,测完才放心。
公众号:蓝海资料掘金营,微信deep3321