Redis的高级特性哨兵
一、哨兵介绍
Redis Sentinel,即Redis哨兵,在Redis 2.8版本开始引入。哨兵的核心功能是主节点的自动故障转移。下面是Redis官方文档对于哨兵功能的描述:
- 监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常。
- 自动故障转移(Automatic failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。
- 配置提供者(Configuration provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。
- 通知(Notification):哨兵可以将故障转移的结果发送给客户端。
简单来说,主从模式下为了使主从具备高可用性,就需要用哨兵进行监控,在主节点下线后,会通过投票选出新的主节点,在主节点上线后,也只能作为新节点的从节点。哨兵环境也需要高可用,所以一般是三个以上的集群。
架构图如下:

二、哨兵集群搭建
2.1搭建Redis主从集群
方法请看上一篇博客,redis主从集群搭建。
不同的是我在三个配置文件加了访问密码,requirepass "XXX",所以需要在这里也加上master的密码
masterauth "XXX",否则主服务器会拒绝从服务器的复制请求。
2.2修改哨兵配置文件
默认的配置文件是sentinel.conf在主目录下,首先复制两份出来
cp sentinel.conf sentinel-27000.conf
cp sentinel.conf sentinel-27001.conf
然后要修改的内容如下(相同的省略):
| sentinel.conf | sentinel-27000.conf | sentinel-27001.conf |
|---|---|---|
| port 26379 | port 27000 | port 27001 |
| pidfile "/var/run/redis-sentinel.pid" | pidfile "/var/run/redis-sentinel2.pid" | pidfile "/var/run/redis-sentinel3.pid" |
| sentinel monitor mymaster 127.0.0.1 6379 2 | sentinel monitor mymaster 127.0.0.1 6379 2 | sentinel monitor mymaster 127.0.0.1 6379 2 |
| sentinel down-after-milliseconds mymaster 3000 | 略 | 略 |
| sentinel failover-timeout mymaster 10000 | 略 | 略 |
| sentinel auth-pass mymaster XXX | 略 | 略 |
| sentinel myid xxx | sentinel myid xxx | sentinel myid xxx |
注意:
- 如果主服务器使用了密码认证,则sentinel auth-pass mymaster XXX是必须的,并且密码与上面的要一致。
- sentinel monitor mymaster 的配置必须要在 其他用到<master-name>的前面,因为读取配置文件时按顺序读取的会报这个名称未定义(坑了我好久)
- 修改 sentinel myid 从而保证三个id都不同。
- 需要在防火墙开启26379、 27000、 27001三个端口。
2.3启动
- 启动redis主从集群,注意顺序是先master再slave
src/redis-server redis-6379.conf
src/redis-server redis-6380.conf
src/redis-server redis-6381.conf
- 启动哨兵有两种方式。
src/redis-sentinel sentinel.conf
src/redis-server sentinel.conf --sentinel
src/redis-sentinel sentinel.conf
src/redis-sentinel sentinel-27000.conf
src/redis-sentinel sentinel-27001.conf
- 如图,哨兵成功监视了master并发现了下面的两个从服务器

2.4测试故障自动转移
- 查看哨兵集群情况,输入命令src/redis-cli -p 27000再info Sentinel

可以看到master是端口6379的,有两个slaves,三个哨兵。 - 这时我们kill掉6379的Redis进程后,再查看集群情况。哨兵日志如下:

6379挂了后进行了一轮的选举投票,最后6380端口的成为了新的master,来看看现在的集群情况是不是这样的。

- 这时如果重新启动6379,它还会不会恢复老大的身份呢?
5020:X 26 Dec 2018 13:46:38.998 # -sdown slave 8.9.8.165:6379 8.9.8.165 6379 @ mymaster 8.9.8.165 6380
5020:X 26 Dec 2018 13:46:48.947 * +convert-to-slave slave 8.9.8.165:6379 8.9.8.165 6379 @ mymaster 8.9.8.165 6380
日志显示6379重新加入了集群,只不过变成了从服务器。
Redis的高级特性哨兵的更多相关文章
- Redis进阶实践之五Redis的高级特性
一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今天我们开始介绍一些Redis的高级特性 ...
- Redis进阶实践之五Redis的高级特性(转载 5)
Redis进阶实践之五Redis的高级特性 一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今 ...
- Redis的高级特性一览
更多内容,欢迎关注微信公众号:全菜工程师小辉.公众号回复关键词,领取免费学习资料. 应用场景 缓存系统:用于缓解数据库的高并发压力 计数器:使用Redis原子操作,用于社交网络的转发数,评论数,粉丝数 ...
- redis多实例与主从同步及高级特性(数据过期机制,持久化存储)
redis多实例 创建redis的存储目录 vim /usr/local/redis/conf/redis.conf #修改redis的配置文件 dir /data/redis/ #将存储路径配置修改 ...
- Redis基础用法、高级特性与性能调优以及缓存穿透等分析
一.Redis介绍 Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库.缓存服务或消息服务使用.Redis支持多种数据结构,包括字符串.哈希表.链表.集合.有序集合.位图.Hype ...
- Redis基础、高级特性与性能调优
本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍.之后概览Redis提供的高级能力,并在部署.维护.性能调优等多个方面进行更深入的介绍和指导. ...
- Redis 基础、高级特性与性能调优
本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍.之后概览Redis提供的高级能力,并在部署.维护.性能调优等多个方面进行更深入的介绍和指导. ...
- Redis数据库高级实用特性:持久化机制
Redis数据库高级实用特性:持久化机制 大型web系统数据缓存设计 Redis高级特性:虚拟内存的使用技巧 Redis高级实用特性:安全性与主从复制 Memcached.Redis OR Tair
- redis 高级特性 不要太好用
Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...
随机推荐
- 菜鸟系列之C/C++经典试题(三)
设计包括min函数的栈 题目:定义栈的数据结构,要求加入一个min函数,可以得到栈的最小元素.要求函数min.push以及pop的时间复杂度都是O(1). 分析:这是2006年google的一道面试题 ...
- 关于Widget预览图的改动
在做项目时候,由于常常不带GPS功能.所以在有些细节上须要做处理,当中之中的一个就是.快捷开关的预览图和实际效果图的差异 在我们快捷开关的预览图中,总是能够看到五个快捷开关,事实上就包含GPS信息 而 ...
- Android中Looper的quit方法和quitSafely方法
Looper是通过调用loop方法驱动着消息循环的进行: 从MessageQueue中堵塞式地取出一个消息.然后让Handler处理该消息,周而复始.loop方法是个死循环方法. 那怎样终止消息循环呢 ...
- zabbix基于SNMP 协议监控路由器
zabbix基于SNMP 协议监控路由器 步骤 步骤超级方便. 1. 路由器上开启snmp 2. 确保外网能訪问到 3. 用snmpwalk測试 4. 加入zabbix主机,SNMP interfac ...
- 每日五题(Spring)
1使用Spring框架的优点是什么? 控制反转: Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们. 面向切面的编程(AOP): Spring支持面向切面的编 ...
- javascript模块化编程:CommonJS和AMD规范
AMD规范,异步模块定义.与CommonJS规范齐名并列. 作用都是利于JavaScript的模块化编程. 模块化编程的好处就是: 1.可重用 2.独立 3.能解决加载的依赖性问题 4.能解决重复加载 ...
- sanic官方文档解析之路由
1,路由,路由相当于一个网址的地址,来确定网址的位置和唯一性 当http://server.url/被允许访问服务器,当最后的"/"通过路由匹配到了业务逻辑处理的函数,将会返回一个 ...
- Record is locked by another user
Oracle修改表中记录时出现record is locked by another user的问题 在操作表时没有commit,导致表被锁,只要执行下面两行语句,就可以了将行锁解锁了. Select ...
- spring cloud-服务注册
正常的服务模块,注册到注册中心,让别的服务发现,调用服务 创建“服务提供方” 下面我们创建提供服务的客户端,并向服务注册中心注册自己. 假设我们有一个提供计算功能的微服务模块,我们实现一个RESTfu ...
- glibc CVE-2015-7547漏洞的分析和修复方法【转】
本文转载自:http://blog.csdn.net/tengxy_cloud/article/details/50764370 漏洞概述 glibc中处理DNS查询的代码中存在栈溢出漏洞,远端攻击者 ...



