MST

星途 面试题库

面试题:Redis Sentinel选举领头Sentinel容错机制的基本原理

请阐述Redis Sentinel选举领头Sentinel容错机制的基本原理,包括选举触发的条件以及选举的大致流程。
37.6万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

选举触发条件

  1. 主观下线(SDOWN):每个 Sentinel 节点会定期向其他 Redis 实例(包括主节点和从节点)发送 PING 命令来检测其健康状态。如果在指定时间内(通常是配置的 down-after-milliseconds)没有收到有效回复,Sentinel 会将该实例标记为 SDOWN,即主观认为该实例下线。
  2. 客观下线(ODOWN):当一个 Sentinel 节点将主节点标记为 SDOWN 后,它会向其他 Sentinel 节点询问该主节点的状态。如果超过指定数量(配置的 quorum)的 Sentinel 节点都认为该主节点下线,那么这个主节点就会被标记为 ODOWN,即客观下线。此时,选举领头 Sentinel 的流程就会被触发,目的是为了进行故障转移,选出新的主节点。

选举大致流程

  1. 资格检查:每个认为主节点客观下线的 Sentinel 节点,首先会检查自己是否有资格成为领头 Sentinel。条件包括:自身没有处于 ODOWN 状态、与其他 Sentinel 节点的连接正常等。
  2. 发起选举:符合资格的 Sentinel 节点会向其他 Sentinel 节点发送 SENTINEL is-master-down-by-addr 命令,请求对方选举自己为领头 Sentinel。
  3. 投票阶段:收到选举请求的 Sentinel 节点,如果还没有给其他 Sentinel 节点投过票,并且认为发送请求的 Sentinel 节点有资格成为领头 Sentinel,就会投出一票。
  4. 选举结果:当一个 Sentinel 节点获得超过半数(quorum)且大于配置的 majority(一般 majority 默认为 quorum)的票数时,它就会当选为领头 Sentinel。如果在规定时间内没有 Sentinel 节点获得足够票数,会重新进行选举。
  5. 故障转移:当选的领头 Sentinel 负责执行故障转移操作,从众多从节点中挑选一个晋升为主节点,并让其他从节点指向新的主节点,从而完成 Redis 集群的自动恢复。