4. 故障域模型:物理故障域与逻辑故障域的层级化设计

在容量规划驱动的多租户架构中,故障域(Failure Domain)是定义资源隔离边界与故障影响范围的核心抽象。合理的故障域模型能够确保单点故障(如机架断电、交换机宕机)不会扩散至整个集群,同时为租户重调度提供明确的约束边界。本章从物理故障域、逻辑故障域以及层级化设计三个维度展开,建立可量化的故障隔离模型。

4.1 物理故障域:基础设施层面的隔离边界

物理故障域对应数据中心基础设施的实体单元,其故障通常由硬件损坏、电力中断或网络分区引发。常见的物理故障域层级包括:

故障域层级 典型故障范围 隔离粒度 MTBF(参考)
机架(Rack) 单台交换机故障、PDU 跳闸、机架内节点网络中断 20-40 台物理节点 50,000 - 100,000 小时
电源域(Power Domain) UPS 故障、配电柜断路器跳闸、发电机切换失败 2-4 个机架(共享电源回路) 20,000 - 50,000 小时
网络域(Network Domain) ToR 交换机宕机、Spine 链路中断、广播风暴 1 个 Pod 或 1 个 Leaf 组 30,000 - 80,000 小时
设计要点: 物理故障域应遵循“共享风险组(SRG)”原则——同一电源回路或同一 ToR 交换机下的节点属于同一个 SRG,容量规划时必须确保同一租户的副本或分片分布在不同的 SRG 中。

4.2 逻辑故障域:抽象层面的故障隔离

逻辑故障域是对物理故障域的进一步抽象,用于在软件层面定义故障边界。常见的逻辑故障域包括可用区(Availability Zone, AZ)和区域(Region)。

  • 可用区(AZ): 由一个或多个物理数据中心组成,AZ 之间通过独立电力、网络和制冷系统隔离。AZ 内故障不会影响其他 AZ。典型延迟:同 AZ < 1ms,跨 AZ 1-5ms。
  • 区域(Region): 由多个 AZ 组成,区域间通过骨干网络互联。区域故障通常由大规模自然灾害或区域性电力中断引发。跨区域延迟:10-100ms。
容量规划约束: 租户重调度时,调度器必须优先在同 AZ 内寻找可用资源;若 AZ 内资源不足,则按“同区域跨 AZ → 跨区域”的优先级逐级扩展,同时满足租户的延迟 SLA 和故障隔离等级。

4.3 层级化故障域设计:从物理到逻辑的映射

层级化故障域模型将物理故障域与逻辑故障域组合为树状结构,每一层定义不同的故障影响半径和资源池大小。下图展示了典型的四层故障域模型:

层级化故障域模型:物理与逻辑映射 层级化故障域模型 区域 (Region) 可用区 A (AZ-A) 可用区 B (AZ-B) 可用区 C (AZ-C) 机架组 R1 机架组 R2 机架组 R3 机架组 R4 机架组 R5 Node-1 Node-2 Node-3 Node-4 Node-5 Node-6 Node-7 Node-8 Node-9 故障隔离边界 同一机架组内的节点共享电源/网络风险;不同 AZ 之间完全隔离;Region 提供最终容灾边界

4.4 层级化故障域与租户重调度的映射关系

在容量规划驱动的重调度过程中,调度器需要根据故障域层级决定资源分配的优先级和约束条件。下表总结了不同故障域层级对重调度行为的影响:

故障域层级 重调度优先级 约束条件 典型场景
节点级 最高(立即迁移) 同机架内可用节点 单节点宕机,租户 Pod 需快速恢复
机架级 高(分钟级迁移) 跨机架,同 AZ 内 ToR 交换机故障,整个机架离线
可用区级 中(小时级迁移) 跨 AZ,同 Region 内 数据中心电力中断,整个 AZ 不可用
区域级 低(灾备恢复) 跨 Region,需考虑网络延迟 区域性自然灾害,整个 Region 失效
容量规划陷阱: 如果仅按节点级故障域设计隔离策略,当机架级故障发生时,同一租户的所有副本可能集中在同一电源域内,导致批量宕机。必须通过层级化故障域约束,确保租户的 N 个副本分布在至少 N 个不同的物理故障域中。

4.5 层级化故障域的设计原则与最佳实践

基于上述模型,在实际架构中应遵循以下设计原则:

  1. 最小故障域原则: 每个租户的副本或分片应分布在尽可能多的最小物理故障域(如机架)中,避免“单点聚集”。
  2. 故障域感知调度: 调度器在分配资源时,必须读取节点的故障域标签(如 failure-domain.beta.kubernetes.io/zone),并确保同一租户的 Pod 不落在同一故障域内。
  3. 容量冗余分层: 每个故障域层级预留一定比例的冗余容量(如机架级 10%、AZ 级 20%、Region 级 30%),用于应对突发故障后的重调度。
  4. 故障域可观测性: 实时监控每个故障域的资源利用率、故障事件和租户分布,为容量规划提供数据支撑。

下图展示了故障域感知调度器在租户重调度时的决策流程:

故障域感知重调度决策流程 故障域感知重调度决策流程 节点宕机事件 识别故障域层级 查询同层可用资源 资源充足? 同故障域层调度 升级到上层故障域 决策逻辑:优先在同故障域层内调度,若资源不足则逐级向上层故障域扩展,直到满足租户隔离要求
关键指标: 故障域覆盖率 = (已覆盖的故障域数量 / 总故障域数量) × 100%。建议目标值 ≥ 95%,确保租户副本在故障域间均匀分布。同时,故障域间资源利用率偏差应控制在 ±10% 以内,避免部分故障域过载而其他故障域空闲。