第120篇:堆叠与 VRRP 结合的高可用方案
关键词
堆叠、iStack、集群、VRRP、高可用、跨设备链路聚合、M-LAG
一、为什么要堆叠 + VRRP?
1.1 各自的问题
| 方案 | 解决的问题 | 遗留问题 |
|---|---|---|
| 独立 VRRP | 网关冗余 | 上行链路只有一条可用;设备管理分散 |
| 独立堆叠 | 设备冗余、简化管理 | 堆叠分裂风险;堆叠设备共用 IP |
| 独立链路聚合 | 链路冗余、带宽倍增 | 无法跨设备聚合 |
1.2 堆叠 + VRRP 的优势
将两台交换机堆叠为一台逻辑交换机,再与另一组堆叠做 VRRP:
逻辑交换机 A(堆叠) 逻辑交换机 B(堆叠)
| SW1 SW2 (Master) | SW3 SW4 (Backup) | |
|---|---|---|
| │ │ | ||
| └──────────┬─────────────────┘ | ||
| │ | ||
| PC 用户 | ||
| 网关 = VIP(VRRP) |
优势: - 设备级冗余:一台交换机故障,堆叠内其他设备接管 - 链路级冗余:跨设备链路聚合(Eth-Trunk) - 网关级冗余:VRRP 在堆叠之间切换 - 管理简化:堆叠组对外是一个管理 IP
二、堆叠基础回顾
2.1 华为 iStack
| 概念 | 说明 |
|---|---|
| 堆叠成员 | 最多 9 台(盒式交换机) |
| 角色 | Master(主)/ Standby(备)/ Slave(从) |
| 堆叠口 | 专用堆叠口或普通光口 |
| 堆叠线缆 | 堆叠线缆/光纤/DAC 线 |
| 堆叠域 | Domain ID:同一域内设备才能堆叠 |
2.2 iStack 配置
# ===== SW1 配置 =====
stack
stack member 1 priority 200 # 优先级高 → 成为 Master
stack member 1 domain 10
#
interface stack-port 0/1
port member-group interface GigabitEthernet0/0/27
#
interface stack-port 0/2
port member-group interface GigabitEthernet0/0/28
# ===== SW2 配置 =====
stack
stack member 2 priority 100 # 优先级低 → Standby
stack member 2 domain 10
#
interface stack-port 0/1
port member-group interface GigabitEthernet0/0/27
#
interface stack-port 0/2
port member-group interface GigabitEthernet0/0/28
# 配置生效后,两台交换机自动重启 → 堆叠合并
# 堆叠后的管理 IP:
interface Vlanif100
ip address 10.254.1.1 255.255.255.0
三、堆叠 + VRRP 部署方案
3.1 方案一:双堆叠 VRRP
堆叠 A(Master) 堆叠 B(Backup)
| SW1 SW2 VRRP 优先 120 | SW3 SW4 VRRP 优先 100 | |
|---|---|---|
| │ │ | ||
| Eth-Trunk1 Eth-Trunk2 | ||
| │ │ | ||
| └───────────┬─────────────┘ | ||
| │ | ||
| Eth-Trunk3(跨堆叠到服务器/汇聚) |
# ===== 堆叠 A 配置 =====
# 下行链路聚合到堆叠 B
interface Eth-Trunk1
trunkport GigabitEthernet0/0/1
trunkport GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10
# VRRP 配置
interface Vlanif10
ip address 192.168.10.2 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.10.1
vrrp vrid 1 priority 120
# ===== 堆叠 B 配置 =====
interface Eth-Trunk2
trunkport GigabitEthernet0/0/1
trunkport GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10
interface Vlanif10
ip address 192.168.10.3 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.10.1
# 优先级默认 100
3.2 方案二:M-LAG(跨设备链路聚合)
华为 M-LAG(Multi-Chassis Link Aggregation)比 iStack + VRRP 更先进:
- 两台独立设备运行 M-LAG,提供跨设备链路聚合
- 设备间只需一条 peer-link 链路
- 不需要堆叠线缆,设备可物理分离
M-LAG 双活网关
┌──────────────┐
│ SW1 SW2 │
│ (peer-link) │
└──┬───────┬───┘
│ │
Eth1 Eth2
│ │
└──┬────┘
│
服务器(双归接入)
四、堆叠分裂问题与 MAD
4.1 堆叠分裂的危害
堆叠链路故障 → 堆叠分裂成两个独立设备 → 两个设备有相同的配置(相同 IP、相同 MAC)→ IP 地址冲突。
原堆叠 A(SW1+SW2)
│
堆叠口故障 → 分裂!
│
SW1(Master) SW2(Master 转 Standalone)
IP: 10.254.1.1 IP: 10.254.1.1(冲突!)
4.2 MAD(Multi-Active Detection)
MAD 检测堆叠分裂后,将一方置于 Recovery 状态,关闭其业务端口:
# 方式一:通过直连链路检测(DAD)
interface Eth-Trunk2
mode lacp-static
mad detect mode direct
# 方式二:通过管理网络检测
mad detect mode relay
分裂后的行为:
堆叠分裂:
1. 两方都发送 MAD 检测报文
2. 检测到分裂 → 非 Master 方进入 Recovery 状态
3. Recovery 方关闭所有业务端口
4. 堆叠链路恢复后,Recovery 方重启合并
五、堆叠 + VRRP 的切换场景
| 故障场景 | 切换行为 | 影响时间 |
|---|---|---|
| 堆叠内单交换机故障 | 堆叠内 Master 无缝切换 | 毫秒级 |
| 堆叠内链路聚合内单链路故障 | 流量切换至另一链路 | 毫秒级 |
| 整堆叠故障 | VRRP 切换到 Backup 堆叠 | 秒级(3s) |
| 堆叠分裂 | MAD 关闭分裂方端口 | 秒级 |
| VRRP 主堆叠上行故障 | Track 触发优先级降级 | 秒级 |
六、最佳实践
| 建议 | 说明 |
|---|---|
| 堆叠成员 ≤ 2 | 成员越多,分裂风险越大 |
| 堆叠链路冗余 | 至少两根堆叠线缆,避免单点 |
| MAD 必须配置 | 防止堆叠分裂导致全网瘫痪 |
| 双堆叠 VRRP | 两套堆叠做 VRRP,实现设备级+网关级冗余 |
| M-LAG 优先 | 对低延迟、大二层要求高的场景用 M-LAG |
| 上行联路 Track | 堆叠内做 Track,配合 VRRP 切换 |
七、总结
| 知识点 | 核心要点 |
|---|---|
| 堆叠 | 多台交换机虚拟为一台,简化管理 |
| VRRP | 两套堆叠间实现网关冗余 |
| M-LAG | 跨设备链路聚合,不依赖堆叠 |
| MAD | 防止堆叠分裂后 IP 冲突 |
| 组合优势 | 设备级 + 链路级 + 网关级三重冗余 |
八、思考
- 堆叠 + VRRP 相比单纯 VRRP 有什么优势?
- 堆叠分裂后如果不配置 MAD,会有什么后果?
- M-LAG 和 iStack 有什么区别?
- 双堆叠 VRRP 中,如果 Master 堆叠完全故障,恢复后会发生什么?(考虑抢占模式)
- 在堆叠中,为什么堆叠链路必须冗余?
下篇预告:第121篇《Smart Link 与 Monitor Link 原理》——讲解 Smart Link 的主备链路切换和 Monitor Link 的联动检测机制。