阅读目录


简单介绍

使用Redis Sentinel实现Redis HA。
阅读此文前,先阅读文章:《【Redis】配置redis主从复制》http://www.cnblogs.com/ssslinppp/p/5661419.html 
作者:ssslinppp

配置redis主从IP和port:
master and slave ip port
master 127.0.0.1 6379
slave1 127.0.0.1
6380
slave2 127.0.0.1
6381

一、配置Sentinel.conf

上文中已经创建的主从设备,截图如下:

如上图所示:
  • master:6379
  • slave1:6380
  • slave2:6380

sentinel配置文件如下:
  1. #sentinel monitor <master-name> <ip> <redis-port> <quorum>
  2. sentinel monitor mymaster 127.0.0.1 6379 1
  3. sentinel down-after-milliseconds mymaster 30000
  4. sentinel failover-timeout mymaster 18000
  5. sentinel parallel-syncs mymaster 1

解释说明如下:
>>> sentinel monitor mymaster 127.0.0.1 6379 1
  • mymaster :为master redis的名称;
  • ip和port指定了6379端口的Redis为master;
  • quorum:一般情况下会启动多个redis sentinel作为分布式使用,当master挂掉之后,需要从若干个slave中推选出1个slave作为新的master,并将其他slave的slaveof设置指向这个新的master。而判断master redis是否挂掉,需要sentinel 说了算,只有不少于quorum个sentinel认为master redis挂掉,才会进行failover。因为这里只启动了一个sentinel,所以配置quorum为1,若是启动了多个sentinel用于分布式,可以将quorum设置>1。
>>> sentinel down-after-milliseconds mymaster 30000
表示当master redis 30s 没有应答时,就可以断定master挂掉了,但需要结合上面配置的quorum一起。
>>> sentinel failover-timeout mymaster 18000
若sentinel在该配置时间内没有完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
>>> sentinel parallel-syncs mymaster 1
指定在failover过程中,同时被sentinel reconfigure的最大slave实例数。由于reconfigure过程中,对应的slave会中断响应客户的请求,故为避免所有的slave同时不可用,该值需适当配小。

二、启动Redis Sentinel

  1. ./src/redis-sentinel sentinel.conf

从上可以看出,master redis 为6379,而slave又两个,分别为:6380和6381.
此时在去观察sentinel.conf,会发现sentinel.conf发生了变化,如下所示:

三、关闭master redis,测试failover


大约过去半分钟,后会看到如下:
  • slave 6380的日志记录:
  • 再看看sentinel的提示信息:

  • 再来观察sentinel.conf

可以对比最初的sentinel.conf

此时再分别看看6379/6380/6381的redis.conf:
  • 6379的redis.conf
分2种情况
情况1:当6379(原先的master redis)关闭后,还未重启,此时的redis.conf文件内没有slaveof的配置;
情况2:当6379服务启动后,会在redis.conf的最后添加slaveof的配置,如下:

同时可以看到sentinel输出如下信息:
e
此时看看6379的日志信息:


  • 6380的redis.conf


  • 6381的redis.conf

已经将slaveof自动修改为:6380(新的master)

测试新的同步信息:

从上面的输出结果可以看出,redis 主从复制依然有效。

四、重新切换为最初的master

前面我们看到了当master挂掉时,sentinel会自动的从slave中挑选出一个作为master,并重新配置各redis实例的配置文件。
当之前挂掉的master又重启后,如果希望还是还原到原先的主从配置,可以通过如下操作来进行:

登录到sentinel,使用命令:
  1. redis-cli -h 127.0.0.1 -p 26379 #26379为sentinel的端口
执行语句:
  1. sentinel failover mymaster

接下来我们来看看是否还原到之前的主从配置:
  • 先看看sentinel的输出信息:


查看sentinel的配置文件:




接下来看看3个redis.conf是否自动变化了(reconfigure)
  • 6379的redis.conf
全文搜索slaveof,没有此配置选项,说明已经发生了变化,因为6379此时就是master redis。
  • 6380的redis.conf

在最后添加了:slaveof 127.0.0.1 6379;
说明6380已经从master重新变化为slave了。
  • 6381的redis.conf


还可以通过如下方式进行说明:




五、参考链接

《【Redis】配置redis主从复制》http://www.cnblogs.com/ssslinppp/p/5661419.html 
《Redis Sentinel Documentation》 http://redis.io/topics/sentinel 
《Windows下Redis Sentinel部署》http://bbs.redis.cn/forum.php?mod=viewthread&tid=715 


【Redis】使用Redis Sentinel实现Redis HA的更多相关文章

  1. Redis for OPS 05:哨兵HA Sentinel

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

  2. Redis 复制、Sentinel的搭建和原理说明

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

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

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

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

    本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在 ...

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

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

  6. redis主从复制和sentinel配置高可用

    一:redis主从配置1.环境准备 master : 192.168.50.10 6179 slave1: 192.168.50.10 6279 slave2: 192.168.50.10 63792 ...

  7. 【Redis学习之九】Redis集群:Twemproxy和HA

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-3.0.4 主从模式对写压力没有分担,解决思路就 ...

  8. 24、redis中的sentinel的作用?

    redis中的sentinel的作用? Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Re ...

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

    本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在 ...

随机推荐

  1. jsb里出现的 Invalid Native Object的一次bug修复的思考

    Cocos2d: jsb: ERROR: File /Users/dcx_JD/Documents/cocos2d-x-2.2.2/scripting/javascript/bindings/gene ...

  2. linux定时

    linux怎样启动定时任务 crontab -e进入以后的,定时任务写入 */1 * * * * /usr/bin/python /root/lianxi/time_1.py ,每一分钟定时执行tim ...

  3. 读metronic文档学到的几个知识点

    1.RTL  同样的页面,它做了两套.为什么,因为在这个世界上,有些民族,有些语种,是从右向左来的. 2. google material design 同样的一套东西,又分别做了google mat ...

  4. 廖雪峰老师的git在线教程

    我是看廖老师的网站,学习git使用的,所以在这里做做收藏,也推广推广. 该教程的类型可以换个名称<手把手看图教你用git>来概括,呵呵. 做得很用心,学起来很快.

  5. ion-nav-view的学习 和理解

    当用户在你的app中浏览时,Ionic能够保持检测他们的浏览历史.通过了解他们的浏览历史,向左或向右滑动时可以正确的在视图间转换,或不转换.一个额外的好处是Ionic的导航系统具有可以管理多个历史记录 ...

  6. Matlab位运算操作

    本文为转载他人文章: bitand 按位与操作 a = 7; b = bitand(10,a); disp(dec2bin(a,8)); %ans = 00000111 disp(dec2bin(b, ...

  7. mysql5.6启动占用内存很大的解决方法

    vps的内存为512M,安装好nginx,php等启动起来,mysql死活启动不起来看了日志只看到对应pid被结束了,后跟踪看发现是内存不足被killed; 调整my.cnf 参数,重新配置(系统默认 ...

  8. 控制文本和外观------Attr Binding(attr属性绑定)

    Attr Binding(attr属性绑定) 目的 attr 绑定提供了一种方式可以设置DOM元素的任何属性值.你可以设置img的src属性,连接的href属性.使用绑定,当模型属性改变的时候,它会自 ...

  9. Nginx安全配置研究

    x00 测试环境 ? 1 2 3 操作系统:CentOS6.5 Web服务器:Nginx1.4.6 Php版本:Php5.4.26 0x01 Nginx介绍 nginx本身不能处理PHP,它只是个we ...

  10. Unity3d 适配机型

    1,为了是更多机型能够安装你的游戏,Unity3d Device Filter设置:ARMv6 with VFP: 2,华为C8600,一运行强制停止: 参考网址:http://forum.unity ...