哨兵模式原理
一、定义
哨兵(sentinel):是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的Master并将所有slave连接到新的
Master。所以整个运行哨兵的集群的数量不得少于3个节点。
二、作用
监控:哨兵会不断地检查主节点和从节点是否运作正常。
自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其它从节点改为复制新的主节点。
通知(提醒):哨兵可以将故障转移的结果发送给客户端。
三、故障转移机制
1.由哨兵节点定期监控发现主节点是否出现了故障
每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的)。当超过半数哨兵节点认为该主节点主观下线了,这样就客观下线了。
2.当主节点出现故障,此时哨兵节点会通过Raft算法(选举算法)实现选举机制共同选举出一个哨兵节点为leader,来负责处理主节点的故障转移和通知。所以整个运行哨兵的集群的数量不得少于3个节点。
3.由leader哨兵节点执行故障转移,过程如下:
●将某一个从节点升级为新的主节点,让其它从节点指向新的主节点;
●若原主节点恢复也变成从节点,并指向新的主节点;
●通知客户端主节点已经更换。
需要特别注意的是,客观下线是主节点才有的概念;如果从节点和哨兵节点发生故障,被哨兵主观下线后,不会再有后续的客观下线和故障转移操作。
主节点的选举:
1.过滤掉不健康的(已下线的),没有回复哨兵 ping 响应的从节点。
2.选择配置文件中从节点优先级配置最高的。(replica-priority,默认值为100)
3.选择复制偏移量最大,也就是复制最完整的从节点。
哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式
哨兵的模式
一、哨兵对主从复制集群进行监控
监控的对象:所有redis数据库节点
二、哨兵与哨兵之间互相进行监控
监控对象:哨兵彼此
三、监控的目的
1、哨兵和哨兵之间的监控目的:检测批次的存活转台
2、哨兵监控所有redis数据库的目的:为了实现自动故障切换
故障切换的原理?
1当master挂掉,哨兵会及时发现,发现之后,进行投票机制,选举出一个新的master服务器(得是基数)
2完成slave--->master的从想主切
3完成其他从服务器对新master的配
cluster模式
cluster模式同步两种方式
master1 只给slave01同步数据mastre1和master2同步数据
cluster模式
1、读和写可以负载均衡
2、自动故障转移
3、突破了单机存储限制