Redis搭建(三):哨兵模式
一、sentinel介绍
Redis 2.8中提供了“哨兵”工具来实现自动化的系统监控和故障恢复功能。
Redis 2.6 版也提供了哨兵工具,但此时的哨兵是1.0版,存在非常多的问题,任何情况下都不应该使用这个版本的哨兵。
1. Sentinel功能:
- 监控:哨兵不断的检查master和slave是否正常的运行。
- 通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序。
- 自动故障迁移:当一个master不正常运行了,哨兵会开始一次故障转移操作,它会将一个slave升级成为master,并让其他的slave重新配置使用新的master,并且应用程序使用Redis服务端通知的新地址。
2. 优缺点:
- sentinel有效的解决了故障转移的问题,也解决了主节点下线客户端无法识别新的可用节点的问题
- 但是如果是从节点下线了,sentinel是不会对其进行故障转移的,并且连接从节点的客户端也无法获取到新的可用从节点
3. Sentinel工作方式:
- 每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令
- 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。
- 如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。
- 当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线
- 在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令
- 当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次
- 若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。
- 若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。
4. 相关概念:
主观下线:Subjectively Down,简称 SDOWN,指的是当前 Sentinel 实例对某个redis服务器做出的下线判断。
客观下线:Objectively Down, 简称 ODOWN,指的是多个 Sentinel 实例在对Master Server做出 SDOWN 判断,并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的Master Server下线判断,然后开启failover.
二、单哨兵配置
1. 部署环境
如下图所示,其中虚线表示主从复制关系,实线表示哨兵的监控路径:
- 一个master,两个slave,一个sentinel
- 新建sentinel目录,准备配置文件
- redis.conf中的ip应设置为外网可访问的真实ip,不然jedis会报错
2. 统一配置
daemonize yes //默认值是no,把值修改为yes,以后台模式运行
appendonly yes //默认值是No,意思是不使用AOF增量持久化的方式,使用RDB全量持久化的方式。把No值改成Yes,使用AOF增量持久化的方式 //若设置密码,master和slave需同时配置下面两个参数:
masterauth "12345678" //连接master的密码
requirepass "12345678" //自己的密码
3. slave的配置
- 修改pid和端口号,与文件名对应
- 配置slaveof,指定master地址
4. sentinel的配置
sentinel monitor mymaster 192.168.127.129 6379 1 //ip应为外网能访问的,最后的1表示最低通过票数
sentinel down-after-milliseconds mymaster 5000 //哨兵程序每5秒检测一次Master是否正常,默认30秒
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000
sentinel auth-pass mymaster 12345678 //若设置了密码,需配置此项
5. 启动所有Redis
redis-server redis.conf
redis-server redis6380.conf
redis-server redis6381.conf
redis-sentinel sentinel.conf & --->或 redis-server sentinel.conf --sentinel &
6. 测试
- 先连接各个redis server,使用info replication命令查看集群信息
- 杀死master,看sentinel的日志
- 再次查看集群信息,并操作redis
- 恢复启动之前的master,发现它成了从节点
三、多哨兵配置
1. 部署环境
在一主多从的Redis系统中,可以使用多个哨兵进行监控,以保证系统足够稳健,此时,不仅哨兵会监控主库和从库,哨兵之间也会互相监控。如下图所示:
2. 拷贝、修改sentinel配置文件
- 修改最低通过票数
- 修改端口号
- sentinel之间会自动监控,不需要配置
3. 测试
四、注意事项
1. IP的配置
- redis.conf、sentinel.conf中使用的ip,应设置为外网可访问的真实ip,不然jedis会报错
- 若有多块网卡,需配置bind ip绑定一个ip地址
2. 设置密码
- master和slave都得配置 masterauth "12345678" 和 requirepass "12345678",且密码必须相同
- sentinel需配置 sentinel auth-pass mymaster 12345678
Redis搭建(三):哨兵模式的更多相关文章
- 【运维技术】redis(一主两从三哨兵模式搭建)记录
redis(一主两从三哨兵模式搭建)记录 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也包含我自己,能够节省对应的时间. 软件架构: 生产环境使用三台 ...
- Linux基于Docker的Redis主从复制、哨兵模式搭建
本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...
- Redis——(主从复制、哨兵模式、集群)的部署及搭建
Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...
- docker-compose一键部署redis一主二从三哨兵模式(含密码,数据持久化)
本篇基于centos7服务器进行部署开发 一.拉取redis镜像,使用如下命令 docker pull redis 1.查看镜像是否拉取成功,使用如下命令 docker images 显示如下则证明拉 ...
- redis 的一主二从三哨兵模式
概述 在部署redis 的时候,如果redis宕机,缓存将不可用,redis提供了哨兵模式保证redis实现高可用. 即一台主机两台从机,三台哨兵主机,如果主实例宕机,哨兵将将一台从机升级为主机.实现 ...
- 浅谈:redis的主从复制 + 哨兵模式
浅谈:redis的主从复制 + 哨兵模式 主从模式 在谈论redis的主从复制之前,我们先回想下mysql的主从搭建过程,第一步呢首先要在主库服务器中修改my.cnf,开启一下bin_log功能, ...
- redis(一主两从三哨兵模式搭建)记录
转自:http://www.cnblogs.com/fly-piglet/p/9836314.html 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也 ...
- redis环境搭建及一主二从三哨兵模式配置
一.单机redis环境搭建 1.安装: OS:linux redhat6.5 下载redis 官网下载链接:https://redis.io/download 把安装包上传到服务器,进行解压 [roo ...
- SpringBoot进阶教程(三十)整合Redis之Sentinel哨兵模式
Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而 ...
- Redis 主从集群搭建及哨兵模式配置
最近搭建了redis集群及哨兵模式,为方便以后查看特此记录下来: 1.Redis安装 2.主从架构 2.1 Redis主从架构图 2.2Redis主从结构搭建 Redis集群不用安装多个Redis,只 ...
随机推荐
- MyEclipse Tern was unable to complete your request in time
1.错误描述 2.错误原因 由错误提示可知,是由于MyEclipse Tern不能及时完成回复 3.解决办法 (1)Window--->Preferences--->MyEclipse-- ...
- div垂直水平居中的四种方法总结
5.利用弹性布局 与 margin: <style> .container{ height: 600px; width: 600px; border:1px solid black; di ...
- pymysql 模块
Python3连接MySQL 介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL ...
- 《DSP using MATLAB》示例Example7.16
代码: M = 60; alpha = (M-1)/2; l = 0:M-1; wl = (2*pi/M)*l; Hrs = [ones(1, 7), 0.5925, 0.1099, zeros(1, ...
- fir分布式滤波的fpga实现
此设计的结构包括:1.移位寄存器链,n阶的有n-1个寄存器. 2.第一次累加部分.由fir滤波系数对称可得到对称的寄存器相加可以减小电路规模,所以第一次累加很有必要. 3,锁存并移位部分.此部分是为了 ...
- 配置linux下面python的开发环境
1.首先安装Python开发环境 http://blog.csdn.net/testcs_dn/article/details/51253365 2.安装django开发环境 http://blog. ...
- input子系统框架
废话不多说,直接进入主题.在驱动insmod后,我们应用层对input设备如何操作?以下以全志a64为实例. 在/dev/input/eventX下(X的形成为后续会分析),是内核把接口暴露给应用层, ...
- mysql5.6.11安装
下面详细介绍5.6版本MySQL的下载.安装及配置过程. 图1.1 MySQL5.6 目前针对不同用户,MySQL提供了2个不同的版本: Ø MySQL Community Serve ...
- js中使用分号的情况
- 【精品分享一】JAVA 精品图书高清PDF下载
更多图书尽在第一云教育book.1eduyun.com JAVA核心技术卷2:高级特征(原书第8版) JAVA软件开发从新手到高手(Java从入门到精通(第3版)+Java项目开发全程实录(第3版)) ...