-
学习步骤:
一、什么是集群?
所谓集群,就是通过添加服务器的数量,提供相同的服务,让服务器达到一个稳定高效的状态。
二、为什么要集群?
1、单个Redis不稳定,当Redis服务器宕机时,就没有服务器可以用了。
2、单个Redis读写能力有限。
三、怎么去集群?
(一)、在Redis集群中,每一个Redis称为一个节点,而节点分为两种,一种为主节点(master),一种为从节点(slave)。Redis是基于主从复制模型开始的。
1、Redis的主从复制:在主从复制模型中,有多个Redis节点,但只有一个master,有多个slave,只要网络连接正常,master将一直将自己的数据同步更新给slave,保持主从同步。
2、特点:主节点master可读,可写。而从节点slave只能读(read-only)。
3、实现:创建三个节点,端口号分别为6380、6381、6382。将6380作为主节点,6381,6382作为从节点。在从节点的配置文件中指出他们的主节点,将slaveof修改,格式为:slaveof 主节点地址 主节点端口。然后 运行三个服务(不要改成后台模式启动,看不到日志,不直观),在主节点6380进行读写操作,在从节点6381和6382进行读操作。
(二)、sentinel哨兵模式
1、分析主从模式的缺点:当主机宕机时,整个集群就没有可写的节点了。由于从节点上备份了主节点的所有数据,当主节点宕机时,只需要将其中的从节点变为主节点就可以解决了。这个就是 sentinel哨兵的作用。
2、哨兵的任务:监控:sentinel会不断的检查主从节点的服务器是否正常运行。
提醒:当某个Redis服务器出现故障时,哨兵会向管理员发送通知。
自动故障迁移:当其中的一个sentinel发现主节点出现故障时,会通知其他的sentinel开会,通过投票来决定master是否下线,并选举由那个从节点来替代主节点。(投票的规则:半数原则。所以一般sentinel通常会配奇数个)
3、哨兵模式部署
在上面主从模式的基础上,配置三个sentinel实例来监控master节点。
配置sentinel,要指定主节点的信息:sentinel monitor 主节点别名 主节点地址 端口号 触发故障切换的最少哨兵数
4、测试:当将主节点关闭时,哨兵会通过日志来显示。然后投票会将从节点选为主节点。
总结:
哨兵模式将主从模式的确定进行了优化,但也会存在一些问题。如:哨兵模式仍然为一个master,当并发量大时,就不能满足写的操作。基于这个问题,会由Redis集群模式解决。在主从模式和哨兵模式都使用了IP绑定。所有哨兵都通过主节点的IP,从而实现对主从模式的监控。