7.Redis Sentinel机制与用法说明(基于哨兵模式的Redis Sharding方案)

Redis Sentinel是Redis的高可用性解决方案,负责监控Master状态并执行自动故障迁移。当Master被Sentinel标记为主观下线(SDOWN)并确认为客观下线(ODOWN)时,Sentinel会进行主备切换。Sentinel集群通过互相通信确保高可用,避免单点问题。 Sentinel还支持配置参数如`down-after-milliseconds`、`failover-timeout`等来调整故障检测和切换策略。在故障切换后,Sentinel会更新配置并传播给其他节点,确保集群一致性。
摘要由CSDN通过智能技术生成

Redis Sentinel机制与用法说明(哨兵模式)

1、主Redis与各个从Redis之间能够实现高可用(监控、自动故障迁移等),这个委托给redis-sentinel来实现。 
2、业务代码中为分散redis服务的压力,全部写操作走主库,部分读操作需要走从服务器的业务需求。(
就目前jedis 2.6.2版本中的JedisSentinelPool做不到这点) 
3、对多个Master-Slaves组成的高可用单元做sharding
集群 

概述

一、sentinel介绍

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

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

主观下线和客观下线 
主观下线:SubjectivelyDown,简称 SDOWN,指的是当前 Sentinel 实例对某个redis服务器做出的下线判断。 
客观下线:ObjectivelyDown简称 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-SentinelRedis官方推荐的高可用性(HA)解决方案,当用RedisMaster-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。

它的主要功能有以下几点

·     不时地监控redis是否按照预期良好地运行;

·     如果发现某个redis节点运行出现状况,能够通知另外一个进程(例如它的客户端);

·     能够进行自动切换。当一个master节点不可用时,能够选举master的多个slave(如果有超过一个slave的话)中的一个来作为新的master,其它的slave节点会将它所追随的master的地址改为被提升为masterslave的新地址。

Sentinel支持集群

很显然,只使用单个sentinel进程来监控redis集群是不可靠的,当sentinel进程宕掉后(sentinel本身也有单点问题,single-point-of-failure)整个集群系统将无法按照预期的方式运行。所以有必要将sentinel集群,这样有几个好处:

·     即使有一些sentinel进程宕掉了,依然可以进行redis集群的主备切换

·     如果只有一个sentinel进程,如果这个进程运行出错,或者是网络堵塞,那么将无法实现redis集群的主备切换(单点问题);

·     如果有多个sentinelredis的客户端可以随意地连接任意一个sentinel来获得关于redis集群中的信息

Sentinel版本

Sentinel当前最新的稳定版本称为Sentinel 2(与之前的Sentin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值