Redis学习(五)Redis哨兵机制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwl2014100338/article/details/82808827

背景

Redis主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理方式无法接受

主从复制的问题

(一)一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,需要人工干预
(二)主节点的写能力受到单机的限制
(三)主节点的存储能力受到单机的限制

Redis Sentinel的高可用性

Redis Sentinel是一个分布式架构,包含了若干Sentinel节点和Redis数据节点,每个Sentinel节点会对数据节点和其余Sentinel节点进行监控,当它发现不可达时,会对节点做下线标识。如果被标识的是主节点,它会 和其他Sentinel节点‘协商’,当大多数Sentinel节点认为主节点不可达时,它们会选举出一个Sentinel节点完成自动故障转移的工作,同时将这个变化通知到应用方,整个过程完全自动。

实现原理

Redis Sentinel通过三个定时监控任务完成对各个节点发现和监控
(一)每隔10秒,每个Sentinel节点会向主节点和从节点发送info命令获取最新的拓扑结构
(二)
每隔2秒,每个Sentinel节点会向Redis数据节点频道发送该Sentinel节点对于主节点的判断以及当前Sentinel节点的信息,同时每个Sentinel节点订阅该频道,来了解其他Sentinel节点以及他们对主节点的判断
(三)每隔1秒,每个Sentinel节点会向主节点、从节点、其余Sentinel节点发送一次ping命令心跳检测,来确认这些节点是否可达

主观下线和客观下线

(一)主观下线
对于从节点、其他Sentinel节点做主观下线
(二)客观下线
对于主节点做客观下线

领导者Sentinel节点选举

Redis使用Raft算法实现领导者选举

故障转移

(一)在从节点列表中选出一个节点作为新的主节点
(二)Sentinel领导者节点对于第一步选出来的从节点执行slaveof no one 命令令其成为主节点
(三)Sentinel领导者节点会向剩余的从节点发送命令,让他们成为新主节点的从节点
(四)Sentinel节点集合会将原来的主节点更新为从节点,并保持关注,当前回复之后命令它去复制新的主节点

猜你喜欢

转载自blog.csdn.net/lwl2014100338/article/details/82808827
今日推荐