3. 故障域基础概念:故障域定义、故障域类型与高可用关系
在平台工程与IDP(Internal Developer Platform)的故障域隔离演练中,理解故障域(Failure Domain)是设计高可用架构的基石。故障域定义了系统内一个组件发生故障时,可能影响到的其他组件或服务的范围。明确故障域的边界,能够帮助SRE和平台工程师在资源变更模板中精确配置隔离策略,防止单点故障扩散为全局灾难。
3.1 故障域定义
故障域是指一组共享相同故障风险的资源集合。当该集合内的某个关键组件(如电源、网络交换机、物理服务器或可用区)失效时,集合内的所有资源都可能同时不可用。故障域的粒度决定了故障影响半径:粒度越细,隔离能力越强,但管理复杂度也越高。
核心原则: 故障域是“共因失效”的边界。设计IDP资源变更模板时,必须确保关键工作负载的副本分布在不同的故障域中,以实现故障隔离。
3.2 故障域类型
故障域按照抽象层级和物理/逻辑属性,可分为以下四种主要类型。下表从定义、粒度、典型场景和IDP模板关注点四个维度进行对比:
| 故障域类型 | 定义 | 粒度 | 典型场景 | IDP模板关注点 |
|---|---|---|---|---|
| 物理故障域 | 共享同一物理硬件资源的集合,如机架、电源、网络交换机 | 细(机架级) | 单机架断电、交换机端口故障 | Pod反亲和性、节点拓扑约束 |
| 逻辑故障域 | 基于软件或配置定义的隔离边界,如集群、命名空间、服务网格分区 | 可变(逻辑级) | 控制面故障、配置错误、租户隔离 | 多集群部署、命名空间隔离策略 |
| 可用区故障域 | 云提供商内独立的物理数据中心区域,拥有独立的电力和网络 | 中(AZ级) | AZ级电力中断、网络分区 | 跨AZ副本分布、zone亲和性 |
| 区域故障域 | 由多个可用区组成的地理区域,区域间通常有较大物理距离 | 粗(Region级) | 自然灾害、大规模云服务中断 | 多Region容灾、全局负载均衡 |
3.3 故障域与高可用关系
高可用(High Availability, HA)的核心目标是通过冗余和故障转移,将系统停机时间降至最低。故障域是实现高可用的基础约束条件:冗余副本必须放置在不同的故障域中,否则冗余将失去意义——当共享故障域失效时,所有副本会同时宕机。
下图展示了故障域类型与高可用策略之间的层级映射关系:
3.4 故障域在IDP资源变更模板中的映射
在平台工程实践中,资源变更模板(如Kubernetes Deployment、Terraform Module、Crossplane Composition)必须显式声明故障域约束。以下是一个典型的Kubernetes工作负载模板片段,展示了如何通过Pod反亲和性实现物理故障域隔离:
apiVersion: apps/v1
kind: Deployment
metadata:
name: idp-workload
spec:
replicas: 3
template:
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- idp-workload
topologyKey: "kubernetes.io/hostname" # 物理故障域:节点级别
# 可选:topologyKey: "topology.kubernetes.io/zone" # 可用区故障域
containers:
- name: app
image: myregistry/idp-app:latest
resources:
requests:
cpu: "500m"
memory: "512Mi"
模板一致性复核要点: 在故障域隔离演练中,需检查资源变更模板是否同时覆盖了物理故障域(hostname)、可用区故障域(zone)和逻辑故障域(namespace/cluster)三个层级。遗漏任一层级都可能导致演练场景无法覆盖真实故障模式。
3.5 故障域选择策略对比
不同故障域类型在隔离效果、成本和复杂度上各有优劣。下表帮助平台工程师在模板设计时做出权衡:
| 故障域类型 | 隔离效果 | 资源成本 | 调度复杂度 | 适用场景 |
|---|---|---|---|---|
| 物理(节点/机架) | 高(硬件级) | 低(同AZ内) | 低 | 日常故障、硬件维护 |
| 可用区(AZ) | 很高(数据中心级) | 中(跨AZ流量) | 中 | AZ级中断、计划内演练 |
| 区域(Region) | 极高(地理级) | 高(跨Region) | 高 | 灾难恢复、合规要求 |
| 逻辑(集群/NS) | 可变(软件级) | 低(共享物理) | 中 | 租户隔离、控制面故障 |
下图进一步展示了在IDP资源变更模板中,如何将不同故障域类型组合为完整的隔离策略:
常见陷阱: 仅配置物理故障域(如hostname反亲和)而忽略可用区故障域,会导致在AZ级故障演练中所有副本仍可能集中在同一个可用区,造成实际故障影响半径超出预期。IDP模板必须采用分层故障域约束设计。