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哨兵模式的更多相关文章

  1. SpringBoot进阶教程(三十)整合Redis之Sentinel哨兵模式

    Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而 ...

  2. 【Redis】Sentinel 哨兵模式

    Sentinel(哨兵模式) 目录 Sentinel(哨兵模式) 哨兵模式的三个定时任务 Sentinel(哨兵)与Sentinel .主服务器.从服务器之间的连接 检测下线状态 选择领头 Senti ...

  3. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

  4. Linux基于Docker的Redis主从复制、哨兵模式搭建

    本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...

  5. Redis——(主从复制、哨兵模式、集群)的部署及搭建

    Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...

  6. 浅谈:redis的主从复制 + 哨兵模式

    浅谈:redis的主从复制 + 哨兵模式 主从模式 ​ 在谈论redis的主从复制之前,我们先回想下mysql的主从搭建过程,第一步呢首先要在主库服务器中修改my.cnf,开启一下bin_log功能, ...

  7. Redis sentinel 哨兵模式集群方案配置

    第一个方案是创建 redis cluster,第二种方案就是用哨兵模式来进行主从替换以及故障恢复.兵模式集群方案配置 一.sentinel介绍 Sentinel作用: 1):Master状态检测 2) ...

  8. Redis sentinel 哨兵模式

    一.sentinel介绍 Sentinel作用: 1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Maste ...

  9. redis sentinel哨兵模式集群搭建教程

    1.环境说明 我们将使用192.168.220.128.192.168.220.129两台机器搭建sentinel交叉主从为例 当前我们已在192.168.220.128上按redis安装教程安装了r ...

随机推荐

  1. 搭建基于SornaQube的自动化安全代码检测平台

    一.背景和目的 近年来,随着新业务.新技术的快速发展,应用软件安全缺陷层出不穷.虽然一般情况下,开发者基本都会有单元测试.每日构建.功能测试等环节来保证应用的可用性.但在安全缺陷方面,缺乏安全意识.技 ...

  2. Flutter 即学即用系列博客——02 一个纯 Flutter Demo 说明

    前言 上一篇文章我们搭建好了 Flutter 的开发环境. Flutter 即学即用--01 环境搭建 这一篇我们通过 Flutter 的一个 Demo 来了解下 Flutter. 开发系统:MAC ...

  3. ubuntu下svn的命令使用

    Subversion的官方网站是:http://subversion.tigris.org/ SVN简介 SVN(Subversion)是一个自由.开源的项目源代码版本控制工具.目前,绝大多数开源软件 ...

  4. Git常用简介

    Git是什么 git是目前最先进的分布式版本控制系统,它的核心架构如下图所示,分为四个核心区域.git的常用命令主要是关于这四个区域. 本地工作区-work 本地工作区就是我们实际电脑中的文件夹以及文 ...

  5. SQL 高效运行注意事项(一)

    设计SQL后,应使用explain命令检查SQL,看是否使用到索引,是否存在filesort,重点检查检索的行数(rows)是否太大. 一般来说. 1.rows<1000,是在可接受的范围内的. ...

  6. 计算器模拟器中的情怀——Free42简介

    说到情怀,我首先想聊几句电子计算器的历史.电子计算器这种东西,在最近这几十年的人类发展中,曾经起到过相当重要的作用,尤其是在七十年代到九十年代初这个时期,大型的全功能电脑贵得要命,有钱有时也买不到,而 ...

  7. libaio.so.1()(64bit) is needed by MySQL-server 问题解决办法

    [root@localhost upload]# rpm -ivh MySQL-server-5.5.25a-1.rhel5.x86_64.rpmerror: Failed dependencies: ...

  8. SCSS & SASS Color 颜色函数用法

    最近做一个没有设计师参与的项目,发现 scss 内置的颜色函数还挺好用.记录分享下 rgba() 能省掉手工转换 hex 到 rgb 格式的工作,如以下 SCSS 代码 $linkColor: #20 ...

  9. mysql 表结构转excel表格

    最近需要写文档,由于开发模式是先开发后写文档(不想吐槽...),数据库表结构什么的都搞好了,然后写文档的时候需要贴表结构,什么字段,类型,相关说明需要一一对应起来,数据库表10多张,字段又多,手动复制 ...

  10. vue项目向小程序迁移调研

    概述 今天调研了一下vue项目怎么向小程序迁移,有些心得,记录下来,供以后开发时参考,相信对其他人也有用. 基本上vue项目向小程序迁移不外乎2种方法,一种是用小程序的web-view组件,另一种是用 ...