4. 故障域理论基础:CAP理论、故障域与可用区(AZ)的关系、故障域粒度

在构建高可用控制平面时,理解故障域的理论基础是进行隔离设计的前提。本节从分布式系统最核心的 CAP 理论出发,分析其在控制平面场景下的取舍,并建立故障域与云可用区(Availability Zone, AZ)之间的映射关系,最后定义不同粒度的故障域划分策略。

4.1 CAP 理论在控制平面中的权衡

CAP 理论指出,分布式系统在 一致性(Consistency)、可用性(Availability) 和 分区容错性(Partition Tolerance) 三者中最多同时满足两个。控制平面作为集群的“大脑”,其状态存储(如 etcd)通常选择 CP 模型,即牺牲部分可用性以保障强一致性。

属性 定义 控制平面影响
C(一致性) 所有节点在同一时刻看到相同的数据 etcd 通过 Raft 保证线性一致性,防止调度冲突
A(可用性) 每个请求都能获得非错误的响应 Leader 故障时,选举期间写入不可用(约 200ms-2s)
P(分区容错) 系统在网络分区时仍能正常运行 跨 AZ 部署时,分区是常态,必须优先保证 P
关键结论: 控制平面是典型的 CP 系统。在跨可用区部署时,网络分区不可避免,因此必须优先保证分区容错性(P),并通过多数派机制(Quorum)在一致性(C)和可用性(A)之间做出明确取舍——当分区发生时,少数派分区中的控制平面将停止服务,以防止“脑裂”。

4.2 故障域与可用区(AZ)的关系

故障域(Fault Domain)是共享单一故障点的一组资源集合。云可用区(AZ)是云提供商对物理故障域的抽象封装。一个 AZ 通常对应一个独立的数据中心或数据中心内的独立电力、网络、制冷单元。

故障域与 AZ 的映射关系如下:

  • 物理故障域 → AZ: 一个 AZ 包含一个或多个物理故障域,但云提供商对外统一暴露为 AZ 粒度。
  • AZ 是故障隔离的最小售卖单元: 不同 AZ 之间的故障(电力中断、网络割接、火灾)理论上互不影响。
  • 控制平面跨 AZ 部署: 将 etcd 节点和 API Server 分散到 3 个或更多 AZ,利用 AZ 的物理隔离特性实现故障域分离。
实践建议: 在云上部署控制平面时,始终选择 多 AZ(≥3) 模式。2 个 AZ 在发生单 AZ 故障时,剩余节点无法形成多数派(Quorum),导致控制平面整体不可用。3 个 AZ 允许任意 1 个 AZ 完全故障,剩余 2 个 AZ 仍能维持 Quorum。
故障域与可用区(AZ)分层映射关系 故障域与可用区(AZ)分层映射关系 物理故障域层(Physical Fault Domain) 独立电力 / 独立网络 / 独立制冷 / 独立机架 可用区(AZ)抽象层 云提供商封装:一个 AZ 包含 1~N 个物理故障域 控制平面跨 AZ 部署 etcd 节点 / API Server / Controller Manager 分散到 ≥3 个 AZ 故障隔离边界:AZ 之间故障互不影响

4.3 故障域粒度划分

故障域并非只有 AZ 一种粒度。在实际架构中,故障域可以从 硬件 到 区域 划分为多个层级。控制平面隔离设计需要根据故障影响范围选择合适的粒度。

粒度层级 故障范围 控制平面影响 隔离手段
进程 / 容器 单个 etcd 进程崩溃 Leader 重新选举,短暂不可用 Pod 反亲和、健康检查、自动重启
物理机 / 虚拟机 宿主机宕机 该节点上的控制平面组件丢失 跨主机调度、etcd 多数派容忍
机架 / 交换机 整机架断电或 ToR 交换机故障 该机架上所有控制平面实例离线 跨机架部署、Topology Spread Constraints
可用区(AZ) 整个数据中心故障 该 AZ 内控制平面全部不可用 跨 AZ 部署、Quorum 机制、Active-Standby
区域(Region) 地震、大规模电力故障 整个 Region 控制平面失效 多 Region 联邦、Global Control Plane
常见误区: 仅依赖 AZ 粒度进行故障隔离是不够的。如果所有控制平面 Pod 被调度到同一台物理机或同一个机架上,AZ 故障域隔离将形同虚设。必须结合 节点级反亲和 和 拓扑分布约束,确保在更细粒度上实现故障域分散。

4.4 故障域划分的架构原则

基于上述理论,控制平面故障域划分应遵循以下原则:

  1. 最小共享原则: 任何两个控制平面组件之间共享的故障点越少越好。例如,etcd 成员不应共享同一台物理机或同一个 ToR 交换机。
  2. 多数派跨越原则: 在任意单一故障域失效时,剩余故障域中的 etcd 节点数量必须 ≥ Quorum(多数派)。对于 3 节点 etcd,Quorum = 2,因此至少需要 3 个故障域。
  3. 故障域正交原则: 不同层级的故障域应相互正交,避免级联故障。例如,AZ 故障不应导致跨 AZ 的网络全部中断(需要独立的网络故障域)。
  4. 可观测性原则: 每个故障域边界应有明确的监控指标和告警,能够快速定位故障域范围。
故障域粒度分层与隔离策略 故障域粒度分层与隔离策略 进程 / 容器 Pod 反亲和 + 健康检查 + 自动重启 影响:Leader 选举 物理机 / 虚拟机 跨主机调度 + etcd 多数派容忍 影响:节点丢失 机架 / 交换机 Topology Spread Constraints + 跨机架部署 影响:批量离线 可用区(AZ) 跨 AZ 部署 + Quorum 机制 + Active-Standby 影响:AZ 级故障 区域(Region) 多 Region 联邦 + Global Control Plane 影响:Region 级灾难

4.5 故障域划分的量化指标

在实际架构验证中,可以通过以下指标衡量故障域划分的有效性:

  • 故障域覆盖率: 控制平面组件分布在多少个独立故障域中。目标值:≥3 个 AZ,且每个 AZ 内至少 1 个 etcd 节点。
  • 故障域冗余度: 在任意单一故障域失效后,剩余组件能否继续提供服务。etcd 要求剩余节点数 ≥ Quorum。
  • 故障域隔离度: 两个组件共享同一故障域的概率。理想值为 0,实际应通过反亲和策略降至最低。
  • 恢复时间目标(RTO): 故障域切换后,控制平面恢复完全读写能力的时间。跨 AZ 故障通常要求 RTO < 30s。