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 mastersSentinel slaves查询集群信息;
  • 主节点更新数据值,查看从节点是否有更改。

关闭主节点

  • 从节点,通过INFO命令查询集群信息;
  • 主从哨兵节点,通过Sentienl mastersSentinel slaves查询集群信息;
  • 从节点更新数据值。

开启主节点

  • 主从节点,通过INFO命令查询集群信息;
  • 主从哨兵节点,通过Sentienl mastersSentinel slaves查询集群信息;
  • 判断主节点是否更新了之前从节点 插入的数据。

实验进行

由于主从的Log太多,这边就放置一张选举 主从切换部分的截图。
Redis集群之主从集群模式(哨兵模式Sentinel)

主要总结:

  • 切换前,Redis Server与Sentinel 应当都能够获取到整个集群的信息(包括主从节点),且主节点信息更新,从节点也会更新。
  • 切换中,Sentinel哨兵会重新选举,从节点会更新为主节点。
  • 切换后,原主节点会作为从节点(注意 并不会切换为主节点),切会获取到宕机这段时间的数据,并且作为冷备运行。
  • 当原从节点宕机后,原主节点会再次被选举为主节点。

注: 当使用哨兵后,Jedis内将使用JedisSentinelPool,而不再使用JedisPool,因为后者不具有高可用的性能。


Reference