阅读目录

  • 简单介绍
  • 章节1:配置Sentinel.conf
  • 章节2:启动Redis Sentinel
  • 章节3:关闭master redis,测试failover
  • 章节4:重新切换为最初的master
  • 章节5:参考链接

简单介绍

使用Redis Sentinel实现Redis HA。
阅读此文前,先阅读文章:《【Redis】配置redis主从复制》http://www.cnblogs.com/ssslinppp/p/5661419.html 
作者:ssslinppp
http://www.cnblogs.com/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 
《Configuring Redis High Availability》 http://www.veritas.com/community/blogs/configuring-redis-high-availability 
《Redis Sentinel Documentation》 http://redis.io/topics/sentinel 

《Windows下Redis Sentinel部署》http://bbs.redis.cn/forum.php?mod=viewthread&tid=715 

来自为知笔记(Wiz)

【Redis】使用Redis Sentinel实现Redis HA相关推荐

  1. Redis 在CentOS 6上的 安装和部署以及redis的主从复制sentinel实现HA

    一.简介 Redis是基于内存的存储,所有数据都工作与内存中,基于键值存储(key-value store),经常拿来跟memcached做比较:memcached没有持久能力,Redis有持久能力, ...

  2. 使用Sentinel配置Redis 3.x主从高可用服务

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

  3. Redis高可用sentinel

    1.sentine介绍 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括 ...

  4. Redis基础进阶--Sentinel 机制与用法(二)

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

  5. Redis 复制、Sentinel的搭建和原理说明(转)

    Redis 复制.Sentinel的搭建和原理说明 转自:http://www.cnblogs.com/zhoujinyi/p/5570024.html. 背景: Redis-Sentinel是Red ...

  6. Spring整合redis,通过sentinel进行主从切换。(何志雄)--转

    原文地址:http://blog.csdn.net/tzszhzx/article/details/44590871 实现功能描述:         redis服务器进行Master-slaver-s ...

  7. redis High Availability---Redis Sentinel翻译

    注意,本文档为最新(11月21日),旧版本的可以参考:http://redis.io/topics/sentinel-old 不鼓励使用旧版本的文档. Redis Sentinel是一个用来管理Red ...

  8. Redis中的Sentinel 验证

    启动Redis 服务和Sentinel cd /usr/local/soft/redis-5.0.5/src # 启动Redis 节点 ./redis-server ../redis.conf # 启 ...

  9. Redis学习之Sentinel(四)

    目录 Sentinel简介 Sentinel服务器的初始化 获取主从服务器信息 向主从服务器发送接收消息 检测主观客观下线状态 选举领头Sentinel 故障转移 1. Sentinel简介 Sent ...

最新文章

  1. 曝光丨探访哈工大机器人的秘密基地(图)
  2. Nginx 配置实战:负载均衡的实现
  3. linux系统中apache虚拟目录配置
  4. apache属于哪个公司
  5. boost::geometry::segment_view用法的测试程序
  6. GDI+中发生一般性错误的解决办法 from http://www.cnblogs.com/winzheng/archive/2008/12/23/1360440.html...
  7. 【2018.3.24】模拟赛之一-ssl2545 奇数【水题】
  8. 软件测试人员的核心竞争力
  9. 半夜“逃离上海”?阿里副总裁贾扬清回应:正常差旅回去看病 请不要误解
  10. VBA实现数据库中的字段处理(下划线去掉,后面的字母变大写)之版本1.1。
  11. vue中v-for的使用以及注意事项
  12. Activity、View、Window的理解一篇文章就够了
  13. GoogleNet家族
  14. windows7局域网传输到mac_计算机三级网络技术(5):局域网技术基础及应用
  15. APU~ZPU全掌握!
  16. 修改解锁植物大战僵尸所有模式、关卡、金钱
  17. 华擎J3455-ITX黑群晖6.2.3-25426搭建
  18. 马斯克的星链计划并不是在免费送网络而是准备收租
  19. 锚具ovm是什么意思_OVM锚具资料
  20. 计算机文件只读模式,电脑文件只读模式如何修改 – 手机爱问

热门文章

  1. Gitlab禁用Gravatar头像
  2. mysql数据库导出模型到powerdesigner,PDM图形窗口中显示数据列的中文注释
  3. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)
  4. printf按8进制、16进制输出
  5. 自己定义WinXP的时间校正服务器
  6. 想写Python爬虫?看这5个教程就行了!
  7. Java 类型和数据库类型怎么实现相互映射?
  8. 高仿真的类-请求url
  9. 通过反射越过泛型检查
  10. Eureka的服务自我保护