Sentinel介绍

Redis的
Sentinel 系统用于管理多个Redis服务器, 该系统执行以下三个任务:

监控(Monitoring)

提醒(Notification)

自动故障迁移(Automatic failover)

Sentinel
是一个分布式系统,可以在一个架构中运行多个 Sentinel 实例,使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。

Sentinel启动与配置

启动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>
Sentinel监控流程

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

sentinel选举leader(raft)
 Sentinel数据结构关系图
 Sentinel故障转移流程
 
 
 sentinel故障转移时序图
 
 Sentinel中存在的问题

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监控的更多相关文章

  1. redis sentinel 集群监控 配置

    环境: ip  172.16.1.31 26379  redis sentinel ip  172.16.1.30 6379   主 1 ip  172.16.1.31 6380   从 1 ip   ...

  2. Redis Sentinel机制与用法说明【转】

    本文来自:https://segmentfault.com/a/1190000002680804 概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Ma ...

  3. Redis Sentinel:集群Failover解决方案(转载)

    本文转载自:http://shift-alt-ctrl.iteye.com/blog/1884370 文中的配置例子,还有failover过程中触发的订阅事件具有很好的参考价值. Redis sent ...

  4. Redis Sentinel机制与用法(一)

    Sentinel spring 集群配置: 概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕 ...

  5. Redis Sentinel高可用架构

    Redis目前高可用的架构非常多,比如keepalived+redis,redis cluster,twemproxy,codis,这些架构各有优劣,今天暂且不说这些架构,今天主要说说redis se ...

  6. redis高可用之REDIS SENTINEL

    1. Redis主从配置 1.1. 设置主从复制 Master <= Salve 10.24.6.5:6379 <= 10.24.6.7:6379 1.2.   取消主从复制 1.3.   ...

  7. Redis Sentinel哨兵集群

    Redis Sentinel(哨兵集群)是一种高可用的redis部署方案.在集群中的redis-master服务挂掉时,无需人为干预,即可通过哨兵集群的自我调整,实现redis服务的持续可用. 哨兵集 ...

  8. Redis Sentinel机制与用法

    概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都 ...

  9. (转)基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案

    转载自:http://warm-breeze.iteye.com/blog/2020413 本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedi ...

  10. Redis的同步(主从复制)和Redis Sentinel

    Redis的同步可以让其他服务器拥有一个不断更新的数据副本,从而使拥有数据副本的服务器可以处理客户端发出的读请求. 1.Redis同步的方法: 我们可以通过发送SLAVEOF host port命令来 ...

随机推荐

  1. ABAP DEMO

    sap Program DEMO 介绍 Program Description BALVBT01 Example SAP program for displying multiple ALV repo ...

  2. 目标跟踪之Lukas-Kanade光流法

    转载自:http://blog.csdn.net/u014568921/article/details/46638557 光流是图像亮度的运动信息描述.光流法计算最初是由Horn和Schunck于19 ...

  3. C++ Primer : 第十二章 : 文本查询程序

    C++ Primer书上这个例子讲的很不错,写写帮助自己理解标准库和智能指针. .h 文件内容 #include <fstream> #include <iostream> # ...

  4. 转:struts标签之select详解

    <html:select>生成HTML<select>元素 <html:option>:生成HTML<option>元素 <html:option ...

  5. 关于获取目录的N种方法 的汇总

    前段时间在Global.asax.cs中的Session_End中使用Server.MapPath() 出现"服务器操作在此上下文中不可用"异常. 网络上给出的解决方案:Syste ...

  6. spark新能优化之广播共享数据

    如果你的算子函数中,使用到了特别大的数据,那么,这个时候,推荐将该数据进行广播.这样的话,就不至于将一个大数据拷贝到每一个task上去.而是给每个节点拷贝一份,然后节点上的task共享该数据. 这样的 ...

  7. poj1062 最短路

    题意:有n个物品,任务是得到1号物品,现在每个物品有它的主人,你可以用金钱购买物品,当然也可以用其他物品加上优惠的价格换取,但是有个要求,因为每个物品的主人有各自的等级,你所交易过的人中,等级差不能超 ...

  8. linux设备驱动程序该添加哪些头文件以及驱动常用头文件介绍(转)

    原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是 ...

  9. AS3 Embed用法笔记

    1. 用[Embed]元数据标签可以嵌入GIF,PNG,JPEG,或者MP3文件.ActionScript代码的顺序非常重要.你必须在声明变量前添加[Embed]元数据标签,而且这个变量的类型会是Cl ...

  10. Floating Action Button(漂浮按钮)

    参考:http://blog.csdn.net/pengkv/article/details/46427891 效果图: 步骤一: 在build.gradle添加以下代码,导入包 dependenci ...