3. 故障域划分原则:隔离性原则、冗余性原则、依赖性最小化原则、爆炸半径控制原则
故障域划分是集群高可用设计的核心基础。若划分不当,单一故障可能通过共享资源、依赖链或级联效应扩散至整个集群。以下四项原则构成了故障域划分的黄金准则,必须同时满足,缺一不可。
3.1 隔离性原则
核心定义:确保一个故障域内的故障不会物理或逻辑地影响其他故障域。隔离是故障域划分的第一道防线。
- 物理隔离:不同故障域使用独立的电源、网络交换机、制冷系统、物理机架或数据中心。
- 逻辑隔离:通过虚拟化、容器化、命名空间、cgroup 资源限制等手段,确保进程级或服务级的故障不会跨域传播。
- 网络隔离:故障域之间应通过独立的网络平面或 VLAN 隔离,避免广播风暴、ARP 欺骗等网络故障扩散。
风险清单复核要点:
- 是否存在共享的单点网络设备(如共享核心交换机)?
- 虚拟机或容器是否可能因宿主机故障而集体宕机?
- 是否所有故障域都具备独立的故障边界(电源、网络、存储)?
3.2 冗余性原则
核心定义:每个关键组件或服务必须在至少两个独立的故障域中部署副本,确保单一故障域失效时仍能维持服务。
| 冗余层级 | 典型实现 | 故障域要求 | 风险复核要点 |
|---|---|---|---|
| 数据冗余 | 多副本 (Replication)、Erasure Coding | 副本分布在 ≥3 个故障域 | 是否所有副本都在同一机架或同一电源域? |
| 计算冗余 | 主备、多活、N+1 冗余 | 实例分布在 ≥2 个故障域 | 是否所有实例都依赖同一个负载均衡器? |
| 网络冗余 | 多路径、ECMP、BGP 多下一跳 | 路径经过不同物理网络设备 | 是否存在共享的汇聚层或核心层单点? |
| 电源冗余 | 双路供电、UPS、柴油发电机 | 供电链路来自不同变电站 | 双路供电是否最终汇入同一配电柜? |
| 控制维度 | 控制手段 | 爆炸半径目标 |
|---|---|---|
| 资源配额 | 每个故障域设置 CPU/内存/磁盘/网络带宽上限 | 单个故障域资源耗尽不影响其他域 |
| 限流与降级 | 入口网关按故障域粒度限流,超出阈值则降级 | 流量洪峰仅影响本域,不扩散 |
| 熔断隔离 | 跨域调用失败率达到阈值时熔断,快速失败 | 依赖故障不拖垮调用方 |
| 故障自愈 | 自动摘除故障域流量,触发重建或迁移 | 故障域恢复期间不影响全局可用性 |
| 容量规划 | 每个故障域预留 30%-50% 的缓冲容量 | 单域故障时流量切换不引发过载 |
| 原则 | 核心目标 | 与其他原则的关系 |
|---|---|---|
| 隔离性 | 防止故障跨域传播 | 是冗余性的前提——没有隔离,冗余副本可能同时失效 |
| 冗余性 | 确保单域失效时服务可用 | 依赖隔离性提供独立故障边界,依赖爆炸半径控制防止过载 |
| 依赖性最小化 | 减少跨域耦合 | 降低爆炸半径,减少冗余副本间的同步压力 |
| 爆炸半径控制 | 限制故障影响范围 | 是前三项原则的最终验证指标 |