redis的sendtinel 是用来管理多个redis服务器的

  • 作用

• 监控:监控主从服务器是否运作正常(通过给服务器发送心跳包的方式)
    • 提醒:当某个Redis服务器出现异常时,可以通过api发送通知给管理员
    • 自动故障转义:当主服务器失效时他会执行故障转移,他会将失效的主服务器标识为不可用,然后通过选举协议 在失效的主服务器中的从节点中选出来一个新的master,告诉其他的从服务器从新的master复制,当客户端连接master服务器时,sentinel也会将新的master地址告诉客户端(从这个地方可以看出,客户端要连接master,要从sentinel那里获取master的真实地址)

  • 启动sentinel

    redis-server /path/to/sentinel.conf --sentinel (使用redis-server 后面必须带上 --sentinel)

    或者

    src/redis-sentinel sentinel.conf

    启动sentinel服务,必须要指定他的配置文件,系统会通过配置文件记录sentinel状态,当sendtinel重启,再通过配置文件还原sentinel状态

    如果没有指定配置文件,或者指定的配置文件不可写,那么sentinel会拒绝启动

  • 配置sentinel(运行一个sentinel最少配置)

  

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1 sentinel monitor resque 192.168.1.3 6380 4 //
sentinel down-after-milliseconds resque 10000 //
sentinel failover-timeout resque 180000 //
sentinel parallel-syncs resque 5 //

• sentinel monitor mymaster 127.0.0.1 6379 2: 指定sentinel所监控的主服务器:127.0.0.1,服务器的端口号:6379,将这个服务器判断为失效至少需要2个sentinel同意。(注意:无论设置多少个sentinel·同意,同意执行sentinel的数量必须要大于 所有sentinel数量的一半)才会执行故障转移

• sentinel down-after-milliseconds mymaster 60000:指定了sentinel 认为主服务断线的毫秒数,如果在给定的时间内,主服务器没有返回sentinel ping命令的回复,或者回复个错误,那么sentinel就认为服务挂了,这时该sentinel会将服务标记为sdown(主观下线),当大多数sentinel也认为服务挂掉时,会标记这个服务为(odown)客观下线。将主服务器标记为客观下线的sentinel数量,由主服务器的配置决定

• sentinel parallel-syncs:在执行故障转移时,最多有几个从服务器同时对新的master做同步数据请求,这个值越小指定故障转移的时间就越长。
如果从服务器允许使用过期数据,可能你不想同时所有的从服务器都向new master发送同步请求,虽然在复制的过程中大多数步骤不会堵塞从服务器,但是从服务器在载人new master过来的rdb文件时,任然会有短时间不能处理命令请求,所以如果所有从服务器同时发送同步请求,可能短时间所有的服务将都不可访问。
所以可以将这个值设置:1 。每次都只有一个从服务同步数据(不能处理请求命令)

  • 主观下线和客观下线

• 主观下线:单个sentinel实例对master 做出下线判断
    如果master在【sentinel down-after-milliseconds mymaster】这个配置的时间内,没有对向他发送ping命令的sentinel一个有效的回复,那么这个sentinel就会标识这个服务为主观下线

• 客观下线:大多数sentinel实例对master 做出主观下线判断
    他们是通过【SENTINEL is-master-down-by-addr】命令来交流判断得出master是否下线。也就是说一个sentinel 可以通过【SENTINEL is-master-down-by-addr】命令,向另一个sentinel 询问他所监控的master是否下线

master对ping命令的有效回复是下面三个:

•     返回 +PONG 。
    •     返回 -LOADING 错误。
    •     返回 -MASTERDOWN 错误。

  如果在给定的时间没有回复 或者 不是上面的三种回复,sentinel都认为是无效回复。
       注意:master必须在【sentinel down-after-milliseconds mymaster】这个配置的时间内,一直给sentinel返回无效回复,sentinel才会给master标记为主观下线。例如:【sentinel down-after-milliseconds        mymaster】配置时间为30秒,那么只要master在29秒之内有一次返回的是有效回复,那么就不会标记为主观下线。
    当sentinel 从其他sentinel收集到足够数量的主观下线的报告后,就会将master置为客观下线,并开始执行故障转移

  • 每个sentinel都需要定期执行的任务

      • 每个sentinel都会以每秒一次的频率向它所知的master,salve,其他 sentinel 发送ping 命令
      • 如果master 在 【sentinel down-after-milliseconds mymaster】这个配置的时间内 没有回复给监控它的sentinel 回复一个有效的ping 回复,那么master就会被监控的它的sentinel标记为主观下线
      • 如果master被标记为主观下线,那么监控它的所有sentinel 都将会以每秒一次的频率确认
      • 主服务器是否进入主观下线状态
      • 如果master被确认为主观下线 并有一定数量(配置文件配置)sentinel 都同意这一次判断,那么master将切换到客观下线状态
      • 一般情况下,没个sentinel 会向他所知的master和slave 以10秒一次的频率发送info指令;当master被标记为客观下线时 这个频率会改到一秒一次
      • 当在【sentinel down-after-milliseconds mymaster】这个配置的时间内 没有一定数量的sentinel同意master下线时,客观状态就会移除,再切换到主观状态,当主服务器从新向sentinel返回有效的ping    回复时,master就会移除主观下线状态

参考文档:http://www.redis.cn/topics

Redis-ha(sentinel)的更多相关文章

  1. 【Redis】使用Redis Sentinel实现Redis HA

    阅读目录 1 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 18000 sent ...

  2. Redis for OPS 05:哨兵HA Sentinel

    写在前面的话 上一节的主从环境能够解决我们保证数据安全性的问题,但是却无法解决我们在主节点挂掉的时候服务继续使用的问题,同时也不能自动切换新的主. 我们运维的目的肯定是希望即使主库挂掉一个,服务依旧能 ...

  3. 使用Spring-data-redis操作Redis的Sentinel

    介绍 Spring-Data-Redis项目(简称SDR) 是对Redis的Key-Value数据存储操作提供了更高层次的抽象,提供了一个对几种主要的redis的Java客户端(例 如:jedis,j ...

  4. redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用

    目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...

  5. Redis集群部署(redis + cluster + sentinel)

    概述说明 说明:本次实验采用c1.c2.c3三台虚拟机完成,每台服务器上都部署一个master.一个slave和一个sentinel.当某主节点的挂了,相应的从节点替位:当某主节点及主节点对应的从节点 ...

  6. Java代码操作Redis的sentinel和Redis的集群Cluster操作

    总共四台机器,crxy99,crxy98分别是主节点和从节点.   crxy97和crxy96是两个监控此主从架构的sentinel节点. 看代码: import org.junit.Test; im ...

  7. Redis之Sentinel高可用安装部署

    背景: 之前通过Redis Sentinel 高可用实现说明和Redis 复制.Sentinel的搭建和原理说明大致已经介绍了sentinel的原理和实现,本文再次做个简单的回顾.具体的信息见前面的两 ...

  8. Redis学习-Sentinel

    Redis的Sentinel系统用于管理多个Redis服务器(instance), 该系统执行以下三个任务: 监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正 ...

  9. redis cluster + sentinel详细过程和错误处理三主三备三哨兵

    redis cluster + sentinel详细过程和错误处理三主三备三哨兵1.基本架构192.168.70.215 7001 Master + sentinel 27001192.168.70. ...

  10. redis哨兵(Sentinel)、虚拟槽分区(cluster)和docker入门

    一.Redis-Sentinel(哨兵) 1.介绍 Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,r ...

随机推荐

  1. Ceph源码解析:CRUSH算法

    1.简介 随着大规模分布式存储系统(PB级的数据和成百上千台存储设备)的出现.这些系统必须平衡的分布数据和负载(提高资源利用率),最大化系统的性能,并要处理系统的扩展和硬件失效.ceph设计了CRUS ...

  2. [转]SSIS ADO.NET vs OLEDB

    本文转自:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/1a9e3670-9685-4943-913b-123ecf248a9c/ol ...

  3. [转]SSIS数据转换组件_派生列、审核、字符映射转换和条件性拆分转换

    本文转自:http://www.cnblogs.com/gudujianxiao/archive/2012/04/14/2446925.html 一 派生列 派生列转换通过对输入列进行类型转换或应用表 ...

  4. iOS: 在Xcode7系列中给类名自动添加前缀

    添加前缀原因: 我个人还是很喜欢 Class Prefix 的,因为: 1. 使用它几乎不增加什么成本, 2. 不使用它可能会造成安全隐患, 3. 它能够以直接的方式编码一些信息以供未来的回溯, 4. ...

  5. Oracle之数据库安全

    密码破解,大部分其实是通过枚举的方式,列出可能的密码,然后逐个尝试,直到找到真正的密码,有时也叫暴力破解.接下来,我们将举几个密码破解的例子. n  密码破解例1--- OrakelCrackert ...

  6. 算法之排序Low B三人组

    有序区:有的地方的数据已经完全变得有顺序,我们把这部分区域的数据成为有序区无序区:有的地方的数据依旧无序,我们把这部分数据成为无序区时间复杂度:用来估计算法运行时间的一个式子(单位)空间复杂度:用来评 ...

  7. Python中PyQuery库的使用总结

    介绍 pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,官方文档地址是:http://packages.python.org/pyquery/ pyquery 可让你用 ...

  8. win下idea远程提交WordCount任务到HA集群

    一,环境配置 1,修改win下的host文件:即C:\Windows\System32\drivers\etc\host中添加集群中机子的ip 2,win下hadoop,并为win的环境变量配置had ...

  9. HDU 4372 - Count the Buildings(组合计数)

    首先想过n^3的组合方法,即f(i,j,k)=f(i-1,j,k)*(i-2)+f(i-1,j-1,k)+f(i-1,j,k-1),肯定搞不定 然后想了好久没有效果,就去逛大神博客了,结果发现需要用到 ...

  10. PHP图像操作:3D图、缩放、旋转、裁剪、加入水印(一)

    来源:http://www.ido321.com/875.html 1.利用php gd库的函数绘制3D扇形统计图 1: <?php 2: header("content-type&q ...