Redis哨兵

怎么解决Redis故障恢复问题?如果Redis主机故障怎么办?
利用Redis哨兵(sentinel)机制,实现健康检测和自动故障恢复。


哨兵(sentinel)三大作用

监控: 哨兵Sentinel会不断检查您的master和slave是否按预期工作。
自动故障恢复: 如果master故障,哨兵集群会选出一个哨兵,这个哨兵会选出其中的一个slave提升为master。当之前的master故障实例恢复后变为新的master的slave。
通知: Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端。


哨兵集群监控原理(Sentinel如何判断一个redis实例是否健康?):

哨兵Sentinel集群基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令
主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。
客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则判定该实例客观下线即服务下线。
                        quorum的值可自由设置,最好设置为超过Sentinel实例数量的一半


集群故障恢复原理流程:

        一旦发现master故障时,

        1、哨兵sentine集群会先选举一个领头哨兵Sentinel,并由领头哨兵Sentinel对下线主服务器执行故障转移操作。
        2、领头Sentinel根据选举规则选出一个slave提升为新的mastersentinel给选举出来的slave节点发送slaveof no one 命令,让该节点成为新master。(选master)
        3、sentinel给所有其它
slave发送slaveof   新master的IP  新master的port 命令,让这些slave成为新master的从节点,开始从新的master上同步数据。(建立新连接)
        4、最后,哨兵sentinel将故障节点标记为slave,当故障节点恢复后会自动成为新的master的slave节点。(故障恢复成为slave)


新的master选举依据:

        1、首先会判断slave节点与master节点断开时间长短,如果超过指定值(down-after-milliseconds 10)则会排除该slave节点
        2、然后判断slave节点的
slave-priority值,越小优先级越高,如果是0则永不参与选举
        3、如果slave-prority一样,则判断
slave节点的offset值,越大说明数据越新,优先级越高
        4、最后是判断slave节点的运行
id大小,越小优先级越高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值