本文介绍: Sentinel是Redis高可用性的解决方案:由一个或者多个Sentinel实例组成的哨兵系统监视多个主从服务器,并实现主从服务器的故障转移。 Sentinel本质上只是一个运行在特殊模式下的Redis服务器,使用以下命令可以启动并初始化一个Sentinel实例: 下面我们看一下,启动一个Sentinel实例后,它做了哪些初始化步骤吧。 首先Sentinel也是一台Redis服务器,所以启动后的第一步就是初始化服务器,但是这里的初始化和之前我们普通的Redis服务器不太一样,有些步骤不需要执行,例如载
Sentinel是Redis高可用性的解决方案:由一个或者多个Sentinel实例组成的哨兵系统监视多个主从服务器,并实现主从服务器的故障转移。
Sentinel本质上只是一个运行在特殊模式下的Redis服务器,使用以下命令可以启动并初始化一个Sentinel实例:
下面我们看一下,启动一个Sentinel实例后,它做了哪些初始化步骤吧。
1. 启动并初始化Sentinel
1.1 初始化服务器
首先Sentinel也是一台Redis服务器,所以启动后的第一步就是初始化服务器,但是这里的初始化和之前我们普通的Redis服务器不太一样,有些步骤不需要执行,例如载入持久化文件还原数据库状态等等。
1.2 使用Sentinel专用代码
初始化后的第二步就是将一部分Redis服务器的代码替换成为Sentinel的专用代码,比如服务器的默认端口号,比如Sentinel模式下的命令表等等,正是由于两者使用的命令表不同,所以在哨兵模式下,有些普通键值对命令无法正常执行。
1.3 初始化Sentinel的状态
接下来Sentinel服务器会初始化一个SentinelState的结构,这里面用于保存和哨兵模式相关的一些状态属性。源代码如下,先混个眼熟,下面我们讲解各部分过能时会用到里面的属性。
1.4 初始化sentinelState的masters属性
1.5 创建连向主服务器的网络连接
2.获取主服务器的信息
3. 获取从服务器的信息
4.发布与订阅消息
4.1 发布消息
4.2 订阅消息
5. 检测主观下线状态
6. 检测客观下线状态
7. 选举领头Sentinel
8. 故障转移
9. 总结
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。