哨兵模式原理

哨兵模式原理

一、定义

哨兵(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、突破了单机存储限制

相关推荐
爬山算法4 分钟前
Maven(6)如何使用Maven进行项目构建?
java·maven
.生产的驴8 分钟前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
爱学的小涛16 分钟前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
吹老师个人app编程教学16 分钟前
详解Java中的BIO、NIO、AIO
java·开发语言·nio
爱学的小涛17 分钟前
【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
java·开发语言·笔记·后端·nio
北极无雪21 分钟前
Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析
java·开发语言·后端·学习·spring
hefaxiang25 分钟前
【MYSQL】mysql约束---自增长约束(auto_increment)
数据库·mysql
琴智冰25 分钟前
SpringBoot
java·数据库·spring boot
binqian25 分钟前
【SpringSecurity】基本流程
java·spring
AAEllisonPang33 分钟前
Oracle 时间计算
数据库·oracle