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 故障切换验证:别光配不测

配置完了,一定要验证。我见过太多人配完链路聚合就不管了,结果真出故障时才发现配置有问题。

验证步骤:

  1. 查看聚合组状态:确认所有成员端口都处于"Selected"状态
  2. 测试连通性:从终端ping网关,确认业务正常
  3. 模拟链路故障:拔掉一根网线,观察业务是否中断
  4. 检查流量切换:用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 手动绑定端口 两端配置需一致 无协议开销 Active/Passive模式 自动协商与检测 动态成员管理 负载均衡模式 故障切换验证

链路聚合这块,说白了就是三个核心点:怎么绑(手工还是LACP)、怎么分(负载均衡模式)、怎么切(故障切换)。把这三点搞明白了,大部分场景都能应对。

好了,这一章的内容就到这里。记住,配完一定要测,测完才放心。


公众号:蓝海资料掘金营,微信deep3321