Redis哨兵机制

哨兵机制的作用是实现主从集群的故障自动恢复,帮助选取新的主节点维护主从集群正常运行。

哨兵的作用

监控

监控的意思是不断检查master和slave是否正常工作。

主观下线

哨兵每隔一秒(可调)会向主从集群中的每一个节点发送ping命令,存活的节点会发送响应给哨兵,如果节点没有发送响应给哨兵,则认为该节点主观下线了。

客观下线

为了防止网络拥塞等原因造成单个哨兵误判现象,当超过quorum(quorum值一般为哨兵个数的一半+1)的哨兵数量认为该节点主观下线时,该节点客观下线。

故障恢复

当哨兵集群认为主从集群中的主服务器客观下线后,要重新选择一个新的主服务器,在此之前,先进行哨兵集群的选主。

哨兵选主

主从集群中的主服务器客观下线的同时哨兵集群会选择一个leader进行主从集群的重新选主。

候选者:判断主节点客观下线的哨兵可以当候选者

  1. 假若哨兵A主动判断master主观下线,就向其他哨兵发送命令,其他哨兵收到命令后判断主节点是否主观下线,如果是,可以向A投赞同票。
  2. 如果A收到的赞同票数超过quorum值,该主节点客观下线,并且A成为候选者。
  3. A成为候选者后想成为leader,于是向其他哨兵发起请求投票,每个哨兵都有一次投票机会。
  4. 如果A拿到一半以上赞同票并且票数大于等于quorum值,则成为leader。

主从故障转移

  1. 选出新主节点。判断依据: 网络状态(slave与master断开时间的长短,如果超过指定值,就排除该节点  >  slave的优先级(slave-priority)> 复制进度 > 节点ID(越小越优先)。

  2. 哨兵leader对新主节点发送slaveof no one命令。

  3. 哨兵对其他节点发送slaverof 新主节点ip命令。
  4. 通知客户端主节点已经更换。客户端与哨兵连接之后会订阅哨兵频道,主从切换完成后哨兵发布新主节点的ip和端口号到相应频道上,客户端就可以收到信息。
  5. 对故障节点标记成slave,故障恢复后slaveof新主节点。

创建哨兵

1. 创建配置文件sentinel.conf

sentinel monitor <主节点名字> <主节点IP> <主节点端口号> <quorum>

2. 执行redis-sentinel /sentinel.conf

发布者/订阅者模式

当启动哨兵之后,哨兵就会订阅主节点上的频道,并且把自己的IP地址和端口信息发布到频道上,其他哨兵也订阅了这个频道,所以每个哨兵都可以获取其他哨兵和主从节点的信息。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值