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 故障域层级可视化
下图展示了四级故障域层级的嵌套关系与典型故障点。每个层级都是其上层故障域的组成部分,故障从底层向上传播。
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 实现故障域感知的配额调度。