MST

星途 面试题库

面试题:Redis Sentinel故障转移的基本自动化决策条件有哪些

请阐述Redis Sentinel在进行故障转移时,所依据的一些基本自动化决策条件,例如对主节点失效的判定标准等。
15.3万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

主节点失效判定标准

  1. 主观下线(SDOWN)
    • 每个 Sentinel 节点会定期向主节点和从节点发送 PING 命令。
    • 如果在 down-after-milliseconds 配置的时间内,没有收到有效回复(回复 PONGLOADINGMASTERDOWN 视为有效回复),则该 Sentinel 节点会将此主节点标记为 SDOWN(主观下线)。这只是单个 Sentinel 节点的“主观”判断。
  2. 客观下线(ODOWN)
    • 当一个 Sentinel 节点将主节点标记为 SDOWN 后,会向其他 Sentinel 节点发送 SENTINEL is-master-down-by-addr 命令,询问其他 Sentinel 节点是否也认为该主节点下线。
    • 当同意该主节点下线的 Sentinel 节点数量达到 quorum(配置的法定人数)时,这个主节点就会被标记为 ODOWN(客观下线),即多个 Sentinel 节点都认为主节点已失效。

选择新主节点的条件

  1. 从节点优先级
    • 每个从节点都有一个 slave-priority 配置参数,数值越低优先级越高。在故障转移时,Sentinel 会优先选择优先级高的从节点提升为主节点。例如,如果一个从节点优先级为 50,另一个为 100,优先选择优先级为 50 的从节点。
  2. 复制偏移量
    • 如果多个从节点优先级相同,Sentinel 会选择复制偏移量最大的从节点。复制偏移量表示从节点复制数据的进度,偏移量越大说明从节点的数据越新。因为选择数据最新的从节点提升为主节点,可以最大程度减少数据丢失。
  3. 运行 ID
    • 如果优先级和复制偏移量都相同,Sentinel 会选择运行 ID 较小的从节点。运行 ID 是 Redis 实例启动时生成的唯一标识,这种选择方式只是一种随机的兜底策略,确保总能选出一个从节点提升为主节点。

配置传播与通知

  1. 配置传播
    • 当一个 Sentinel 完成故障转移,将某个从节点提升为主节点后,它会向其他 Sentinel 节点发送 SENTINEL failover 命令,通知其他 Sentinel 更新配置,将新的主节点信息传播出去。
    • 同时,新的主节点会向所有从节点发送 SLAVEOF NO ONE 命令,让它们开始从新主节点进行复制。
  2. 通知
    • Sentinel 会通过发布订阅机制,向客户端发送关于主节点故障转移等事件的通知。客户端可以订阅 __sentinel__:hello__sentinel__:master-down 等频道,获取 Sentinel 相关事件信息,以便应用程序做出相应处理。