14. Redis哨兵模式

创建时间:2025-10-26 22:04
长度:1342
浏览:0
评论:0

集群模式,也就是上一张说的主从模式, Master现在只有一台服务器,并且如果这一台服务器宕机了不能及时恢复,造成服务不可用,势必会造成很大的影响,所以实际生产中,我们会用到主从模式的进阶,哨兵模式来解决这个问题


相关概念


Redis的哨兵模式(Sentinel mode)是一个高可用解决方案,当运行多个Redis实例并且需要自动故障转移时,哨兵模式非常有用。

哨兵模式主要有三个目标:

1.监控:哨兵模式会不断地检查主服务器和从服务器是否按预期工作。

2.通知:如果某些Redis实例有故障,哨兵模式可以通过API向管理员或者其他应用程序发送通知。

3.自动故障转移:如果主服务器无法正常工作,哨兵模式可以开始一个故障转移过程,由一个从服务器升级为新的主服务器,并让其他从服务器改变他们的主服务器为新的主服务器。


在一个典型的哨兵摸式下!至少需要3个時兵实例来過免躺裂”(网络分裂导致多个主服务品同时各在)。時兵们会通过投票来决

定主服务器是否已经下线,以及选择哪个从服务器升级为新的主服务器。


哨兵模式的实现是基于发布-订阅模式的,每个哨兵节点都会订阅其它哨兵节点的信息,这样当主服务器出现故障时,哨兵节点可

以及时进行广播,实现快速故障转移。


具体来说,Redis的哨兵模式有以下几个主要特点:

    • 哨兵模式自动转移失败的主服务器到一个从服务器。
    • 哨兵模式持续监控所有Redis服务器,以便在需要时报告错误。
    • 通过提供一个基于哨兵的API,客户端可以自动发现新的主服务器地址。


Sentinel(哨兵)时基于心跳机制检测服务状态的,每隔1秒向每隔实例发送一个ping命令,如果某个sentinel发现某Redis实例未在规定时间内响应,则认为该实例主观下线,若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例客观下

线。quorum的值最好超过Sentinel实例数的一半在实际应用中,哨兵模式通常用于提高Redis的可用性,对于有高可用需求的系统,哨兵模式是一个很好的解决方案。

重点:实现自动转移失败的主服务器到另外一个服务器上



选举过程

   一旦发现master故障,sentinel需要在salve中选择一个作为新的master,选择依据是这样的:

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

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

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

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


故障转移

   1、Sentinel给备选的节点发送slaveof on one命令,让该节点成为Maskter

   2、 Sentinel给其他slave发送“slaveof ip 端口”命令,开始从Master上同步数据

   3、最后Sentine/将故障节点标记为slave(执行slaveof ip 端口命令),故障节点恢复以后也会成为新Master的slave



配置命令



评论(共0条)