Redis高可用之哨兵Sentinel

2020-04-12  本文已影响0人  0d3f575c8bef

Sentinel哨兵

Redis主从复制模式下 如果主节点发生故障 服务便不可用  那么此时就需要人工去把其中一台从节点晋升为主节点 并通知应用方  ,无法保证高可用 所以Redis提供了Sentinel来做这件事情

哨兵的具体作用就是 由多个哨兵节点组成的集群 他们会去监控所有redis数据节点,同时哨兵们彼此之前也会进行监控  ,当某个哨兵发现一个redis数据节点发生故障后, 会对其标识下线处理 

 如果这个数据节点是主节点master  那么这个哨兵就会与其它哨兵进行协商选出一台sentinel做为领导者去进行故障转移工作 

具体的故障转移流程分四步:

1.通过slave of noone 把一台redis从节点晋升为主节点

2.让其它从节点 复制 新的主节点

3.通知应用方

4.让故障的主节点去复制新的主节点

流程图如下

这些步骤都是自动完成的  应用方初始化连接的时候连接是哨兵的地址,并从中获取redis的连接信息  实际上sentinel本身就是一个特殊的redis节点,只不过他并不存储数据,并且只接受一部份命令  

Sentinel的安装及部署  

上面说过Sentinel本身就是一个redis的节点 部署与redis没什么不同 ,只是启动配置里多了几条与sentinel相关的配置而以  这里不写了

线上部署时的技巧 :

Sentinel节点应该部署在不同的物理机上  防止因为单台物理机故障导致所有的Sentinel节点都不可用

部署三个以上并且 是奇数个Sentinel节点  Sentinel领导者选举时需要一半个数+1个节点   同时三个以上节点 可以增加故障判断的准确性

另外一组Sentinel节点可以监控多个redis主节点  如果多个redis主节点是属于同一业务

那么配置一组Sentinel节点就可以 否则建议一组Sentinel监控一组Redis 防止因为Sentinel节点故障导致所有业务 都受影响

上一篇下一篇

猜你喜欢

热点阅读