哨兵是什么?
哨兵是Redis高可用(HA)的解决方案.它是一种特殊的模式.只不过它不对外提供服务.
它的组成: Sentinel是一个系统(或者说是集群)它是由一个(多个实例)组成
采用哨兵集群的原因是防止哨兵的误判.(单个哨兵的话会由于主节点过大或者由于网络原因造成误判)
为什么需要Redis哨兵?
Redis有主从模式(客户端写操作发送到主节点,读操作发送到从节点)
如果这时候主节点出现故障,不能对外提供服务了.这个时候我们需要做哪几个操作才能正常的对外提供不间断服务.
1.我们不知什么主节点挂了(最主要的问题)
2.手工把从库设置为主库
3.客户端还需要修改新的主库地址
Redis如何提供无间断对外提供服务?
首先我们了解下Redis哨兵三个定时任务
1.监控(主节点是否下线)
2.选主(选择一个新的主节点)
3.通知(通知客户端和其他从节点,哨兵)
监控(三个定时任务)
INFO命令
监控的话这里我们就必须了解到哨兵的三个定时任务了
第一个定时任务: 每10s每个哨兵对master和slave节点发送INFO命令
哨兵会定时向所的Redis服务节点(主从)发送INFO命令。(获取拓扑图信息)
订阅频道
第二个定时任务 每2秒每个sentinel通过master节点的channel交换信息