前言:
主从复制是基于一致性实现的,所以一旦主节点挂掉了,那么为了维持主从复制,内部的从节点会去再选取一个leader作为Master,这样就保证了数据的一致性,最终实现主从复制
在redis的主从复制集群部署的情况下,有两种方式去处理这种情况
第一种:手动在从节点中选一个作为主节点,使用SLAVEOF no one让当前的从节点变为主节点,其它从节点就可以手动连接到最新的主节点(手动)!如果这个时候老大修复了,那就重新连接
第二种:自动选举主节点方式,哨兵模式
哨兵模式:
1,概述:主从切换技术的方法是:当主服务器挂掉后,需要手动把一台从服务器切换为主服务器,这个过程是需要人工干预的,还会造成一段时间内服务不可用,这不是一种推荐方式,更多时候我们优先考虑哨兵模式。Redis从2.8开始正式提供了Sentinel(哨兵)架构来解决这个问题
2,哨兵模式解释:Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程他会独立运行,其本质就是哨兵通过发送命令,等待Redis服务器响应,从而监控运行多个Redis实例
哨兵的作用:
1.通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器
2.当哨兵检测到master挂掉,会自动slave切换成master,然后通过发布订阅通知其它从服务器,修改配置文件,让它们切换主机
注意:单体的哨兵模式一但哨兵节点坏掉,那么他就会彻底失效
解决:集群部署哨兵节点
实施:哨兵节点间不仅监控各个服务器还互相监控,
当主服务器挂机,各个哨兵都会先后不同顺序的发现这个问题,第一个发现的主观上认为的,这个现象就是主观下线,当后面的服务器也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票结果由一个哨兵发起,进行failover【故障转移】操作,切换成功后,就会发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程成为客观下线;
命令行启动哨兵进程:sentinel monitor myredis host port 1
测试!
1,配置哨兵配置文件sentinel.conf
#sentinel monitor myredis host port 1
sentinel monitor myredis 127.0.0.1 6379 1
2.后面的这个数字1,代表主机挂了,slave
3.启动哨兵
注意:如果主机此时回来了,只能归并到新的主机下,当做从机,这就是哨兵模式的规则
4,哨兵模式(小结)
优点:
1,哨兵集群,基于主从复制模式,所有主从复制优点,它全有(cp)
2,主从可以切换,故障可以转移,系统的可用性就会更好
3,哨兵模式是主从模式的升级,手动到自动,更加健壮!
缺点:
1,Redis不好在线扩容,集群容量一旦到达上限,在线扩容就十分麻烦
2,实现哨兵模式的配置其实很麻烦的,里面有很多选择
5,哨兵模式的全部配置
不全,这个文件具体的可以在Redis解压目录能找到