前言
Redis集群模式主要有2种:
主从集群
分布式集群。
前者主要是为了高可用或是读写分离,后者为了更好的存储数据,负载均衡。
本文主要讲解主从集群。
主从切换原理
Redis的主从原理与MySQL相似,都是设置两台机器,一主一从。也就是常说的热备与冷备。设置主从的同时,设置两个哨兵进程,用来检测主节点是否宕机。若发现主节点宕机,立马从从节点内选取出合适的节点 作为新的主节点。这点与VIP(虚拟IP技术有点相似)。说的有点抽象,可看原理图,加深印象。原理图如下所示(略):
基本部署操作
操作简略如下:
主节点:启动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
略