Redis学习(Redis哨兵)

Redis学习(Redis哨兵)

引入:master节点宕机怎么办

一个可行的解决办法是:在master节点宕机之后,立刻将一个slave节点变成master节点,之后将恢复后的master节点变为slave节点

那么监测和重启该怎么做,这里我们就需要哨兵

哨兵的作用和原理

哨兵(Sentinel)实现主从集群的自动故障恢复

  • 监控:哨兵不断检查master和slave是否按预期工作
  • 恢复:master故障后,sentinal会将slave提升为master
  • 通知:sentinal充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送到Redis的客户端

pCHUyKf.png

服务状态监控

sentinal基于心跳机制监测服务状态,也就是每隔1s向集群的每个示例发送ping命令

  • 主观下线:某个哨兵节点发现某个实例未在规定时间内响应,则认为该实例主观下线
  • 客观下线:超过指定数量(quorum)的哨兵认为该实例主观下线,则该实例就是客观下线。quorom最好超过哨兵实例数量的一半

选举新的master

选举新的master的依据如下:

  • 首先判断slave与master节点断开时间的长短,如果超过指定值则会排除该slave节点
  • 然后判断slave节点的slave-priotity,越小优先级就越高,但是当优先级为0时代表永远不会被提升为master节点
  • 判断slave的offset,越大代表数据越新,优先级越高
  • 前面都一样的情况下判断slave节点的运行id大小,越小则优先级越高

如何实现故障转移

故障转移的步骤如下:

  • 哨兵给备选的slave节点发送slave of no one的指令,让该节点成为master
  • 哨兵给其它所有的slave节点发送slaveof命令,让这些slave成为新master的从节点,并且从新的master上同步数据
  • 最后,哨兵节点将故障节点标记为slave,当故障节点恢复后自动成为新的master的slave节点
posted @ 2023-07-20 19:41  ANewPro  阅读(17)  评论(0编辑  收藏  举报