Redis Sentinel知识总结

主从复制的优点和问题

优点:

  • 从节点是主节点的一个备份,能在主节点宕机之后作为备份。
  • 能够读写分离减轻主节点的压力。

问题:

如果主节点宕机需要手动进行故障转移。如果使用脚本也无法周密的考虑所有情况,例如:怎样判断主节点宕机?设置哪个从节点作为主节点?

Redis Sentinel是官方提供的监控并自动故障转移的组件。

Redis Sentinel架构简介

在这里插入图片描述
redis集群

对应redis集群来说还是主从复制的结构。

sentinel集群

每个sentinel节点可以看做是一个redis进程,但是它并不负责存储数据。它主要的工作是对redis集群的故障判断和故障转移,通知客户端的过程。sentinel需要是一个集群的架构。这样也能实现高可用,并且能对redis节点故障做一个公平的判断。

客户端

客户端只会连接sentinel,记录sentinel的地址,应为sentinel会知道哪个节点是真正的master,故障转移是也会将最新master的地址告诉客户端。

Sentinel故障转移流程步骤

1、多个sentinel发现并确认master有问题。
2、选举出一个sentinel作为领导。
3、选举出一个slave作为master。
4、通知其余slave成为新的master的slave。
5、通知客户端的主从变化。
6、等待老的master复活成为新master的slave。

客户端的基本原理

1、获取所有sentinel节点,找得到其中一个可用的节点,通过masterName获取master的地址。
2、客户端对获取到的master节点进行一次验证,验证其是否是master节点。
3、如果master发生故障转移,sentinel会通知客户端。实现原理是客户端通过订阅一个channel,当master节点变化,sentinel会发出消息。

三个定时任务

1、每10秒每个sentinel对master和slave执行info

  • 发现slave节点
  • 确认主从关系

2、每2秒每个sentinel通过master节点的channel交换信息(pub/sub)

  • 通过_sentinel_:hello频道交互
  • 交互对节点的看法和自身信息,提供一个信息交互的平台,像实现故障判断和领导者选举。

3、每1秒每个sentinel对其他sentinel和redis执行ping

  • 心跳检测,失败判定依据

主观下线和客观下线

在这里插入图片描述
建议sentinel节点数为基数并且三个以上。主观线下是sentinel每秒进行对节点的ping操作,如果超过配置的时间还是没有收到回复,认为该节点已经不可用,这时会通过channel发表主观下线的消息,并向其他节点询问观点。当收到同意的消息大于配置的参数时,代表达成共识,进行客观下线。

领导者选举

在这里插入图片描述

故障转移

在这里插入图片描述
在这里插入图片描述

发布了44 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/hxyascx/article/details/89367851