故障转移 (Failover) 是指当系统中的主节点 (Master/Active) 发生故障时,系统自动或手动地将请求和工作负载切换到备用节点 (Slave/Passive) 的过程。

它是实现高可用性 (High Availability) 的核心机制,确保了在单点故障发生时服务能够持续运行。


核心流程

一个完整的自动故障转移过程通常包含以下三个阶段:

阶段核心任务关键技术
1. 故障检测准确识别节点失效,排除网络抖动心跳 (Heartbeat)、超时阈值、Gossip 协议
2. 主从切换选出新主节点,更新集群状态选主算法 (Raft/Paxos)、仲裁 (Quorum)
3. 流量重定向将外部请求导向新主节点虚 IP (VIP)、DNS 更新、负载均衡器切换

模式对比

模式优点挑战/缺点典型应用
自动故障转移响应极快,RTO 短,无需人工实现复杂,易发“脑裂”或“翻转”Redis Sentinel, K8s Pod 重启
手动故障转移安全性高,避免误判响应慢,依赖运维响应系统升级、预知性硬件维护

核心挑战与对策

挑战现象描述核心对策
脑裂 (Split Brain)网络分区导致出现多个主节点,数据冲突仲裁 (Quorum)、隔离 (Fencing) 机制
数据丢失异步复制下,主节点挂掉时数据未同步强一致性协议、半同步复制、RPO 权衡
翻转 (Flapping)节点状态不稳,频繁主备切换导致震荡抑制机制 (Damping)、增加切换冷却时间

总结

故障转移是高可用架构的“安全网”。它不仅需要精准的故障检测,还需要可靠的选主逻辑和高效的流量切换手段。在设计时,必须在 恢复速度 (RTO)数据一致性 (RPO) 之间寻找最佳平衡点。