MST

星途 面试题库

面试题:Redis Sentinel如何判断主节点进入客观下线状态

请阐述Redis Sentinel检查主节点客观下线状态的条件和判断流程。
27.3万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

条件

  1. 多个Sentinel节点都认为主节点主观下线(Subjectively Down,简称SDOWN)。主观下线是指单个Sentinel节点根据自身对主节点的心跳检测判断主节点下线。
  2. 达到一定数量(quorum)的Sentinel节点都判定主节点主观下线。quorum是在Sentinel配置文件中设置的一个值,表示判断主节点客观下线(Objectively Down,简称ODOWN)所需的最少Sentinel节点数。

判断流程

  1. 主观下线判断:每个Sentinel节点会定期向主节点发送PING命令,并等待回复。如果在一定时间(down-after-milliseconds配置项指定的时间)内没有收到主节点的回复,该Sentinel节点会将主节点标记为主观下线。
  2. 交换主观下线信息:Sentinel节点之间会通过定期发送SENTINEL is-master-down-by-addr命令互相交换对主节点状态的判断信息。当一个Sentinel节点发现某个主节点主观下线后,会在向其他Sentinel节点发送的消息中包含这个主节点的主观下线信息。
  3. 客观下线判定:当一个Sentinel节点从其他Sentinel节点接收到关于某个主节点的主观下线报告数量,达到配置的quorum值时,该Sentinel节点会将这个主节点标记为客观下线。一旦主节点被判定为客观下线,Sentinel系统就会开始自动故障转移流程,选择一个从节点提升为新的主节点。