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. XmlRpc with C#/Java【转】

    最近看了几个项目都是用xmlrpc协作完成的,就做了几个测试客户端和服务器端和大家一起分享.希望能对入门的同学有帮助 关于xmlrpc的介绍和规范参考http://www.xml-rpc.net/ 下 ...

  2. 解决NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

    使用spring3.05 mvc进行开发,使用tomcat容器,通过url映射寻找view的时候,会报错NoClassDefFoundError: javax/servlet/jsp/jstl/cor ...

  3. JNI_Android项目中调用.so动态库

    JNI_Android项目中调用.so动态库 2014年6月3日 JNI学习 參考:http://blog.sina.com.cn/s/blog_4298002e01013zk8.html 上一篇笔者 ...

  4. JMeter 十六:加密处理

    假设采用MD5进行加密 JMeter 内置的没有MD5加密方法.网上有说采用__MD5函数的,但是我在 Jmeter 2.13 以及 Jmeter 3.2 版本上都没有找到这个函数,官方文档也没有看到 ...

  5. Hibernate关系映射(三) 多对多

    一.使用用户User和Role实现多对多的示例 User.java,实现对Role的引用 package com.lxit.entity; import java.util.HashSet; impo ...

  6. Linux内核部件分析 原子性操作atomic_t

    在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的.在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的.为了弥补 ...

  7. 【BIEE】存储安装信息的目录

    在BIEE中存在一个目录,用于存储BIEE的安装信息,这个文件的目录为 ~/Oracle_BI1/install/setupinfo.txt 我的目录为:E:/BIEE/Oracle_BI1/inst ...

  8. JAVA中的Session和Cookie【转】

    一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...

  9. struts result动态结果集 带参数的结果集

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     &qu ...

  10. shell脚本中执行mysql 语句,去除warning using a password on the command line interface can be insecure信息

    方法二:使用mysql参数的方法 mysql -u$user -p$pass -D $db -e "select host from user;"当然,可以通过将传参的方式来传递 ...