Redis哨兵(Sentinel)

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 哨兵原理及其使用

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。

Redis哨兵(Redis Sentinel)是一种用于监控和管理Redis主从复制架构的特殊进程。它可以自动检测主节点故障,并进行故障转移,将一个从节点升级为新的主节点,以确保系统的高可用性


哨兵的作用如下:

监控:Sentinel 会不断检查您的master和slave是否按预期工作

自动故障恢复:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主

通知:Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端

集群监控原理:

Sentinel基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令:

•主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。

•客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例客观下线。quorum值最好超过Sentinel实例数量的一半。

集群故障恢复原理:

一旦发现master故障,sentinel需要在salve中选择一个作为新的master,选择依据是这样的:

- 首先会判断slave节点与master节点断开时间长短,如果超过指定值(down-after-milliseconds * 10)则会排除该slave节点

- 然后判断slave节点的slave-priority值,越小优先级越高,如果是0则永不参与选举

- 如果slave-prority一样,则判断slave节点的offset值,越大说明数据越新,优先级越高

- 最后是判断slave节点的运行id大小,越小优先级越高。

当选出一个新的master后,该如何实现切换呢?

选择新的master流程如下:

- sentinel给备选的slave1节点发送slaveof no one命令,让该节点成为master

- sentinel给所有其它slave发送slaveof 新masterIP地址和端口 命令,让这些slave成为新master的从节点,开始从新的master上同步数据。

- 最后,sentinel将故障节点标记为slave,当故障节点恢复后会自动成为新的master的slave节点

Redis哨兵的一般工作流程:

配置哨兵:在每个Redis哨兵节点上,创建一个配置文件sentinel.conf,并在其中指定监控的Redis实例的IP地址和端口号。

启动哨兵:启动每个Redis哨兵节点,并以配置文件sentinel.conf为参数。

选举领导者:当哨兵节点启动后,它们将相互通信以选举出一个领导者(leader),领导者负责监视主节点的状态并做出决策。

监控主节点:哨兵节点通过发送命令来监控主节点的运行状况,包括PING、INFO、PING、ROLE等命令。

检测主节点故障:如果哨兵节点在一定时间内没有收到来自主节点的回复或检测到了其他问题,它们将判断主节点发生了故障。

故障转移:一旦哨兵节点检测到主节点故障,它会选择一个合适的从节点作为新的主节点,并将其他从节点切换到新的主节点上。这个过程称为故障转移(failover)。

客户端重定向:一旦故障转移完成,哨兵节点将向客户端发送重定向信息,使得客户端可以连接到新的主节点。

恢复主节点:当原来的主节点恢复后,它将成为新的从节点,根据配置文件sentinel.conf中的配置进行操作。

通过Redis哨兵,可以实现Redis主从架构的自动故障检测和转移,提高了系统的可用性和容错能力。哨兵还提供了监控和通知功能,可以及时发现和解决Redis集群中的问题。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
NoSQL Redis Sentinel
【怒怼大厂面试官】听说你精通Redis?说说Redis哨兵
面试官:Redis哨兵知道吧?知道的,Sentinel哨兵本质是一个运行在特殊模式下的Redis服务器。面试官:嗯然后呢?它的主要作用是通过检测Redis主从服务器的下线状态,选举出新Redis主服务器,也就是故障转移,来保证Redis的高可用性。
82 4
【怒怼大厂面试官】听说你精通Redis?说说Redis哨兵
|
1月前
|
编解码 算法 定位技术
GEE时序——利用sentinel-2(哨兵-2)数据进行地表物候学分析(时间序列平滑法估算和非平滑算法代码)
GEE时序——利用sentinel-2(哨兵-2)数据进行地表物候学分析(时间序列平滑法估算和非平滑算法代码)
147 3
|
10天前
|
监控 NoSQL Redis
Redis哨兵,Redis哨兵核心功能如何一个云服务器完成6个节点的搭建-docker什么是docker是否可以把六个容器,都写到同一个ym配置中,一次都启动,不就直接保证互通问题了吗?
Redis哨兵,Redis哨兵核心功能如何一个云服务器完成6个节点的搭建-docker什么是docker是否可以把六个容器,都写到同一个ym配置中,一次都启动,不就直接保证互通问题了吗?
|
1月前
|
存储 NoSQL Redis
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群(下)
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群
236 1
|
1月前
|
监控 NoSQL Redis
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群(上)
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群
286 0
|
1月前
|
存储 监控 NoSQL
Redis哨兵&分片集群
Redis哨兵&分片集群
37 0
|
1月前
|
监控 NoSQL 算法
Redis 搭建哨兵集群
Redis 搭建哨兵集群
29 1
|
1月前
|
监控 NoSQL Unix
redis----主二从三哨兵环境配置
redis----主二从三哨兵环境配置
41 0
|
1月前
|
存储 监控 NoSQL
Redis 架构深入:主从复制、哨兵到集群
大家好,我是小康,今天我们来聊下 Redis 的几种架构模式,包括主从复制、哨兵和集群模式。
Redis 架构深入:主从复制、哨兵到集群
|
1月前
|
存储 编解码 人工智能
GEE数据集——哨兵2号Sentinel-2 云概率数据集
GEE数据集——哨兵2号Sentinel-2 云概率数据集
204 2