Redis哨兵模式

发布时间:2024年01月13日

背景:slave节点宕机了恢复后可以找master节点同步数据,那master节点宕机了怎么办?

master宕机了,数据如何同步。而且master宕机了,无法执行写操作。这个时候就引入了Redis哨兵模式。

哨兵(Sentinel)模式机制来实现主从集群的自动故障恢复。

从上图可以看出:

Sentinel集群模式,为什么Sentinel会有集群模式,这是因为可能Sentinel单节点会出现宕机的状态。

哨兵的作用:

1.监控

Sentinel会不断检查您的master和slave是否按期工作。

2.自动故障恢复

如果master故障,Sentinel会将一个slave提升为master。如果slave故障,则重启slave。

3.通知

因为Redis主节点负责写,从节点负责读。但是如果master更换了,restemplate怎么知道呢,这个时候Sentinel充当Redis客户端的服务发现来源。当集群发生故障转移时,会将最新的信息推送给Redis的客户端。

哨兵如何监控集群状态

Sentinel基于心跳监测服务状态,每隔1s向集群的每个实例发送ping命令:

主观下线

如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。

客观下线

若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例客观下线。

如何选取新的master

1.首先判断slave节点与master节点断开时间长短,如果超过指定值(down-after-milliseconds*10)则会排除该slave节点。

2.然后判断slave节点的优先级,越小优先级越高,如果是0,则永不参与选举。

3.如果是slave-priority一样,则判断slave节点的offset值,越大说明数据越新,优先级越高

4.最后是判断slave节点的运行id大小,越小优先级越高。

总结起来,就是先看节点断开时间长短,然后判断优先级,如果优先级相等,那么就判断offset值,越大,数据越新。最后是判断slave节点运行id大小,越小优先级越高。

如何实现故障转移

1.sentinel给备选的slave1节点发送slave of no one命令。

2.sentinel给所有其他slave发送slaveof 192.168.150.101 7002命令。让这些slave成为新的master的从节点,

3.sentinel将故障节点强制修改配置文件,标记为slave。

文章来源:https://blog.csdn.net/liu_zhi_tao/article/details/135528361
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。