Redis哨兵模式的工作流程
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的选举机制有什么区别?