Redis-ha(sentinel)
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)的更多相关文章
- 【Redis】使用Redis Sentinel实现Redis HA
阅读目录 1 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 18000 sent ...
- Redis for OPS 05:哨兵HA Sentinel
写在前面的话 上一节的主从环境能够解决我们保证数据安全性的问题,但是却无法解决我们在主节点挂掉的时候服务继续使用的问题,同时也不能自动切换新的主. 我们运维的目的肯定是希望即使主库挂掉一个,服务依旧能 ...
- 使用Spring-data-redis操作Redis的Sentinel
介绍 Spring-Data-Redis项目(简称SDR) 是对Redis的Key-Value数据存储操作提供了更高层次的抽象,提供了一个对几种主要的redis的Java客户端(例 如:jedis,j ...
- redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用
目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...
- Redis集群部署(redis + cluster + sentinel)
概述说明 说明:本次实验采用c1.c2.c3三台虚拟机完成,每台服务器上都部署一个master.一个slave和一个sentinel.当某主节点的挂了,相应的从节点替位:当某主节点及主节点对应的从节点 ...
- Java代码操作Redis的sentinel和Redis的集群Cluster操作
总共四台机器,crxy99,crxy98分别是主节点和从节点. crxy97和crxy96是两个监控此主从架构的sentinel节点. 看代码: import org.junit.Test; im ...
- Redis之Sentinel高可用安装部署
背景: 之前通过Redis Sentinel 高可用实现说明和Redis 复制.Sentinel的搭建和原理说明大致已经介绍了sentinel的原理和实现,本文再次做个简单的回顾.具体的信息见前面的两 ...
- Redis学习-Sentinel
Redis的Sentinel系统用于管理多个Redis服务器(instance), 该系统执行以下三个任务: 监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正 ...
- redis cluster + sentinel详细过程和错误处理三主三备三哨兵
redis cluster + sentinel详细过程和错误处理三主三备三哨兵1.基本架构192.168.70.215 7001 Master + sentinel 27001192.168.70. ...
- redis哨兵(Sentinel)、虚拟槽分区(cluster)和docker入门
一.Redis-Sentinel(哨兵) 1.介绍 Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,r ...
随机推荐
- 一个简单好用的zabbix告警信息发送工具
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...
- SQL注入深入剖析
SQL注入是一门很深的学问,也是一门很有技巧性的学问 1. 运算符的优先级介绍 2. SQL语句执行函数介绍 mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESC ...
- (转)Android技术积累:图片缓存管理
如果每次加载同一张图片都要从网络获取,那代价实在太大了.所以同一张图片只要从网络获取一次就够了,然后在本地缓存起来,之后加载同一张图片时就从缓存中加载就可以了.从内存缓存读取图片是最快的,但是因为内存 ...
- vue-resource文档详细解读
Vue可以构建一个完全不依赖后端服务的应用,同时也可以与服务端进行数据交互来同步界面的动态更新.Vue通过插件的形式实现了基于AJAX,JSPNP等技术的服务端通信. vue-resource是一个通 ...
- c/c++的|、||、&、&&、异或、~、!运算
位运算 位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果. 位运算符有: &(按位与).|(按位或) ...
- 如何在网页中嵌入QQ 阿里旺旺等代码
1 登陆以下网址: http://wp.qq.com/login.html?target=1 2 复制代码到HTML中即可 3 将对方和自己的QQ都登陆测试(注意自己QQ必须是2010以上版本,否则会 ...
- 小白系列-免费广告路由器web认证设置(2)
要设置认证页面图片.须要到后台注冊一个帐号,绑定路由器. 路由器管理后台网址 http://115.29.12.130/router 第一步:自己主动获取一个路由器ID(上一篇文章中的路由器ID也要改 ...
- java Web开发中,Tomcat安装顺序与配置(windows7系统下)
一.要先安装JDK[比如,安装目录:D:/program Files/Java ] 注:1.JDK安装顺序可以参照百度,后期会补上 2.安装是否成功的验证方式:点击“开始”→输入“cmd”→输入“Ja ...
- JMeter 二:执行顺序 & 支持的协议
执行顺序 参考:http://jmeter.apache.org/usermanual/test_plan.html#executionorder 不同种类元素之间,执行顺序如下: Configura ...
- ES6 WeakMap Map 区别
WeakMap与Map的区别 1.WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名. 2.WeakMap的键名所指向的对象,不计入垃圾回收机制. 示例: const wm ...