dibo大数据进阶

Redis哨兵模式的工作流程

2019-05-28  本文已影响66人  鸿雁长飞鱼龙潜跃

Redis哨兵模式的工作流程。

哨兵模式是redis的高可用性解决方案。

Sentinel的默认端口是26379。不同于redis的端口6379。

哨兵的本质是redis节点。

一,哨兵模式是如何工作的

什么是哨兵模式呢?Sentinel

首先,哨兵模式是一个监控,哨兵模式通过心跳机制监控集群中的所有master和slave。

然后,哨兵模式会在master下线时,通过一定的规则,将这台master属下的某个slave升级为master。

最后,集群在新的master领导下,继续对外提供服务。

二,master下线重新上线后会抢夺master吗

答案是不会,为什么呢?我们都知道,每个节点都有一个redis.conf文件。

如果是slave节点,会配置slaveof项。而master节点没有此项配置。

那么,在master挂掉,重新选举master的时候,这个配置项是如何更新的呢?

这里涉及到三类配置文件:

master_redis.conf

slave_redis.conf

sentinel_redis.conf

首先,下线的master会变成slave,

master_redis.conf文件里会增加一个配置slaveof master的ip和端口。

然后其中的一台slave会变成master,slave_redis.conf配置文件中移出slaveof配置项。其他的slave会更新自己的slaveof,指向新的master节点。

最后,sentinel变更监控节点的信息。sentinel_redis.conf文件也需要相印的修改。

这里有一个疑问:sentinel监控master节点还是监控所有的节点?

三,总结

1,master可读可写,slave只可读。

redis设置读写分离的命令是:

slave-read-only yes

这个是在master的配置文件中配置就可以了。

2,master与slave是一对多的关系,但是一个master对应的slave越多,集群压力越大,延迟可能就越严重。

3,master写入后立即返回,几乎同时将写入异步同步到slave,所以基本上延迟可以忽略。

4,可以通过slaveof no one命令将slave升级为master。这里指的是手动操作,也就是说不是使用的哨兵模式。

5,可以通过哨兵模式监控集群,当master挂掉以后,自动选举slave变为master,其他slave自动重连master。

有个疑问:哨兵模式的选举机制是什么,满足什么条件的slave才会成为master。

四,哨兵模式通过什么机制来产生新的master?

是选举机制吗?

网友说法,哨兵模式选举新任master使用的是Raft算法,大概意思就是先到先得。

和Zookeeper的选举机制有什么区别?

上一篇下一篇

猜你喜欢

热点阅读