首页 > 代码库 > Redis-sentinel监控
Redis-sentinel监控
Redis的 Sentinel 系统用于管理多个Redis服务器, 该系统执行以下三个任务:
监控(Monitoring)
提醒(Notification)
自动故障迁移(Automatic failover)
Sentinel 是一个分布式系统,可以在一个架构中运行多个 Sentinel 实例,使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。
启动Sentinel:
?通过redis-sentinel启动redis-sentinel /path/to/sentinel.conf
?通过redis-server启动redis-server /path/to/sentinel.conf--sentinel
Sentinel配置项
?sentinel announce-ip <ip>?sentinel announce-port <port>?sentinel monitor <master-name> <ip> <redis-port> <quorum>?sentinel auth-pass <master-name> <password>?sentinel down-after-milliseconds <master-name> <milliseconds>?sentinel parallel-syncs <master-name> <numslaves>?sentinel failover-timeout <master-name> <milliseconds>?sentinel notification-script <master-name> <script-path>?sentinel client-reconfig-script <master-name> <script-path>
1.Sentinel创建命令连接和订阅连接
sentinel与master、slave创建命令连接和订阅连接
sentinel与其他sentinel只创建命令连接
2.Sentinel发送消息
sentinel定期向master、slave发送INFO命令
sentinel定期向master、slave和sentinel发送ping命令
sentinel定期向master发送publish hello命令
hello:sentinel_ip,sentinel_port,sentinel_runid,current_epoch,
master_name,master_ip,master_port,master_config_epoch
3.Master下线检测
(1) sentinel检测到master超时,标记为主观下线
(2) sentinel向其他sentinel询问master是否下线
(3) 超过quorum数量的sentinel认为下线,标记master为客观下线
(4) sentinel进行投票选举leader
备注:1.如果两个sentinel有一个sentinel断掉,另一个sentinel的选举leader将永远失败
2. sentinel不能识别slave中的127.0.0.1地址;
3.修改sentinel模式下的实例角色时,也需要修改sentinel和实例的配置;
4.被sentinel监控的slave,使用slaveof命令无效;
5. sentinel无法将slave当做master作为监控对象
6. sentinel故障迁移中,slave重配超时后sentinel向其他slave发送的slaveof命令被丢弃
sentinel在执行故障迁移中,当被选中的slave升级为master后,其它slave需要重新配置到新master上,如果slave重配到新master超时,sentinel会向该slave发送slaveof命令将slave再次重新配置到新master上,并将命令放到待发缓冲中等待读写事件处理器处理,这时sentinel修改自己保持的实例状态将旧master实例切换到了新master实例,在切换过程中sentinel将slave实例释放掉(同时也释放了命令发送连接),导致之前发送的slaveof命令还没发送已经被清空。该slave只能等待sentinel通过INFO命令发现它的master不是新master时再次向它发送slaveof命令。
Redis-sentinel监控