阅读目录


简单介绍

使用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. 部分android手机CCEditBox输入之后键盘输入框不消失得问题

    用小米2s做登录界面时,用到CCEditBOx,输入完之后,键盘可以移下去,但是屏幕上还是显示得键盘自己得输入框,这时点击屏幕任何位置都无法把输入框干掉. 为什么ios上就没有这些android得琐碎 ...

  2. vs2012 + cocos2d-x 2.1.5 + win7开发环境搭建步骤

    先要让vs具备cocos2d-x项目的模板,以此可以创建新的项目(1-5步),然后把相关的源码库文件和动态连接库都拷贝到自己的项目中,以使项目可以正常运行(6-7步). 1,打开vs,设置TestCp ...

  3. selenium执行js报错

    selenium执行js报错 Traceback (most recent call last):    dr.execute_script(js)  File "C:\Python27\l ...

  4. python 数据结构之单链表的实现

    链表的定义: 链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址.由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就 ...

  5. thrift在windows的编译/安装--c++版

    前言: thrift是出于Facebook的rpc网络编程框架, 其对跨平台和多语言的支持优于google protobuf, 但thrift在java/c#语言上应用比较多, 资料也丰富, 在win ...

  6. 卷积神经网络的初步理解LeNet-5(转)

    深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功.本人在多年之前也曾接触过神经网络.本系列文章主要记录自己对深度神经网络的一些学习心得. 第二篇,讲讲经典的卷积神经网络.我不打算详细描述卷 ...

  7. 装载: Matlab 提取矩阵 某一行 或者 某一列 的方法

    比如,从一个6*6矩阵中,提取它的第一行元素,形成一个6维行向量. A(i,:)行  A(:,i)列 方法: A(i,:) 提取矩阵A的第 i行 A(:,i) 提取矩阵A的第 i列   给你个例子: ...

  8. android中常见对话框之一AlertDialog

    在Android应用中,有多种对话框:Dialog.AlertDialog.ProgressDialog.时间.日期等对话框. (1)Dialog类,是一切对话框的基类,需要注意的是,Dialog类虽 ...

  9. ..c++中用c语言的输入法

    题目: 竞选时,要求选民在n个候选人中选择,n个人的名字为 A,B,C,D--连续n个大写字母,如果选择n个人名字之外的人员,则为废票.   统计时以输入'#'为结束标记.请按候选人的得票数目从大到小 ...

  10. FZU-2216 The Longest Straight (二分枚举)

    题目大意:给n个0~m之间的数,如果是0,那么0可以变为任意的一个1~m之间的一个数.从中选出若干个数,使构成一个连续的序列.问能构成的最长序列的长度为多少? 题目分析:枚举连续序列的起点,二分枚举二 ...