Redis 哨兵模式原理

1)哨兵模式原理

①哨兵如何实现相互监督的功能

  1. 哨兵通过发布订阅__sentinel__:hello channel来实现这个功能。每个哨兵每隔2s会向自己监控的所有主从Redis节点发送hello message,包括自己的IP、端口、运行ID、自己监控的Master节点IP、Master节点端口
  2. 所有主从Redis节点也会反馈这样的信息

②哨兵如何故障检测

基于多数投票原则

第一:某个哨兵节点判定master节点故障,他会投出一票S_DOWN(主观下线)

第二:当有足够多的sentinel节点判定master节点故障都投出S_DOWN票时,master节点会被认为是真正的下线了(客观下线)。

③哨兵模式如何实现故障恢复

故障恢复需要完成如下几步操作:

第一:通过选主机制选择新的Master节点替换掉原来的故障节点

第二:其他的节点成为Slave节点用于主从复制,也就是不变

第三:告知客户端新的master节点地址信息,同时执行必要的脚本来通知系统管理员。

(2)选主机制

过程:

sentinel的选举过程基本上是Raft协议的实现,即所有节点会随机休眠一段时间,然后发起拉票,当某个节点获得的票数超过max(sentinel|/2 + 1), qurom时,该节点就被推选为leader节点。注意是哨兵去从节点里面选。

到底选谁呢?

①根据指定的优先级选择

管理员在启动edis slave节点的时候,指定了其优先级,哨兵会先从优先级高的从节点去选择。

根据数据更新程度选择

优先级相同,所有slave节点复制数据的时候都会记录复制偏移量,哨兵会选择复制偏移量最大的slave节点,因为值越大说明与master节点的数据更一致。

根据runid选择:

     Redis 每个节点启动的时候都会分配有一个唯一的runId, 选择runId最小的slave节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值