redis哨兵模式
哨兵模式
-
概述
哨兵模式主要是基于前面用到的主从模式进行改造的,由于主从模式的缺陷,所以哨兵模式弥补了这以缺陷
-
优点
- 监控主数据库和从数据库是否正常运行
- 主数据库出现故障时,可以自动将从数据库转换为主数据库,实现自动切换
- 如果redis服务出现问题,会发送通知
-
缺点
- 主数据库出现故障时,选举切换的时候容易出现瞬间断线现象
-
判断在线情况
默认情况下,每个
Sentinel
节点会以 每秒一次 的频率对Redis
节点和 其它 的Sentinel
节点发送PING
命令,并通过节点的 回复 来判断节点是否在线。 -
架构图
-
下线/down
- 主观下线
- 主观下线 适用于所有 主节点 和 从节点。如果在
down-after-milliseconds
毫秒内,Sentinel
没有收到 目标节点 的有效回复,则会判定 该节点 为 主观下线 - 只有半数个哨兵节点都主观判定主节点down掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线。
- 主观下线 适用于所有 主节点 和 从节点。如果在
- 客观下线
- 客观下线 只适用于 主节点。如果 主节点 出现故障,
Sentinel
节点会通过sentinel is-master-down-by-addr
命令,向其它Sentinel
节点询问对该节点的 状态判断。如果超过<quorum>
个数的节点判定 主节点 不可达,则该Sentinel
节点会判断 主节点 为 客观下线。 - 基本上哪个哨兵节点最先判断出这个主节点客观下线,就会在各个哨兵节点中发起投票机制,每个哨兵都投自己为领导者。最终被投为领导者的哨兵节点完成主从自动化切换的过程。当判断为主观下线时,不会进行主从切换过程。
- 客观下线 只适用于 主节点。如果 主节点 出现故障,
- 主观下线
-
选举
每个发现主服务器进入客观下线的sentinel都可以要求其他sentinel选自己为领头sentinel,选举是先到先得。同时每个sentinel每次选举都会自增配置纪元,每个纪元中只会选择一个领头sentinel。如果所有超过一半的sentinel选举某sentinel领头sentinel。之后该sentinel进行故障转移操作。
-
环境搭建
参考 redis哨兵部署
et/zbw18297786698/article/details/52891695)
参考文章:https://juejin.im/post/5b7d226a6fb9a01a1e01ff64