redis的哨兵

2019-12-18  本文已影响0人  lionel880

sentinal 本质上是运行在特殊模式下的redis
一个典型的哨兵部署如下


image.png

我们使用哨兵结构进行部署的主要目的是为了高可用,当主机宕机时,可以自动切换,下图是一个典型的故障转移过程


image.png

一、哨兵模式的redis有何特殊?

此外还有slave字典和sentinel字典,但这个是后续更新信息的

二、sentinel获得主、从、其他哨兵服务器信息?

sentinel和服务器创建2个连接,一个是订阅,一个是命令。增加一个命令主要是为了防止,订阅频道时,消息丢失的情况

三、高可用的方案

检测主观下线
sentinel每隔1s向其他服务器发送ping,如果超过down-after-nukkuseconds,就会被判定为主观下线
何谓主观,就是仅仅考虑自己的想法,这里指就是自身这台sentinel判定不通过,认为你下线了。

检测客观下线
当sentinel判定一台服务器主观下线后,会去向其他的sentinel询问,如果反馈达到一定数量,则被判定为客观下线。这个数量quorum是一开始配置好的。

选举sentinel的leader
sentinel选举是基于raft算法选出leader的。
参考文档:https://www.jianshu.com/writer#/notebooks/28197258/notes/57839517/preview

故障转移
当选出sentinel的leader后,那一台sentinel就可以执行故障转移高可用

上一篇下一篇

猜你喜欢

热点阅读