多可用区部署是什么
把业务分层部署到多个可用区,是抵御单机房故障的常规做法:接入层在后端池里跨可用区挂载实例,计算层按可用区均匀分布,数据层把主备或副本分散到不同可用区。真正的难点不在部署形态,而在应用是否能在单个可用区整体失效时继续提供服务。
分层落地方式
| 层次 | 建议做法 | 说明 |
|---|---|---|
| 接入层 | 负载均衡跨可用区挂载后端 | 后端池中两个可用区各有健康实例 |
| 计算层 | 实例按可用区均匀分布 | 配合弹性伸缩组的多可用区配置,避免单区扩容失败 |
| 数据层 | 主备或副本跨可用区 | 数据库高可用版与对象存储的多副本是常见基础 |
| 中间件 | 会话与队列外置 | 会话不落在单实例内存中,队列要有重试机制 |
落地时的检查项
- 确认负载均衡后端池已覆盖两个可用区,且健康检查口径与业务一致
- 应用具备超时、重试与熔断逻辑,跨可用区调用异常时不会整体挂起
- 会话数据外置到缓存或数据库,避免实例切换导致用户掉线
- 数据库与缓存的主备节点分布在不同可用区,并验证过切换流程
- 容量按单可用区失效后剩余资源仍可承载来预留,而不是按五五分摊
- 扩缩容、发布与故障演练都在两个可用区同时验证
核对部署分布
核对部署分布
aliyun ecs DescribeInstances --RegionId cn-hangzhou --PageSize 50 # 查看实例所在可用区分布
aliyun slb DescribeLoadBalancerAttribute --LoadBalancerId lb-bp1xxxx # 查看后端池与可用区覆盖
aliyun ess DescribeScalingGroups --RegionId cn-hangzhou # 核对伸缩组的可用区配置
# 把实例清单按可用区分组统计,确认没有明显偏斜跨可用区部署不等于自动高可用:应用需要能容忍单可用区全量实例失败,包括连接超时、重试次数与容量承接。只在架构图上画了两个可用区,而应用在依赖超时时整体阻塞,故障时仍会全站不可用。
把跨可用区纳入变更流程:扩缩容、发布与演练都要在两个可用区同时验证,避免只在单个可用区验证通过。演练时主动停掉一个可用区的实例,观察业务是否按预期降级而不是直接失败。