2. 故障域基础概念:什么是故障域、故障域的类型与隔离意义
2.1 故障域定义
故障域(Fault Domain) 是指系统中一组共享同一故障风险边界的资源集合。当该边界内的某个组件(电源、网络、存储、计算节点)发生故障时,域内所有资源均可能受到影响。故障域的本质是 故障传播的物理或逻辑边界。
核心公式: 故障域半径 = 单点故障影响范围。半径越小,爆炸半径越小,系统韧性越高。
2.2 故障域的类型
根据资源组织方式与故障传播机制,故障域可分为以下三大类:
| 类型 | 定义 | 典型示例 | 故障传播特征 |
|---|---|---|---|
| 物理故障域 | 基于硬件物理边界划分,共享同一电源、散热、机架或网络交换机的资源集合。 | 同一机架(Rack)、同一电源分配单元(PDU)、同一网络 ToR 交换机。 | 物理设备故障(断电、网卡失效、硬盘损坏)直接导致域内所有服务中断。 |
| 逻辑故障域 | 基于软件配置、服务依赖或数据分区划分的逻辑边界,不依赖物理位置。 | 同一 Kubernetes 集群的 Node、同一微服务实例组、同一数据库分片。 | 软件缺陷、配置错误、流量洪峰在逻辑边界内级联扩散。 |
| 云可用区故障域 | 云服务商提供的独立物理区域,每个可用区拥有独立的电力、冷却和网络设施。 | AWS 可用区(us-east-1a)、Azure 可用区(Zone 1)、GCP 可用区。 | 可用区级故障(区域性断电、光缆中断)导致该区内所有云资源不可用。 |
2.3 故障域隔离的意义
故障域隔离是平台工程中实现 高可用(HA) 与 容错(Fault Tolerance) 的基础手段。其核心价值体现在以下四个维度:
- 限制爆炸半径: 将故障影响范围控制在单一故障域内,避免级联故障扩散至整个系统。
- 保障业务连续性: 通过跨故障域部署冗余实例,确保单个域失效时流量自动切换至健康域。
- 满足合规审计要求: 金融、医疗等监管行业要求关键系统必须实现物理或逻辑故障域隔离,并通过演练记录证明隔离有效性。
- 降低运维复杂度: 明确的故障域边界使变更、升级、演练的审批复核有据可依,减少“未知依赖”导致的意外故障。
平台工程实践要点: IDP(内部开发者平台)在编排资源时,应强制要求每个工作负载声明其故障域约束(如:
topologySpreadConstraints、podAntiAffinity),并在审批记录中核验是否满足至少跨 2 个故障域部署。
2.4 故障域隔离层次结构(SVG)
下图展示了从物理机架到云可用区的故障域隔离层次,以及各层次之间的包含关系:
2.5 故障域隔离策略对比
不同故障域类型对应不同的隔离策略与实现方式,下表总结了常见场景下的推荐做法:
| 故障域类型 | 隔离策略 | 实现方式 | 审批记录复核要点 |
|---|---|---|---|
| 物理故障域 | 跨机架/跨电源域部署 | 机架感知调度、PDU 分组 | 确认 Pod 分布在 ≥2 个机架 |
| 逻辑故障域 | 反亲和性规则、拓扑分布约束 | K8s podAntiAffinity、topologySpreadConstraints |
验证 YAML 中 topologyKey 配置正确 |
| 云可用区故障域 | 跨可用区部署、多区域容灾 | 云负载均衡跨可用区分发、RDS 多可用区部署 | 检查云资源标签是否覆盖 ≥2 个可用区 |
常见误区: 仅依赖逻辑故障域(如 K8s 反亲和性)而忽略物理故障域,可能导致所有 Pod 被调度到同一机架的不同 Node 上,一旦机架断电,所有实例同时失效。平台工程中必须同时考虑物理与逻辑故障域的叠加隔离。
2.6 故障域隔离在 IDP 演练中的落地
在平台工程 IDP 故障域隔离演练中,审批记录复核需重点关注以下检查项:
- 资源分布检查: 确认工作负载的实例是否均匀分布在至少 2 个故障域(物理/逻辑/云可用区)。
- 依赖链路检查: 确认数据库、缓存、消息队列等有状态服务是否也实现了跨故障域部署。
- 流量切换验证: 确认负载均衡器是否配置了跨故障域的健康检查与流量分发策略。
- 演练记录完整性: 确认每次演练的故障注入目标、影响范围、恢复时间均记录在案,且与故障域边界一致。
审计红线: 若审批记录中发现某工作负载的所有实例位于同一故障域,必须标记为“高风险”,并要求重新部署后方可进行演练。