`
mhtbbx
  • 浏览: 36359 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

阅读更多

最近研究了redis的集群方案,第一个方案是创建 redis cluster,第二种方案就是用哨兵模式来进行主从替换以及故障恢复。

一、sentinel介绍

Redis Sentinel 
Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中

Sentinel作用: 
1):Master状态检测 
2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave 
3):Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换 
Sentinel工作方式: 
1):每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令 
2):如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。 
3):如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。 
4):当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线 
5):在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令 
6):当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次 
7):若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。 
若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。

主观下线和客观下线 
主观下线:Subjectively Down,简称 SDOWN,指的是当前 Sentinel 实例对某个redis服务器做出的下线判断。 
客观下线:Objectively Down, 简称 ODOWN,指的是多个 Sentinel 实例在对Master Server做出 SDOWN 判断,并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的Master Server下线判断,然后开启failover.

通俗来讲就是: 
redis的sentinel系统用来管理多个redis服务器,可以实现一个功能上实现HA的集群。该系统主要执行三个任务: 
①监控( Monitoring ): Redis Sentinel实时监控主服务器和从服务器运行状态。 
②提醒(notification): 当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知 
一个简单的主从结构加sentinel集群的架构图如下: 
这里写图片描述
上图是一主一从节点,加上两个部署了sentinel的集群,sentinel集群之间会互相通信,沟通交流redis节点的状态,做出相应的判断并进行处理,这里的主观下线状态和客观下线状态是比较重要的状态,它们决定了是否进行故障转移 
可以 通过订阅指定的频道信息,当服务器出现故障得时候通知管理员 
客户端可以将 Sentinel 看作是一个只提供了订阅功能的 Redis 服务器,你不可以使用 PUBLISH 命令向这个服务器发送信息,但你可以用 SUBSCRIBE 命令或者 PSUBSCRIBE 命令, 通过订阅给定的频道来获取相应的事件提醒。 
一个频道能够接收和这个频道的名字相同的事件。 比如说, 名为 +sdown 的频道就可以接收所有实例进入主观下线(SDOWN)状态的事件。

二、搭建redis-sentinel 集群环境

1.、在/usr/local/ 下新建一个目录redis-sentinel,然后在此目录下新建7501/ 7502/ 7503/ 7504/ 7505/ 7506/ 六个目录。

2.、将redis安装目录下的reids.conf,拷贝到前4个目录下,分别命名为: 
Redis-7501.conf redis-7502.conf redis-7503.conf redis-7504.conf 
修改配置文件内容(以redis-7501.conf为例):

  1. daemonizeyes
  2. Port 7501
  3. Bind 192.168.12.90
  4. logfile "./redis-7501.log"

3、 将redis安装目录下的sentinel.conf拷贝到7505/和7506/目录下分别命名: 
Sentinel-7505.conf sentinel-7506.conf 
修改配置文件(以sentinel-7505.conf为例):

  1. port7505
  2. sentinel monitor mymaster 192.168.12.9075012

注:我们稍后要启动四个redis实例,其中端口为7501的redis设为master,其他三个设为slave 。所以my mymaster 后跟的是master的ip和端口,最后一个’2’代表我要启动只要有2个sentinel认为master下线,就认为该master客观下线,启动failover并选举产生新的master。通常最后一个参数不能多于启动的sentinel实例数。

4、启动redis和sentinel 
分别启动4个redis实例:

  1. redis-server redis-7501.conf
  2. ...
然后分别登陆7502 7503 7504三个实例,动态改变主从关系,成为7501的slave:
  1. redis-cli-h192.168.12.90-p7502
  2. 192.168.12.90:7502> SLAVEOF 192.168.12.907501

以后台启动模式启动两个sentinel(哨兵):

  1. redis-sentinel sentinel-7505.conf &

5、sentinel一些命令介绍 
要使用sentinel的命令,我们需要用redis-cli命令进入到sentinel:

  1. redis-cli-h192.168.12.90-p7505

① INFO 
sentinel的基本状态信息 
②SENTINEL masters 
列出所有被监视的主服务器,以及这些主服务器的当前状态 
③ SENTINEL slaves 
列出给定主服务器的所有从服务器,以及这些从服务器的当前状态 
④SENTINEL get-master-addr-by-name 
返回给定名字的主服务器的 IP 地址和端口号 
⑤SENTINEL reset 
重置所有名字和给定模式 pattern 相匹配的主服务器。重置操作清除主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel 。 
⑥SENTINEL failover 
当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移,但是它会给其他sentinel发送一个最新的配置,其他sentinel会根据这个配置进行更新


6、测试: 
(1)登陆到 master:

  1. redis-cli -h 192.168.12.90 -p 7501
  2. 192.168.12.90:7501> setname"zhangsan"
  3. [root@localhost redis-sentinel]# redis-cli -h 192.168.12.90 -p 7502
  4. 192.168.12.90:7502> getname
  5. "zhangsan"
  6. 192.168.12.90:7502> set age 24
  7. (error) READONLY You can't writeagainst a read only slave.
可以看到:我们的主从模式中,slave默认是只读。

(2)目前7501是master, 我们强制kill掉 7501 的进程以后,可以看到sentinel打出的信息: 
这里写图片描述

可以看到,sentinel已经将7504这个redis instance提升为新的master,稍后将7501这个实例启动,动态作为7504的slave,这样就手动恢复了redis 集群。

分享到:
评论

相关推荐

    基于phpredis封装的redis-sentinel客户端redis-sentinel.zip

    redis-sentinel 就像他的名字一样,他是一个哨兵,监控 master 状态,如果超过规定时间没有响应,则自动进行主从切换,期间会有一段时间(决定于具体的配置参数)redis集群无法提供服务 。原理类似 mysql 的 MHA。...

    redis集群:redis-sentinel(哨兵机制)集群

    Redis Sentinel(哨兵)是Redis集群中的一个重要组件,它提供了高可用性解决方案,...在Linux环境中,搭建和配置Sentinel集群需要对Redis和Linux有一定了解,但按照上述步骤操作,可以快速构建起一个基础的哨兵集群。

    Redis-Sentinel高可用架构学习

    3. Redis Sentinel(哨兵)的工作模式:Redis Sentinel的工作模式包括监控master服务器,检测master宕机,并自动将从服务器提升为新的master服务器。 4. Sentinel的监控机制:Sentinel以每秒钟一次的频率向它所知的...

    redis-sentinel哨兵集群搭建并整合springboot

    Redis Sentinel 是 Redis 集群的一种高可用性解决方案,它负责监控、故障检测以及主从节点的自动故障转移。在本文中,我们将讨论如何搭建一个 Redis Sentinel 集群,并将其与 SpringBoot 应用程序进行整合。首先,...

    redis 哨兵模式集群文档

    ### Redis哨兵模式集群部署详解 #### 一、Redis哨兵模式概述 Redis哨兵(Sentinel)是一种用于实现高可用性的解决方案。它通过一组哨兵进程来监控主服务器和从服务器是否工作正常,在主服务器出现问题时自动进行故障...

    Redis哨兵模式(Redis-Sentinel)实例配置.rar

    Redis Sentinel,也称为Redis哨兵模式,是Redis官方提供的一个高可用性解决方案,用于监控、故障检测以及在主从架构中自动完成故障转移。在这个实例配置中,我们将深入理解哨兵系统的工作原理,并学习如何设置和操作...

    docker-compose安装redis-sentinel集群(1主+2副+2哨兵)

    docker-compose安装redis-sentinel集群(1主+2副+2哨兵)

    redis-sentinel-bin.7z

    下面将详细介绍Redis Sentinel、哨兵集群部署、Redis集群配置、RDB和AOF的相关知识点。 **Redis Sentinel** Redis Sentinel是Redis的高可用性(HA)组件,它监控主从复制结构中的Redis服务器,当检测到主服务器...

    redis-sentinel-集群.7z

    Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个...

    Redis-x64-3.2.100免安装版配置+linux版.zip

    此外,Redis Cluster是另一种集群解决方案,允许数据在多个节点间分布式存储,提供数据分区和容错能力。 Redis的数据结构包括字符串、哈希、列表、集合和有序集合,这些结构为多种应用场景提供了基础。例如,哈希...

    redis哨兵模式搭建.rar

    Redis Sentinel是Redis的一个高可用性解决方案,用于监控、故障检测以及自动故障恢复主从集群。在Redis中, Sentinel系统可以确保即使在主服务器宕机的情况下,数据仍然能够被正确访问,通过将流量重新路由到备用...

    深入浅出Redis-redis哨兵集群.docx

    《深入浅出Redis-redis哨兵集群》 Redis Sentinel 是Redis的一个重要组件,它提供了高可用性(HA)解决方案,确保在主Redis服务器故障时能够自动切换到备份节点,从而保持服务的连续性。本文将深入探讨Redis ...

    redis-sentinel.tar.gz

    Redis Sentinel 是一个重要的组件,它是 Redis 高可用性(HA)解决方案的关键部分。这个压缩包“redis-sentinel.tar.gz”包含了一组脚本,旨在帮助用户设置和管理 Redis Sentinel 系统,确保数据的持久性和服务的...

    redis主从配置+sentinel哨兵模式

    #### 二、Sentinel 哨兵模式配置 Sentinel 是 Redis 的高可用解决方案之一,它可以自动监控主节点的状态,在主节点出现故障时自动完成从节点到主节点的角色转换,从而保障应用的持续可用性。 ##### 配置 Sentinel ...

    ssm-redis-哨兵模式

    哨兵(Sentinel)模式是Redis提供的高可用性解决方案,能够监控、故障检测以及自动故障迁移,确保在主服务器出现问题时,能够自动切换到备份节点,从而保证服务的连续性。 在这个"ssm-redis-哨兵模式"项目中,主要...

    redis_sentinel(哨兵集群)_1.mp4.mp4

    哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式

    redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz

    4. 初始化 Sentinel 或 Cluster:根据需要配置高可用性,创建哨兵集群或数据分片集群。 5. 安装和配置额外模块:例如 RediSearch 和 RedisGraph,它们可能有自己的配置文件和启动脚本。 6. 监控与管理:使用 ...

    Redis-x64-3.2.100-稳定版.rar

    9. **哨兵系统(Sentinel)**:在高可用性需求更高的场景,Redis Sentinel 负责监控、故障检测和自动故障迁移,管理多个 Redis 实例组成的集群,确保服务的连续性。 10. **Cluster 集群**:Redis Cluster 提供了...

    Redis-环形和哨兵模式集群案例

    本案例将重点介绍 Redis 的两种集群模式:Sentinel(哨兵)模式和 Cluster(环形/集群)模式。 Sentinel 模式: 1. **哨兵系统概述**:Redis Sentinel 是一套分布式监控和故障恢复系统,用于监视主从结构的 Redis ...

Global site tag (gtag.js) - Google Analytics