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 就无从谈起。

两者之间的关系可以概括为以下三点:

  1. 故障域是 HA 的物理基础:HA 要求冗余组件必须部署在不同的故障域中,否则冗余将失去意义(例如,将两个副本放在同一个机架上,机架断电则两个副本同时失效)。
  2. 故障域范围决定 HA 策略:跨 AZ 的 HA 策略(如 Active-Active 负载均衡)与跨 Region 的 HA 策略(如 Active-Passive 灾备)在数据一致性、切换时间和成本上存在显著差异。
  3. IDP 中的故障域映射:在 IDP 平台中,Backstage 插件、工作负载、数据库实例等资源都应显式声明其故障域分布。例如,一个关键插件应部署在至少 2 个 AZ 上,且每个 AZ 内至少 2 个副本。
常见误区:不要将“高可用”等同于“多副本”。如果所有副本都位于同一个故障域(如同一个 AZ 或同一个机架),那么该故障域失效时,系统仍然会完全不可用。真正的 HA 必须结合故障域隔离。

2.6 故障域层级关系示意图

下图展示了从物理机架到区域的完整故障域层级关系,以及各层级之间的包含与隔离关系。

故障域层级关系与隔离边界 区域(Region) 可用区 1(AZ-1) 可用区 2(AZ-2) 物理机架 1 服务器 A1 服务器 A2 ToR 交换机 物理机架 2 服务器 B1 服务器 B2 ToR 交换机 网络分区 1 汇聚交换机集群 物理机架 3 服务器 C1 服务器 C2 ToR 交换机 物理机架 4 服务器 D1 服务器 D2 ToR 交换机 网络分区 2 汇聚交换机集群 AZ 间光纤互联(<2ms) 故障域隔离原则 同一 AZ 内:机架/网络分区故障不影响其他机架;不同 AZ 间:完全隔离,可独立故障

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 实验)?