2. 故障域基础概念:可用区(AZ)、区域(Region)、物理机架、网络分区、故障域与高可用的关系
在构建内部开发者平台(IDP)时,理解故障域(Failure Domain)是设计高可用架构的基石。故障域定义了系统中一个组件发生故障时,可能影响到的其他组件的范围。本章将系统梳理从物理设备到地理区域的故障域层级,并阐明其与高可用(High Availability, HA)之间的核心关系。
2.1 故障域的核心层级模型
现代数据中心和云环境通常将故障域划分为四个主要层级,从最底层的物理硬件到最顶层的地理区域。每一层级的故障影响范围和隔离能力各不相同。
| 层级 | 故障域名称 | 典型故障范围 | 隔离粒度 | 恢复手段 |
|---|---|---|---|---|
| L1 | 物理机架 / 电源域 | 单机架断电、交换机故障、冷却失效 | 物理硬件 | 硬件更换、备用电源切换 |
| L2 | 网络分区 / 可用区 | 网络交换机集群故障、光缆中断 | 逻辑网络 | 流量切换、BGP路由收敛 |
| L3 | 可用区(AZ) | 数据中心电力故障、制冷系统故障 | 数据中心 | 跨AZ负载均衡、自动故障转移 |
| L4 | 区域(Region) | 自然灾害、大规模电力中断、政治事件 | 地理区域 | 跨Region灾备、DNS全局负载均衡 |
关键原则:故障域层级越高,隔离能力越强,但跨域通信的延迟和成本也越高。IDP 平台设计时,应优先在低层级(如 AZ 内)实现冗余,再向高层级(Region 间)扩展。
2.2 物理机架与网络分区
物理机架是最基础的故障域单元。一个机架通常包含服务器、交换机、PDU(电源分配单元)和冷却设备。机架级故障可能由电源跳闸、交换机端口故障或人为误操作引起。
- 物理机架故障特征:影响范围局限于同一机架内的所有服务器;恢复时间通常为数分钟到数小时(取决于备件和现场响应)。
- 网络分区:指由于网络设备(如 ToR 交换机、汇聚交换机)故障导致的一组服务器与外界网络隔离。网络分区可能跨越多个机架,但通常仍在一个可用区内。
- 设计建议:在 IDP 的调度策略中,应将工作负载的副本(Pod、VM)分散到不同的物理机架和网络分区中,避免单点网络故障导致服务完全中断。
2.3 可用区(Availability Zone, AZ)
可用区是云原生架构中最核心的故障域概念。一个可用区通常由一个或多个数据中心组成,拥有独立的电力、冷却和网络基础设施。可用区之间通过低延迟、高带宽的专用光纤网络互联。
AZ 设计要点:同一 Region 内的 AZ 之间延迟通常小于 2ms,这使得同步复制和跨 AZ 负载均衡成为可能。IDP 平台应强制要求关键工作负载至少部署在 3 个 AZ 上,以实现真正的故障隔离。
可用区的核心价值在于:
- 故障隔离:一个 AZ 的故障(如电力中断)不会影响其他 AZ。
- 低延迟互联:AZ 间网络延迟极低,适合数据库同步复制、消息队列等有状态服务。
- 弹性扩展:工作负载可以跨 AZ 水平扩展,实现流量均匀分布。
2.4 区域(Region)
区域是最高级别的故障域,由多个可用区组成。区域之间通常相隔数百公里以上,拥有完全独立的电力、网络和基础设施。跨区域部署主要用于灾难恢复(Disaster Recovery, DR)和全球用户就近接入。
| 对比维度 | 可用区(AZ) | 区域(Region) |
|---|---|---|
| 故障隔离范围 | 数据中心级 | 地理区域级 |
| 典型延迟 | < 2ms | 10-100ms(取决于距离) |
| 数据同步方式 | 同步复制(强一致性) | 异步复制(最终一致性) |
| 适用场景 | 高可用、负载均衡 | 灾难恢复、全球部署 |
| IDP 资源隔离 | 插件实例、工作负载副本 | 插件部署、配置、用户数据 |
2.5 故障域与高可用的关系
高可用(HA)的核心目标是通过冗余和故障转移,确保系统在部分组件失效时仍能持续提供服务。故障域为 HA 提供了物理和逻辑上的隔离边界。没有故障域的正确划分,HA 就无从谈起。
两者之间的关系可以概括为以下三点:
- 故障域是 HA 的物理基础:HA 要求冗余组件必须部署在不同的故障域中,否则冗余将失去意义(例如,将两个副本放在同一个机架上,机架断电则两个副本同时失效)。
- 故障域范围决定 HA 策略:跨 AZ 的 HA 策略(如 Active-Active 负载均衡)与跨 Region 的 HA 策略(如 Active-Passive 灾备)在数据一致性、切换时间和成本上存在显著差异。
- IDP 中的故障域映射:在 IDP 平台中,Backstage 插件、工作负载、数据库实例等资源都应显式声明其故障域分布。例如,一个关键插件应部署在至少 2 个 AZ 上,且每个 AZ 内至少 2 个副本。
常见误区:不要将“高可用”等同于“多副本”。如果所有副本都位于同一个故障域(如同一个 AZ 或同一个机架),那么该故障域失效时,系统仍然会完全不可用。真正的 HA 必须结合故障域隔离。
2.6 故障域层级关系示意图
下图展示了从物理机架到区域的完整故障域层级关系,以及各层级之间的包含与隔离关系。
2.7 IDP 中的故障域实践要点
在 IDP 平台和 Backstage 插件架构中,故障域隔离需要落实到资源调度、数据存储和插件部署三个层面:
- 资源调度:工作负载调度器(如 Kubernetes 调度器)应支持
podAntiAffinity和topologySpreadConstraints,强制将副本分布到不同故障域。 - 数据存储:数据库和缓存服务应使用跨 AZ 的同步复制(如 RDS Multi-AZ)或跨 Region 的异步复制(如 Aurora Global Database)。
- 插件部署:Backstage 插件实例应部署在多个 AZ 中,并通过全局负载均衡器(如 AWS ALB 或 GCP HTTP LB)分发流量。插件配置和用户数据应存储在跨 AZ 冗余的存储后端(如 S3、GCS)。
IDP 设计检查清单:
- 是否所有关键工作负载都部署在至少 2 个 AZ 上?
- 是否每个 AZ 内的工作负载副本都分布在不同的物理机架和网络分区?
- 是否配置了跨 AZ 的自动故障转移和流量切换策略?
- 是否定期进行故障域隔离测试(如 Chaos Engineering 实验)?