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 层级化故障域设计:从物理到逻辑的映射
层级化故障域模型将物理故障域与逻辑故障域组合为树状结构,每一层定义不同的故障影响半径和资源池大小。下图展示了典型的四层故障域模型:
4.4 层级化故障域与租户重调度的映射关系
在容量规划驱动的重调度过程中,调度器需要根据故障域层级决定资源分配的优先级和约束条件。下表总结了不同故障域层级对重调度行为的影响:
| 故障域层级 | 重调度优先级 | 约束条件 | 典型场景 |
|---|---|---|---|
| 节点级 | 最高(立即迁移) | 同机架内可用节点 | 单节点宕机,租户 Pod 需快速恢复 |
| 机架级 | 高(分钟级迁移) | 跨机架,同 AZ 内 | ToR 交换机故障,整个机架离线 |
| 可用区级 | 中(小时级迁移) | 跨 AZ,同 Region 内 | 数据中心电力中断,整个 AZ 不可用 |
| 区域级 | 低(灾备恢复) | 跨 Region,需考虑网络延迟 | 区域性自然灾害,整个 Region 失效 |
容量规划陷阱: 如果仅按节点级故障域设计隔离策略,当机架级故障发生时,同一租户的所有副本可能集中在同一电源域内,导致批量宕机。必须通过层级化故障域约束,确保租户的 N 个副本分布在至少 N 个不同的物理故障域中。
4.5 层级化故障域的设计原则与最佳实践
基于上述模型,在实际架构中应遵循以下设计原则:
- 最小故障域原则: 每个租户的副本或分片应分布在尽可能多的最小物理故障域(如机架)中,避免“单点聚集”。
- 故障域感知调度: 调度器在分配资源时,必须读取节点的故障域标签(如
failure-domain.beta.kubernetes.io/zone),并确保同一租户的 Pod 不落在同一故障域内。 - 容量冗余分层: 每个故障域层级预留一定比例的冗余容量(如机架级 10%、AZ 级 20%、Region 级 30%),用于应对突发故障后的重调度。
- 故障域可观测性: 实时监控每个故障域的资源利用率、故障事件和租户分布,为容量规划提供数据支撑。
下图展示了故障域感知调度器在租户重调度时的决策流程:
关键指标: 故障域覆盖率 = (已覆盖的故障域数量 / 总故障域数量) × 100%。建议目标值 ≥ 95%,确保租户副本在故障域间均匀分布。同时,故障域间资源利用率偏差应控制在 ±10% 以内,避免部分故障域过载而其他故障域空闲。