Redis集群之主从集群模式(哨兵模式Sentinel)
前言
Redis集群模式主要有2种:
- 主从集群
- 分布式集群。
前者主要是为了高可用或是读写分离,后者为了更好的存储数据,负载均衡。
本文主要讲解主从集群。
与本文相关的代码与配置文件都已经上传至github上:
地址: https://github.com/SeanYanxml/bigdata
主从切换原理
Redis的主从原理与MySQL相似,都是设置两台机器,一主一从。也就是常说的热备与冷备。设置主从的同时,设置两个哨兵进程,用来检测主节点是否宕机。若发现主节点宕机,立马从从节点内选取出合适的节点 作为新的主节点。这点与VIP(虚拟IP技术有点相似)。说的有点抽象,可看原理图,加深印象。原理图如下所示(略):
基本部署操作
基本操作与配置详见我的Redis教程第二篇: Redis & Redis Sentinel 基本使用
操作简略如下:
- 主节点:启动Redis Server进程与Redis Sentinel进程
- 从节点:启动Redis Server进程与Redis Sentinel进程
注:特别注意主从节点的redis.conf与sentinel.conf文件的配置,详细更改见Github地址。
测试实验
主要测试实验如下所示:
切换前
- 主从节点,通过
INFO
命令查询集群信息; - 主从哨兵节点,通过
Sentienl masters
与Sentinel slaves
查询集群信息; - 主节点更新数据值,查看从节点是否有更改。
关闭主节点
- 从节点,通过
INFO
命令查询集群信息; - 主从哨兵节点,通过
Sentienl masters
与Sentinel slaves
查询集群信息; - 从节点更新数据值。
开启主节点
- 主从节点,通过
INFO
命令查询集群信息; - 主从哨兵节点,通过
Sentienl masters
与Sentinel slaves
查询集群信息; - 判断主节点是否更新了之前从节点 插入的数据。
实验进行
由于主从的Log太多,这边就放置一张选举 主从切换部分的截图。
主要总结:
- 切换前,Redis Server与Sentinel 应当都能够获取到整个集群的信息(包括主从节点),且主节点信息更新,从节点也会更新。
- 切换中,Sentinel哨兵会重新选举,从节点会更新为主节点。
- 切换后,原主节点会作为从节点(注意 并不会切换为主节点),切会获取到宕机这段时间的数据,并且作为冷备运行。
- 当原从节点宕机后,原主节点会再次被选举为主节点。
注: 当使用哨兵后,Jedis内将使用JedisSentinelPool
,而不再使用JedisPool
,因为后者不具有高可用的性能。
Reference
略
还没有评论,来说两句吧...