目录
前言:有关Redis的基础知识可以参照我之前写的文章Redis必知必会的知识
一:什么是Sentinel(哨兵)
Sentinel是一中运行模式,不提供任何的读写过程,它只负责运行特殊的Redis命令执行自动化的故障转移。默认运行在26379端口上,依赖于Redis工作,可以通过以下命令让Redis以Sentinel的形式运行
Redis的源码中sentinel.conf 就是用来配置Sentinel的
二:Sentinel有什么用
根据Redis的官方文档可以知道,sentinel节点主要提供以下几个功能
1.监控
2.故障转移
3通知
4.配置提供
三:Sentinel如何检测master节点宕机
1.主观下线
2.客观下线
其实就是当sentinel自己认为master下线那么就是主观下线,而sentinel整体达成一致认为master下线那么就是客观下线。
具体的步骤如下:
主观下线:
客观下线:
sentinel 中会有一个 Leader 的角色来负责故障转移,也就是自动地从 slave 中选出一个新的 master 并执行完相关的一些工作(比如通知 slave 新的 master 连接信息,让它们执行 replicaof 成为新 的 master 的 slave)。如果没有足够数量的 sentinel 节点认定 master 已经下线的话,当 master 能对 sentinel 的 PING 命令 进行有效回复之后,master 也就不再被认定为主观下线,回归正常。
四:Sentinel是如何选举出新的master
slave必须是在线状态才能参加竞选成为新的master,sentinel在选举新的master时是基于以下3个方面来实现的