故障转移 (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) 之间寻找最佳平衡点。