试题答案

更新日期:2023-11-26

Redis哨兵(Redis Sentinel)模式是Redis官方推荐的一种高可用方案,它弥补了主从模式的不足。哨兵(Sentinel)通过监控的方式获取节点的工作状态是否正常,当节点发生故障时,Sentinel会自动进行故障转移,并将其监控的从节点(Slave)提升为主节点(master),从而保证了系统的高可用性。具体工作原理如下:

  • 每个Sentinel以每秒钟一次的频率向它所监视的Master,Slave节点以及其他Sentinel实例发送一个PING命令。
  • 如果一个实例距离最后一次有效回复PING命令的时间超过down-after-milliseconds选项所指定的值,则这个实例会被当前Sentinel标记为主观下线。
  • 如果一个Master被标记为主观下线,则正在监视这个Master的所有Sentinel会以每秒一次的频率确认此Master节点是否进入了主观下线状态。
  • 当有足够数量的Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态,则Master会被标记为客观下线 。
  • 当Master被Sentinel标记为客观下线时,Sentinel会向下线Master的所有Slave节点发送INFO命令,发送频率会从10秒一次改为每秒一次(在一般情况下,每个Sentinel会以每10秒一次的频率向它监视的所有Master,Slave发送INFO命令)。
  • 若没有足够数量的Sentinel同意Master已经下线,Master的客观下线状态就会变成主观下线。若Master重新向Sentinel的PING命令返回有效回复,Master的主观下线状态就会被移除。
  • 若Master已客观下线,所有Sentinel节点会投票选举一个Sentinel节点进行故障处理,在从节点中重新选取一个主节点,其他从节点挂载到新的主节点上并自动复制新主节点的数据。

发表评论

评论数量:0