Redis笔记-Sentinel哨兵模式
Redis以主从的模式搭建集群后,如果主节点Master挂掉,虽然可以实现将备用节点Slave切换成主节点,但是Redis本身并没有自动监控机制,需要借助Sentinel哨兵模式,实现监控并实现自动切换。为了实现Sentinel的高可用,需要sentinel也以集群模式来搭建,这里通过一台机器的不同端口来模拟。相关环境信息如下:
1、Redis集群信息:
| 角色 | IP地址 | 监听端口 |
| Master | 127.0.0.1 | 6379 |
| Slave | 127.0.0.1 | 6380 |
| Slave | 127.0.0.1 | 6381 |
Sentinel集群信息:
| 哨兵角色 | IP地址 | 监听端口 |
| Node-1 | 127.0.0.1 | 26379 |
| Node-2 | 127.0.0.1 | 26380 |
| Node-3 | 127.0.0.1 | 26381 |
2、Redis集群搭建过程参考上篇,这里不再描述。首先启动Redis的主节点和两个Slave节点。
进入Master节点,查看信息:
[root@VM_0_14_centos bin]# ./redis-cli -h 127.0.0.1 -p -a funnyboy
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:> info replication
# Replication
role:master
connected_slaves:
slave0:ip=127.0.0.1,port=,state=online,offset=,lag=
slave1:ip=127.0.0.1,port=,state=online,offset=,lag=
master_replid:d5802af0905736ae28201050ce4871ee2921c16c
master_replid2:
master_repl_offset:
second_repl_offset:-
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
127.0.0.1:>
显示当前节点role为master,并且连接的slave个数为2,OK。
分别进入两个slave节点查看信息:
[root@VM_0_14_centos bin]# ./redis-cli -h 127.0.0.1 -p -a funnyboy
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:
master_link_status:up
master_last_io_seconds_ago:
master_sync_in_progress:
slave_repl_offset:
slave_priority:
slave_read_only:
connected_slaves:
master_replid:d5802af0905736ae28201050ce4871ee2921c16c
master_replid2:
master_repl_offset:
second_repl_offset:-
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
127.0.0.1:>
[root@VM_0_14_centos bin]# ./redis-cli -h 127.0.0.1 -p -a funnyboy
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:
master_link_status:up
master_last_io_seconds_ago:
master_sync_in_progress:
slave_repl_offset:
slave_priority:
slave_read_only:
connected_slaves:
master_replid:d5802af0905736ae28201050ce4871ee2921c16c
master_replid2:
master_repl_offset:
second_repl_offset:-
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
127.0.0.1:>
角色都为slave,并且master信息正常。确保Redis集群OK后,开始准备搭建sentinel集群。
3、Sentinel集群搭建
step1、将redis-sentinel拷贝到redis对应的执行目录bin(该命令是redis-server的一个连接,用redis-server也OK,后面讲到,启动sentinel会有两种方式),然后拷贝sentinel.config到redis配置文件目录config。

step2、分别编辑sentinel的配置文件(没特别强调的保持默认即可)
sentinel-26379.conf配置如下:
daemonize yes #开启后台守护进程
port #端口配置
pidfile "/usr/local/redis/pid/redis-sentinel-26379.pid" #PID文件
logfile "/usr/local/redis/logs/sentinel-26379.log" #日志文件
sentinel monitor mymaster 127.0.0.1 #哨兵监控配置。注意,如果配置了认证,改配置必须在auth-pass配置之前,否则启动报找不到master的错误
sentinel auth-pass mymaster funnyboy #认证配置
sentinel down-after-milliseconds mymaster #master或者slave多少时间(默认30秒)不能使用标记为down状态。
sentinel failover-timeout mymaster #若哨兵在配置值内未能完成故障转移操作,则任务本次故障转移失败。
sentinel-26380.conf配置如下:
daemonize yes #开启后台守护进程
port #端口配置
pidfile "/usr/local/redis/pid/redis-sentinel-26380.pid" #PID文件
logfile "/usr/local/redis/logs/sentinel-26380.log" #日志文件
sentinel monitor mymaster 127.0.0.1 #哨兵监控配置。注意,如果配置了认证,改配置必须在auth-pass配置之前,否则启动报找不到master的错误
sentinel auth-pass mymaster funnyboy #认证配置
sentinel down-after-milliseconds mymaster #master或者slave多少时间(默认30秒)不能使用标记为down状态。
sentinel failover-timeout mymaster #若哨兵在配置值内未能完成故障转移操作,则任务本次故障转移失败。
sentinel-26381.conf配置如下:
daemonize yes #开启后台守护进程
port #端口配置
pidfile "/usr/local/redis/pid/redis-sentinel-26381.pid" #PID文件
logfile "/usr/local/redis/logs/sentinel-26381.log" #日志文件
sentinel monitor mymaster 127.0.0.1 #哨兵监控配置。注意,如果配置了认证,改配置必须在auth-pass配置之前,否则启动报找不到master的错误
sentinel auth-pass mymaster funnyboy #认证配置
sentinel down-after-milliseconds mymaster #master或者slave多少时间(默认30秒)不能使用标记为down状态。
sentinel failover-timeout mymaster #若哨兵在配置值内未能完成故障转移操作,则任务本次故障转移失败。
step3、启动哨兵监控程序:
[root@VM_0_14_centos redis]# ./bin/redis-sentinel ./config/sentinel-.conf
[root@VM_0_14_centos redis]# ./bin/redis-sentinel ./config/sentinel-.conf
[root@VM_0_14_centos redis]# ./bin/redis-sentinel ./config/sentinel-.conf
启动有两种方式:
一是执行:redis-sentinel sentinel.conf
二是执行:redis-server sentinel --sentinel
step4、通过哨兵连接,并检查信息:
[root@VM_0_14_centos bin]# ./redis-cli -h 127.0.0.1 -p -a funnyboy
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:> info sentinel
# Sentinel
sentinel_masters:
sentinel_tilt:
sentinel_running_scripts:
sentinel_scripts_queue_length:
sentinel_simulate_failure_flags:
master0:name=mymaster,status=ok,address=127.0.0.1:,slaves=,sentinels=
127.0.0.1:>
可以看到监控的redis服务,一个Master、两个Slave、sentinels = 3 说明配置OK。
4、模拟场景:Redis Master节点挂掉,查看Redis集群状态。
step1、关掉Master节点:
[root@VM_0_14_centos bin]# ./redis-cli -p -a funnyboy
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:> shutdown
not connected>
[root@VM_0_14_centos bin]#
step2、通过哨兵查看集群状态:
127.0.0.1:> info sentinel
# Sentinel
sentinel_masters:
sentinel_tilt:
sentinel_running_scripts:
sentinel_scripts_queue_length:
sentinel_simulate_failure_flags:
master0:name=mymaster,status=ok,address=127.0.0.1:,slaves=,sentinels=
127.0.0.1:>
通过sentinel信息可以看到,Master节点已经自动切换到6380端口了,说明主节点挂掉后,6380 Slave节点自动升级成为了Master节点。
step3、启动6379 redis服务,然后查看节点角色,此时6379变成了Slave,6380为Master节点,OK。
[root@VM_0_14_centos redis]# ./bin/redis-server ./config/redis-.conf
[root@VM_0_14_centos redis]# ./bin/redis-cli -p -a funnyboy
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:>
127.0.0.1:> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:
master_link_status:up
master_last_io_seconds_ago:
master_sync_in_progress:
slave_repl_offset:
slave_priority:
slave_read_only:
connected_slaves:
master_replid:c77763408266bcebf233bdc9e59e3bcf14dc7a08
master_replid2:
master_repl_offset:
second_repl_offset:-
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
Redis笔记-Sentinel哨兵模式的更多相关文章
- SpringBoot进阶教程(三十)整合Redis之Sentinel哨兵模式
Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而 ...
- 【Redis】Sentinel 哨兵模式
Sentinel(哨兵模式) 目录 Sentinel(哨兵模式) 哨兵模式的三个定时任务 Sentinel(哨兵)与Sentinel .主服务器.从服务器之间的连接 检测下线状态 选择领头 Senti ...
- (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...
- Linux基于Docker的Redis主从复制、哨兵模式搭建
本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...
- Redis——(主从复制、哨兵模式、集群)的部署及搭建
Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...
- 浅谈:redis的主从复制 + 哨兵模式
浅谈:redis的主从复制 + 哨兵模式 主从模式 在谈论redis的主从复制之前,我们先回想下mysql的主从搭建过程,第一步呢首先要在主库服务器中修改my.cnf,开启一下bin_log功能, ...
- Redis sentinel 哨兵模式集群方案配置
第一个方案是创建 redis cluster,第二种方案就是用哨兵模式来进行主从替换以及故障恢复.兵模式集群方案配置 一.sentinel介绍 Sentinel作用: 1):Master状态检测 2) ...
- Redis sentinel 哨兵模式
一.sentinel介绍 Sentinel作用: 1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Maste ...
- redis sentinel哨兵模式集群搭建教程
1.环境说明 我们将使用192.168.220.128.192.168.220.129两台机器搭建sentinel交叉主从为例 当前我们已在192.168.220.128上按redis安装教程安装了r ...
随机推荐
- DSAPI多功能.NET函数库组件
DSAPI.dll不定期更新,增加功能,故无法每次都发到网上,如果需要获得最新版DSAPI.dll的,请到QQ群:419130936群共享里下载. 简介 dsapi.dll是一款基于.net平 ...
- Django学习之十二:Cache 缓存组件
目录 Django Cache 缓存组件 缓存逻辑伪代码 配置缓存源 可配置参数说明 01. Django的默认缓存 02. 基于Redis的django-redis 03. 自定义cache 04. ...
- 【转载】Win7利用任务计划程序实现定时关机
在Win7.Win8或者Win10系统中,如果要实现电脑的自动定时关机,不需要借用任何的外部程序,直接系统自带的任务计划程序即可实现电脑的定时自动关机,支持设定电脑关机时间以及执行频率次数,如固定每天 ...
- 快速构建SPA框架SalutJS--项目工程目录 三
配置文件 在开始我们的第一个界面之前,我们需要把初始的html和config文件配置好.html非常简单,只需要一个div作为最外部的容器包裹着所有界面即可: <!DOCTYPE html> ...
- CSS Modules In Webpack
1)从形式上看,CSS Modules 是将CSS中的选择器转换为变量,然后在DOM中引用变量来引入样式. 2)从效果上看,CSS Modules 可以将CSS选择器名字转成随机字符串,保证选择器同名 ...
- Java笔试题库之选题题篇【141-210题】
141.Struts框架可以支持以下哪种程序开发语言? A.C B.C++ C.Java D.C# 解答:C 142.在Servlet处理请求的方式为. A.以进程的方式 B.以程序的方式 C.以线程 ...
- Mysql事务开启方式(客户端+java手动+Spring Boot)
一:概念 作为单个逻辑单元执行一系列操作,要么完全执行,要么完全不执行.举例 我们需要向数据库插入3条数据(我们希望这三条数据要么全部插入成功,要么全部失败), 比如第一条数据插入成功,插入第二条数据 ...
- 【机器学习】--EM算法从初识到应用
一.前述 Em算法是解决数学公式的一个算法,是一种无监督的学习. EM算法是一种解决存在隐含变量优化问题的有效方法.EM算法是期望极大(Expectation Maximization)算法的简称,E ...
- python接口自动化(五)--接口测试用例和接口测试报告模板(详解)
简介 当今社会在测试领域,接口测试已经越来越多的被提及,被重视,而且现在好多招聘信息要对接口测试提出要求.区别于传统意义上的系统级别测试,很多测试人员在接触到接口测试的时候,也许对测试执行还可以比较顺 ...
- Python3中性能测试工具Locust安装使用
Locust安装使用: 安装: python3中 ---> pip3 install locust 验证是否安装成功---> 终端中输入 locust --help ...