第120篇:堆叠与 VRRP 结合的高可用方案

关键词:堆叠、CSS/iStack、VRRP、高可用、架构对比、主备切换、跨设备链路聚合、园区网设计


一、引言

在前一篇第119篇中,我们学习了 VRRP 如何跟踪上行接口实现联动切换。VRRP 是默认网关冗余的经典方案,但它存在一个固有局限:VRRP 只能实现主备模式,Backup 设备在正常运行时处于空闲状态,无法分担流量。

堆叠技术(如华为的 CSS/CSS2 和 iStack)将多台物理交换机虚拟为一台逻辑设备,消除了对 VRRP 的需求。然而,在跨设备场景下(如两台独立的汇聚交换机),堆叠不可行时,堆叠与 VRRP 结合的方案提供了更高灵活性的高可用架构。

二、核心概念

2.1 堆叠与 VRRP 的对比

对比维度 堆叠方案 VRRP 方案 堆叠 + VRRP 方案
设备数量 多台物理设备逻辑为一台 独立设备 堆叠组之间用 VRRP
管理复杂度 低,统一配置 中,每台独立配置 中
带宽利用率 高,所有链路活跃 低,Backup 空闲 高,堆叠内负载分担
切换时间 毫秒级(设备内) 秒级 毫秒级(堆叠内)+ 秒级(堆叠间)
上行链路 Eth-Trunk 跨设备聚合 独立链路 Eth-Trunk + VRRP
部署成本 需要堆叠线缆 无需额外线缆 需要堆叠线缆

2.2 堆叠与 VRRP 结合的典型架构

堆叠与 VRRP 结合的典型架构 - 图示

2.3 堆叠的基本概念

概念 说明
堆叠(Stacking) 多台交换机通过堆叠线缆连接,逻辑上为一台设备
主设备(Master) 堆叠中的控制平面,负责管理和转发决策
从设备(Slave) 堆叠中的数据平面,执行主设备的转发指令
堆叠优先级 决定主备选举,值越大优先级越高
堆叠系统 ID 堆叠组的唯一标识
跨设备 Eth-Trunk 堆叠后可将不同物理设备的端口加入同一个 Eth-Trunk

2.4 高可用架构方案选择

场景 推荐方案 说明
小型园区(1-2 台汇聚) VRRP 简单部署,无需堆叠线缆
中型园区(2+ 台汇聚) 堆叠 + VRRP 堆叠组内负载分担,堆叠组间主备
大型园区(多层架构) 堆叠 + VRRP + BFD 端到端高可用
数据中心 堆叠/CSS + ECMP 最大化带宽利用

三、技术细节

3.1 堆叠的工作原理

堆叠的工作原理 - 图示

3.2 堆叠与 VRRP 协同工作模式

当两个堆叠组之间运行 VRRP 时:

特性 说明
虚拟路由器 VRRP 虚拟路由器运行在两个堆叠组之间
跨设备 Eth-Trunk 接入层通过 Eth-Trunk 同时连接到两个堆叠组
M-LAG 可选方案,替代 VRRP,实现真正的负载分担
切换时间 堆叠组内切换毫秒级,堆叠组间 VRRP 切换秒级

3.3 堆叠主备选举

堆叠主备选举 - 图示

3.4 VRRP 在堆叠组上的运行特点

特性 说明
虚拟 IP 归属 VRRP 虚拟 IP 配置在堆叠组的 VLANIF 接口上
通告发送 由堆叠组中的 Master 设备发送 VRRP 通告
接口跟踪 跟踪堆叠组中物理设备的上行接口
堆叠分裂 堆叠分裂时,两个部分都可能认为自己是 Master,需配置分裂处理策略

四、实战配置/案例分析

4.1 堆叠基础配置

# ========== 交换机 A(优先级 150,将成为 Master) ==========

# 1. 配置堆叠优先级
[HUAWEI] stack
[HUAWEI-stack] priority 150
[HUAWEI-stack] quit

# 2. 配置堆叠系统 MAC(可选,推荐手动指定)
[HUAWEI] stack
[HUAWEI-stack] system-mac minimum 001E-1020-3040
[HUAWEI-stack] quit

# 3. 配置堆叠端口
[HUAWEI] interface StackPort1 1
[HUAWEI-StackPort1-1] port group 0 member interface FortyGigE 1/0/25
[HUAWEI-StackPort1-1] quit

# 4. 保存配置并重启(堆叠配置需重启生效)
[HUAWEI] save
[HUAWEI] restart

# ========== 交换机 B(优先级 100,将成为 Slave) ==========
[HUAWEI] stack
[HUAWEI-stack] priority 100
[HUAWEI-stack] quit

[HUAWEI] interface StackPort1 1
[HUAWEI-StackPort1-1] port group 0 member interface FortyGigE 1/0/25
[HUAWEI-StackPort1-1] quit

[HUAWEI] save
[HUAWEI] restart

4.2 跨设备 Eth-Trunk 配置

# ========== 堆叠组配置跨设备 Eth-Trunk ==========

# 1. 创建 Eth-Trunk
[HUAWEI-AGG-1] interface Eth-Trunk 10
[HUAWEI-AGG-1-Eth-Trunk10] mode lacp-static
[HUAWEI-AGG-1-Eth-Trunk10] trunk port GigabitEthernet 1/0/1
[HUAWEI-AGG-1-Eth-Trunk10] trunk port GigabitEthernet 2/0/1
[HUAWEI-AGG-1-Eth-Trunk10] mode hybrid
[HUAWEI-AGG-1-Eth-Trunk10] portlink-type trunk
[HUAWEI-AGG-1-Eth-Trunk10] port trunk allow-pass vlan 10 20 30
[HUAWEI-AGG-1-Eth-Trunk10] quit

# ========== 验证 ==========
[HUAWEI-AGG-1] display eth-trunk 10
# 确认两个成员端口来自不同的物理设备
[HUAWEI-AGG-1] display stack

4.3 堆叠组间 VRRP 配置

# ========== 堆叠组 1(VRRP Master) ==========

# 1. 配置 VLANIF 接口和 VRRP
[HUAWEI-AGG-1] interface Vlanif 10
[HUAWEI-AGG-1-Vlanif10] ip address 10.10.10.1 255.255.255.0
[HUAWEI-AGG-1-Vlanif10] vrrp vrid 1 virtual-ip 10.10.10.254
[HUAWEI-AGG-1-Vlanif10] vrrp vrid 1 priority 120
[HUAWEI-AGG-1-Vlanif10] vrrp vrid 1 preempt timer delay 10
[HUAWEI-AGG-1-Vlanif10] vrrp vrid 1 track bfd-session 1 reduced 40
[HUAWEI-AGG-1-Vlanif10] quit

# ========== 堆叠组 2(VRRP Backup) ==========
[HUAWEI-AGG-2] interface Vlanif 10
[HUAWEI-AGG-2-Vlanif10] ip address 10.10.10.2 255.255.255.0
[HUAWEI-AGG-2-Vlanif10] vrrp vrid 1 virtual-ip 10.10.10.254
[HUAWEI-AGG-2-Vlanif10] vrrp vrid 1 priority 100
[HUAWEI-AGG-2-Vlanif10] vrrp vrid 1 preempt timer delay 10
[HUAWEI-AGG-2-Vlanif10] vrrp vrid 1 track bfd-session 1 reduced 40
[HUAWEI-AGG-2-Vlanif10] quit

# ========== 验证 ==========
[HUAWEI-AGG-1] display vrrp brief
[HUAWEI-AGG-2] display vrrp brief

4.4 堆叠分裂处理配置

# ========== 堆叠分裂处理策略 ==========

# 1. 配置保留优先级高的堆叠组
[HUAWEI-AGG-1] stack
[HUAWEI-AGG-1-stack] split-recovery priority
[HUAWEI-AGG-1-stack] quit

# 2. 配置分裂后等待时间(防止频繁震荡)
[HUAWEI-AGG-1] stack
[HUAWEI-AGG-1-stack] split-recovery interval 10
[HUAWEI-AGG-1-stack] quit

4.5 故障案例:堆叠分裂导致 VRRP 脑裂

场景描述:汇聚堆叠组 1 的两台交换机之间堆叠线缆故障,堆叠分裂为两个独立设备。两台设备都运行 VRRP Master 状态,与堆叠组 2 分别建立了 VRRP 关系。

排查过程:

  1. 检查堆叠状态:
[HUAWEI-AGG-1] display stack
# 堆叠状态异常,仅显示单一设备信息
# 堆叠线缆端口 Down
  1. 检查 VRRP 状态:
# 堆叠组 1 分裂后的两个部分都显示为 Master
[RTR-PartA] display vrrp brief
# VRID 1, State: Master

[RTR-PartB] display vrrp brief
# VRID 1, State: Master
  1. 根因确认:堆叠分裂后,两部分各自保留了完整的配置和 VRRP 状态。由于堆叠线缆故障,两部分之间无法通信,各自独立运行 VRRP。

处理措施:

# 第一步:修复堆叠线缆
# 检查并更换堆叠线缆,恢复堆叠连接

# 第二步:配置堆叠分裂处理
[HUAWEI-AGG-1] stack
[HUAWEI-AGG-1-stack] split-recovery priority
# 分裂时保留优先级高的部分,另一部分自动退出

# 第三步:配置分裂检测
[HUAWEI-AGG-1-stack] split-recovery interval 30
# 分裂后等待 30 秒再处理,避免短暂抖动

4.6 故障案例:跨设备 Eth-Trunk 哈希不均

场景描述:跨设备 Eth-Trunk 部署后,发现堆叠组中一台交换机 CPU 和端口流量远高于另一台。

排查过程:

  1. 检查 Eth-Trunk 负载分布:
[HUAWEI-AGG-1] display eth-trunk 10
# 成员端口 GigabitEthernet 1/0/1 流量 900Mbps
# 成员端口 GigabitEthernet 2/0/1 流量 100Mbps
# 负载严重不均
  1. 根因分析:Eth-Trunk 的负载均衡算法默认基于源 MAC 地址。如果接入的终端 MAC 地址分布不均匀(如大量终端属于同一子网),哈希结果会偏向某个成员端口。

处理措施:

# 调整 Eth-Trunk 负载分担模式
[HUAWEI-AGG-1] interface Eth-Trunk 10
[HUAWEI-AGG-1-Eth-Trunk10] load-balance src-dst-mac
# 使用源 MAC + 目的 MAC 哈希
# 或使用 src-dst-ip 基于 IP 地址哈希
[HUAWEI-AGG-1-Eth-Trunk10] load-balance src-dst-ip

五、总结

项目 说明
堆叠本质 多台物理交换机虚拟为一台逻辑设备
跨设备 Eth-Trunk 堆叠后的核心优势,实现链路级负载分担
堆叠 + VRRP 堆叠组内负载分担,堆叠组间主备冗余
切换时间 堆叠组内毫秒级,堆叠组间 VRRP 秒级
堆叠分裂 需要配置 split-recovery 策略防止脑裂
华为推荐 汇聚层堆叠 + 堆叠间 VRRP + BFD 快速检测

思考

  1. 堆叠组之间的 VRRP 切换时间比堆叠组内的切换时间慢得多。如果要求亚秒级切换,有什么替代方案?

  2. 堆叠线缆通常使用两根以实现冗余。如果两根堆叠线缆同时故障,堆叠分裂后 VRRP 会发生什么变化?

  3. 跨设备 Eth-Trunk 的哈希不均问题在什么场景下最严重?如何从根本上解决?

下篇预告:第121篇:Smart Link与Monitor Link原理