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. log4j 分类输出

    一个log4j的问题也是折磨了我两天了. 终于算是实现了个符合需求的小demo.然而,我必须吧log4j搞定,这个乐塞. 需求描述: 用xml配置文件,将debug.info.warn.error分类 ...

  2. Java线程的生命周期

    线程的生命周期包括:新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead)5种状态.线程状态转换图如下: 1.新建状态(New) 当程序使用new关 ...

  3. Windows与Linux的双系统的安装顺序及Linux的补救办法

    如果安装多重引导,最好先安装Windows再安装Linux系统,因为: Linux在安装的时候,你可以选择将引导加载程序安装在MBR或个别分区的启动扇区,而且Linux的loader可以手动设置菜单( ...

  4. dll清理

    結束了閉關,又得與人類交流了,只好裝QQ 印象中企鵝手腳一向是BAT中最乾淨的-結果還是裝了不少樂色,一併挖出來除之   C:\program files\common files\tencent\q ...

  5. Kmeans算法的应用实例(Matlab版本)

    K-means是一种经典的聚类算法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最 ...

  6. Linux1.0源代码编译过程

    根据源代码包中的readme文件及http://chfj007.blog.163.com/blog/static/173145044201191195856806/?suggestedreading& ...

  7. leetcode 107 Binary Tree Level Order Traversal II ----- java

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  8. JavaWeb学习记录(十六)——防止表单重复提交

    产生随机字符串进行验证,如果产生的和Session存储的相同则可以提交,提交后删除session对应的属性值:否则表单提交不成功 一.产生随机字符串的工具类 package web10.util; i ...

  9. 求10000以内n的阶乘

    总时间限制:  5000ms 内存限制:  655360kB 描述 求10000以内n的阶乘. 输入 只有一行输入,整数n(0<=n<=10000). 输出 一行,即n!的值. 样例输入 ...

  10. NOIP2016 D1T1 玩具迷題(toy)

    题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...