高可用与冗余设计
让高可用设计真正闭环:冗余可切换、切换有验证、故障有预案。本技能给出冗余技术选型、可用性测算(几个 9)、故障收敛时间对比、厂商配置与验证方法。
> 目标:从「配了冗余」升级到「冗余真的能切」,每次切换都有实测数据支撑。
一、核心原理
高可用的核心是消除单点 + 快速故障收敛。可用性用「几个 9」衡量:A = MTBF / (MTBF + MTTR)。冗余的数学本质是并联系统:两个可用性 99.9% 的节点并联后,整体可用性 = 1 - (1-0.999)² = 99.9999%。但配了冗余 ≠ 能切换,切换时间(收敛时间)取决于 VRRP/堆叠/M-LAG/BFD 等技术选型。
flowchart LR
F[故障发生] --> D[检测机制<br/>BFD/心跳/Hello]
D --> S[故障切换<br/>VRRP抢占/M-LAG/堆叠]
S --> R[流量恢复]
D -. "检测延迟(ms~s)" .-> S
S -. "切换延迟(ms~s)" .-> R
二、参考冗余架构
flowchart TB
GW1[网关-1<br/>VRRP Master] --- GW2[网关-2<br/>VRRP Backup]
GW1 --- MLAG[M-LAG/堆叠<br/>双活转发]
GW2 --- MLAG
MLAG --- SW[下游交换机<br/>双归链路]
GW1 -. BFD .- GW2
配套 ASCII 冗余拓扑:
上行/出口
/ \
GW-1(Master) GW-2(Backup) <- VRRP 网关冗余
\ | /
\ BFD / <- BFD 快速检测
\ | /
M-LAG 逻辑交换机 <- 双活转发(非主备)
||
下游交换机(双归)
三、关键参数与决策表
| 技术 | 收敛时间 | 转发模式 | 适用场景 | 常见错误 |
|---|---|---|---|---|
| VRRP | 1~3s(配 BFD < 1s) | 主备 | 网关冗余 | 只配 VRRP 不做链路双归 |
| 堆叠(iStack/CSS) | 亚秒(成员故障) | 双活 | 园区核心/汇聚 | 堆叠分裂无仲裁 |
| M-LAG | 亚秒 | 双活(跨设备聚合) | DC/园区双归 | 配 M-LAG 忘记一致性检查 |
| BFD | 50~300ms 检测 | 辅助检测 | 配合 OSPF/BGP/VRRP | 检测间隔设太短吃 CPU |
| ECMP | 亚秒 | 多路径负载 | Spine-Leaf | 哈希不均导致单路径拥塞 |
四、可用性测算 SOP
- 目标分级:按业务定可用性目标(办公 99.9%、生产 99.99%、核心 99.999%)。
- 单点清单:列出所有组件(设备/链路/电源/网关/出口),标记单点。
- 可用性测算:用
scripts/availability_calculator.py算单节点与冗余后可用性。 - 冗余设计:设备双机、链路双上行(物理分离)、协议冗余、双电源双配电。
- 隐藏单点排查:DNS、NTP、AAA、管理口、出口路由器。
- 切换验证:实测切换时间,留存抓包与记录。
- 脑裂防范:双活场景配仲裁/心跳(堆叠 MAD、M-LAG peer-link + keepalive)。
五、厂商落地配置示例
华为 CloudEngine — VRRP + BFD
#
# BFD 会话(网关间心跳)
#
bfd
quit
bfd gw bind peer-ip 192.168.100.251 source-ip 192.168.100.252
discriminator local 1
discriminator remote 1
min-tx-interval 100
min-rx-interval 100
detect-multiplier 3
commit
#
# VRRP 网关
#
interface Vlanif 100
ip address 192.168.100.252 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.100.254
vrrp vrid 1 priority 120
vrrp vrid 1 preempt-mode timer delay 60
vrrp vrid 1 track bfd-session session-name gw reduced 30
quit
思科 Nexus — M-LAG(双活跨设备聚合)
!
! M-LAG 域配置(两台 Leaf)
!
feature lacp
feature vpc
!
vpc domain 1
peer-keepalive destination 10.0.0.2 source 10.0.0.1
peer-link port-channel 10
!
interface port-channel 10
switchport mode trunk
vpc peer-link
!
interface port-channel 20
vpc 20
!
interface Ethernet1/1
channel-group 20 mode active
华为 CloudEngine — BFD 检测 OSPF
ospf 1 router-id 10.0.0.1
bfd all-interfaces enable
bfd all-interfaces min-tx-interval 100 min-rx-interval 100 detect-multiplier 3
area 0.0.0.0
network 10.0.0.0 0.0.0.255
quit
> 完整可填空模板见 assets/ha-template.txt,逐行解释见 references/vendor-configs.md。
六、验证方法
| 验证项 | 命令 | 达标阈值 |
|---|---|---|
| VRRP 状态 | display vrrp brief / show vrrp brief |
Master/Backup 唯一 |
| BFD 会话 | display bfd session all |
状态 Up |
| M-LAG 一致性 | show vpc consistency-parameters |
无不一致项 |
| 切换时间 | 断开主设备上行计时 | < 3s(配 BFD < 1s) |
| 可用性 | availability_calculator.py |
达到目标 9 数 |
# 华为
display vrrp brief
display bfd session all
# 思科
show vrrp brief
show vpc brief
show vpc consistency-parameters
七、常见故障排查表
| 现象 | 根因方向 | 首要动作 |
|---|---|---|
| VRRP 双主(脑裂) | 心跳中断、无抢占/track | 检查心跳链路,配 preempt + track |
| M-LAG 状态异常 | peer-link/keepalive 中断 | 查 show vpc 与 keepalive 连通性 |
| 堆叠分裂 | 堆叠链路中断无 MAD | 配 MAD 检测,检查堆叠口 |
| BFD 会话 Down | 检测间隔不匹配、链路丢包 | 核对两端 min-tx/rx 与 multiplier |
| 切换时间超标 | 未配 BFD,靠协议默认 hello | 开 BFD 缩短检测延迟 |
八、冗余技术选型速查
按需选择:
| 需求 | 首选技术 | 理由 |
|---|---|---|
| 只要网关冗余、预算有限 | VRRP(配 BFD) | 主备够用,成本低 |
| 园区核心/汇聚双活 | 堆叠 iStack/CSS | 单一管理面,配置简单 |
| DC 双归、可滚动升级 | M-LAG(vPC/MLAG) | 双活 + 独立管理面 |
| 路由快速收敛 | BFD + OSPF/BGP | 亚秒检测 |
| 多路径负载分担 | ECMP | 无阻塞东西向 |
选型红线:堆叠分裂必须配 MAD;M-LAG 必须配 peer-link + keepalive;VRRP 必须配 track(上行口/BFD)否则上行断后仍主。
九、输出规范
交付时应产出:可用性目标矩阵、可用性测算过程(MTBF/MTTR → 9 数)、单点清单与消除措施、冗余拓扑设计、切换测试记录(含时间与结果)、降级预案。
十、边界与风险
- 可用性计算基于 MTBF/MTTR 假设,实际值需以运维统计数据校准,不承诺绝对可用性数字。
- 堆叠/M-LAG 有分裂风险,必须配仲裁与 keepalive。
- 冗余链路必须物理路径分离,同一管道/机房不算冗余。
配套资源
- 参数与收敛时间手册:
references/ha-parameters.md - 厂商配置对照:
references/vendor-configs.md - 故障案例库:
references/troubleshooting.md - 数据基线:
assets/ha-convergence-comparison.csv - 配置模板:
assets/ha-template.txt - 脚本:
scripts/availability_calculator.py(MTTR/可用性计算器) - 配套检查清单:《高可用与冗余设计检查清单》