多可用区负载均衡
把负载均衡实例与后端成员分布到多个可用区,单可用区故障时流量可以切到其余可用区继续服务。但容灾能力成立的前提是两边都真的有余量:如果后端成员全部集中在同一个可用区,那么即使负载均衡实例本身是多可用区的,可用区故障依然会让整组服务不可用。所以「实例多可用区」与「后端多可用区」是两件事,必须都做到。
基本信息
| 实例部署 | 主可用区加备可用区(具体形态按产品) |
|---|---|
| 后端分布 | 成员尽量均衡分布到各可用区 |
| 容灾动作 | 单可用区故障时流量切到其余可用区 |
| 成本注意 | 跨可用区流量可能产生费用与额外延迟,需要权衡 |
典型使用场景
- 核心业务要求单区故障不影响对外服务,需要实例与后端都跨区
- 可用区级演练:主动下线一个区的后端,验证流量切换是否顺畅
- 容量规划:按单区故障后剩余容量仍能承载业务来设计规格
- 多活架构演进:从主备过渡到多区同时承接流量
查看实例所在可用区
查看实例所在可用区
aliyun slb DescribeLoadBalancerAttribute --RegionId cn-hangzhou \
--LoadBalancerId lb-xxxxxxxx | grep -i -E 'zone|address'
# 后端成员所在可用区在服务器组中查看,逐台核对分布是否均衡容灾能力判断
| 组合 | 容灾效果 |
|---|---|
| 实例多区,后端多区 | 单区故障可切换,能力完整 |
| 实例多区,后端单区 | 后端所在区故障即整组不可用 |
| 实例单区,后端多区 | 入口单点,仍有中断风险 |
后端全部集中在单个可用区时,即使负载均衡多可用区部署,可用区故障依然会导致整组不可用。
容量与成本怎么权衡
多可用区意味着要有冗余容量:单区故障后,剩余可用区需要扛住全量流量,因此每个区的后端规格不能只按平时的五成来配。这个冗余是有成本的,可以用「按重要级别分级」的方式控制——核心链路按单区全量承载设计,非核心业务允许降级或排队,接受故障期间性能下降。跨可用区调用还会带来额外的网络时延,对时延敏感的组件尽量让调用方与被调用方处在同一可用区,把跨区流量限定在必要的链路上。