Redis sentinel的三个定时监控任务
一套合理的监控机制是Sentinel节点判定节点不可达的重要保证, Redis Sentinel通过三个定时监控任务完成对各个节点发现和监控:
1) 每隔10秒, 每个Sentinel节点会向主节点和从节点发送info命令获取最新的拓扑结构, 如图所示
例如下面就是在一个主节点上执行info replication的结果片段:
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.179.103,port=6379,state=online,offset=190458,lag=0
slave1:ip=192.168.179.104,port=6379,state=online,offset=190313,lag=1
master_replid:ddc0f2a7490a07d4462f53bd034731f3f2ed32b3
Sentinel节点通过对上述结果进行解析就可以找到相应的从节点。这个定时任务的作用具体可以表现在三个方面:
·通过向主节点执行info命令, 获取从节点的信息, 这也是为什么Sentinel节点不需要显式配置监控从节点。
·当有新的从节点加入时都可以立刻感知出来。
·节点不可达或者故障转移后, 可以通过info命令实时更新节点拓扑信息。
2) 每隔2秒, 每个Sentinel节点会向Redis数据节点的__sentinel__: hello 频道上发送该Sentinel节点对于主节点的判断以及当前Sentinel节点的信息, 同时每个Sentinel节点也会订阅该频道, 来了解其他Sentinel节点以及它们对主节点的判断, 所以这个定时任务可以完成以下两个工作:
127.0.0.1:6379> pubsub channels
1) "__sentinel__:hello"
127.0.0.1:6379> subscribe __sentinel__:hello
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "__sentinel__:hello"
3) (integer) 1
1) "message"
2) "__sentinel__:hello"
3) "192.168.179.104,26379,4adf7ee7492961131ffcd0d40d8683fc11ae2294,0,mymaster,192.168.179.102,6379,0"
1) "message"
2) "__sentinel__:hello"
3) "192.168.179.102,26379,bf889f09dcbd3539e41d06b575fc831dce9c0538,0,mymaster,192.168.179.102,6379,0"
1) "message"
2) "__sentinel__:hello"
3) "192.168.179.103,26379,2fe22e2d94cc8eea00e13dffafd7563a742147a1,0,mymaster,192.168.179.102,6379,0"
·发现新的Sentinel节点: 通过订阅主节点的__sentinel__: hello了解其他的Sentinel节点信息, 如果是新加入的Sentinel节点, 将该Sentinel节点信息保存起来, 并与该Sentinel节点创建连接。
·Sentinel节点之间交换主节点的状态, 作为后面客观下线以及领导者选举的依据。
Sentinel节点publish的消息格式如下:
<Sentinel节点IP> <Sentinel节点端口> <Sentinel节点runId> <Sentinel节点配置版本>
<主节点名字> <主节点Ip> <主节点端口> <主节点配置版本>
3) 每隔1秒, 每个Sentinel节点会向主节点、 从节点、 其余Sentinel节点发送一条ping命令做一次心跳检测, 来确认这些节点当前是否可达。 如图所示。 通过上面的定时任务, Sentinel节点对主节点、 从节点、 其余Sentinel节点都建立起连接, 实现了对每个节点的监控, 这个定时任务是节点失败判定的重要依据。
相关文章
- 使用Redis实现任务队列(redis任务队列)
- 深入探索Redis中的键值对特性(遍历redis的key)
- 大小Redis查看库尺寸的简单方法(redis查看库)
- 监控红色卫星:Redis 节点状态监控(redis节点状态)
- Redis:高性能分布式键值对内存存储数据库(redis是干什么的)
- 统计Redis碰撞次数如何提升性能(统计redis碰撞次数)
- 实时应用,驱动组态Redis数据库(组态实时数据库redis)
- 监控Redis队列,实时了解数据变化(监控redis 队列数据)
- 监控Redis连接数一种有效的实践(监控redis连接数)
- Key监控Redis过期Key让生命有个有序的结束(监控redis过期)
- 监测Redis性能,获取实时状态数据(监控redis状态数据)
- 提升服务器性能的利器使用监控Redis性能指令(监控redis性能指令)
- 监控Redis队列,有序处理任务(监控redis处理队列)
- 监控服务器Redis日志,保障运行安全(服务器redis日志查看)
- 构建高效实时应用接口整合Redis缓存(接口整合redis缓存)
- 指定Redis数据库的有效使用方法(指定redis 数据库)
- Redis提升任务处理效率(task使用redis)
- 利用Redis精准统计监控系统性能(利用redis做统计监控)
- 学习如何在何处编写Redis程序(在哪里编写redis程序)
- 从Redis里解锁商品新图片(商品图片存在redis里)
- Redis瞬间失效挽救亦已无望(redis零点失效)
- 的修复解决Redis集群中无效密码的困扰(redis集群无效密码)
- Redis集群拓扑图分析及其实现(redis集群拓扑图)
- 使用Redis集群的Watch技术监控数据(redis集群watch)
- 基于Redis的队列及创建定时任务(redis队列和定时任务)
- Redis重置初始化指南(redis重新初始化教程)
- Redis连接是否需要关闭(redis连接要关闭吗)
- Redis运维管理监控和优化(redis运维都做些什么)
- 监测Redis访问情况全面而精准的视角(redis访问监控)
- 调整如何优化Redis连接数设置(redis连接数大小如何)