3、故障域理论基础:故障域定义、故障域层级(节点/机架/可用区/区域)、故障域与高可用关系

3.1 故障域定义

故障域(Fault Domain)是分布式系统与云原生架构中的核心抽象概念,指一组共享单一故障点的资源集合。当该故障点失效时,集合内的所有资源将同时不可用。故障域的本质是故障传播边界——故障被限制在域内,不会跨域扩散。

关键特征:
  • 共享风险:同一故障域内的组件依赖相同的物理或逻辑基础设施(电源、网络交换机、制冷系统、控制平面)。
  • 故障相关性:域内故障概率高度正相关,域间故障相互独立或弱相关。
  • 恢复隔离:故障域的恢复操作(如重启、重调度)不会影响其他域的正常服务。

在多租户配额管理场景中,故障域决定了配额资源的物理分布约束。如果两个租户的 Pod 被调度到同一故障域,该域故障时两个租户同时受损;反之,跨故障域分布可显著降低多租户同时故障的概率。

3.2 故障域层级模型

云原生基础设施通常定义四级故障域层级,从底层硬件到顶层地理区域。层级越高,故障影响范围越大,恢复时间越长。

层级 故障域名称 典型故障点 MTBF(参考) 影响范围
L1 节点(Node) CPU/内存/磁盘/网卡/OS 内核崩溃 数月~数年 单台物理机或虚拟机
L2 机架(Rack) ToR 交换机、机架 PDU、机架内布线 1~3 年 整机架 20~40 台节点
L3 可用区(Availability Zone, AZ) 数据中心电力、制冷、汇聚交换机 3~10 年 单个数据中心或数据中心楼层
L4 区域(Region) 自然灾害、骨干网中断、大规模电力故障 10 年以上 跨多个 AZ 的地理区域
设计原则:故障域层级越高,故障概率越低,但一旦发生影响越大。多租户配额分配应优先将关键工作负载分布到不同可用区(L3),其次才是不同机架(L2)。节点级(L1)故障域仅用于本地快速恢复,不能作为跨租户故障隔离的可靠边界。

3.3 故障域层级可视化

下图展示了四级故障域层级的嵌套关系与典型故障点。每个层级都是其上层故障域的组成部分,故障从底层向上传播。

故障域层级模型与故障传播 L4 区域(Region) 故障点:自然灾害、骨干网中断、大规模电力故障 可用区 A(AZ-A) 故障点:数据中心电力/制冷/汇聚交换机 可用区 B(AZ-B) 故障点:数据中心电力/制冷/汇聚交换机 机架 A1 ToR 交换机 机架 PDU 布线 机架 A2 ToR 交换机 机架 PDU 机架 B1 ToR 交换机 机架 PDU 机架 B2 ToR 交换机 机架 PDU N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 节点故障 节点故障 机架故障 机架故障 AZ 故障 AZ 故障 故障传播方向:节点 → 机架 → 可用区 → 区域。层级越高,影响范围越大,恢复时间越长。

3.4 故障域与高可用关系

高可用(High Availability, HA)的核心目标是将系统可用性提升至 99.99% 以上(年停机时间 ≤ 52.56 分钟)。故障域是实现高可用的物理基础——没有合理的故障域划分,任何软件层面的冗余设计都无法抵御基础设施级故障。

3.4.1 故障域冗余策略

  • 节点级冗余:同一工作负载的多个副本分布在不同的节点上(L1 故障域分离)。可抵御单节点故障,但无法抵御机架级故障。
  • 机架级冗余:副本分布在不同机架(L2 故障域分离)。可抵御 ToR 交换机或机架 PDU 故障,适用于中小规模集群。
  • 可用区级冗余:副本分布在不同可用区(L3 故障域分离)。可抵御整个数据中心故障,是云原生架构的标准 HA 模式。
  • 区域级冗余:跨 Region 部署(L4 故障域分离)。用于灾难恢复(DR)场景,RTO/RPO 通常在分钟到小时级别。
常见误区:仅将 Pod 副本数设置为 3 并不等于高可用。如果 3 个副本被调度到同一机架或同一可用区,该故障域失效时所有副本同时丢失。真正的 HA 必须结合拓扑分布约束(Topology Spread Constraints)和反亲和性规则(Pod Anti-Affinity),将副本强制分布到不同故障域。

3.4.2 故障域与可用性计算公式

假设单个节点的可用性为 99.9%(年停机 8.76 小时),机架内 20 个节点共享 ToR 交换机(可用性 99.99%),则机架级可用性为:

机架可用性 = 节点可用性 × 交换机可用性
           = 0.999 × 0.9999
           = 0.9989(约 99.89%)

跨 3 个机架部署 3 副本的系统可用性(假设机架故障独立):
系统可用性 = 1 - (1 - 0.9989)³
           = 1 - (0.0011)³
           = 1 - 1.331 × 10⁻⁹
           ≈ 99.99999987%(约 8 个 9)

该计算表明:跨故障域冗余可将系统可用性从单机架的 99.89% 提升至接近 100%。故障域层级越高,冗余带来的可用性增益越显著。

3.5 故障域与多租户配额的关系

在多租户配额管理系统中,故障域直接影响配额资源的物理分布策略:

租户类型 故障域要求 配额分配策略 典型场景
关键业务租户 强制跨可用区(L3) 每个 AZ 预留 50% 配额,禁止单 AZ 集中 金融交易、实时支付
普通业务租户 建议跨机架(L2) 机架级反亲和,允许单 AZ 内分布 Web 服务、API 网关
批处理租户 无强制要求 优先填满节点,提高资源利用率 大数据分析、模型训练
核心结论:故障域是连接基础设施可靠性与多租户配额管理的桥梁。在配额分配阶段,调度器必须将故障域约束作为硬性条件(Hard Constraint)或软性偏好(Soft Preference)写入调度策略,否则高可用设计将停留在理论层面。后续章节将详细讨论如何在 Kubernetes 中通过 topologySpreadConstraints 和 podAntiAffinity 实现故障域感知的配额调度。