Redis哨兵模式详解

news/2024/10/19 20:25:47

目录
Redis哨兵模式定义
为什么需要Redis哨兵模式?
Redis哨兵模式功能
Redis哨兵模式原理
Redis哨兵模式的优缺点

 


Redis哨兵模式定义
Redis哨兵模式是是一个管理多个 Redis 实例的工具,它可以实现对 Redis 的监控、通知、自动故障转移,是Redis实现高可用 的实现方案。

 

为什么需要Redis哨兵模式?
Redis主从模式当主服务器宕机后,需要手动把一台从服务器切换为主服务器,需要人工干预费事费力,为了解决这个问题出现了哨兵模式。

如下图所示:

 

 

Redis哨兵模式功能
Redis哨兵模式提供了以下功能:

 

 

1.监控(Monitoring)

负责监控redis master和slave进程是否正常工作。

2.通知(Notification)

如果redis实例有故障,报警通知给管理员。

3.自动故障转移(Automatic failover)

当 主节点 不能正常工作时,Sentinel 会开始一次 自动的 故障转移操作,它会将与 失效主节点 是 主从关系 的其中一个 从节点 ,升级为新的 主节点,并且将其他的 从节点 指向 新的主节点。

4.配置提供者(Configuration provider)

如果故障转移发生了,通知client客户端新的master地址。

 

Redis哨兵模式原理
当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。

如下图所示:

 


原理是哨兵通过发送命令(ping命令),等待Redis服务器响应,如果在指定时间内,主机Redis无响应,从机则判断主机宕机,选举从机上位,从而监控运行的多个Redis实例。

第一步:心跳机制

每个 Sentinel 会每秒钟 一次的频率向它所知的 主服务器、从服务器 以及其他 Sentinel 实例 发送一个 PING 命令,获取其拓扑结构和状态信息。

如下图所示:

 

 

每个 Sentinel 节点会向主节点、从节点、以及其余 Sentinel 节点定时发送 ping 命令作为心跳检测, 来确认这些节点是否可达,共同监控数据节点的运行状况。

第二步:判断master节点是否下线

每个 sentinel 哨兵节点每隔1s 向所有的节点发送一个PING命令,作用是通过心跳检测,检测主从服务器的网络连接状态。

如果 master 节点回复 PING 命令的时间超过 down-after-milliseconds 设定的阈值(默认30s),则这个 master 会被 sentinel 标记为主观下线。

如下图所示:

 

 

第三步:基于Raft算法选举领头sentinel

master客观下线,那就需要一个sentinel来负责故障转移,所以需要通过选举一个sentinel的领头羊来解决。

如下图所示:

 

 

第四步:故障转移

故障转移的一个主要问题和选择领头sentinel问题差不多,就是要选择一个slaver节点来作为master。

选择主Maseter过程大致如下:

① 选择优先级最高的节点,通过sentinel配置文件中的replica-priority配置项,这个参数越小,表示优先级越高;

② 如果第一步中的优先级相同,选择offset最大的,offset表示主节点向从节点同步数据的偏移量,越大表示同步的数据越多;

③ 如果第二步offset也相同,选择run id较小的;

这样通过以上四大步骤,实现由Redis Sentinel自动完成故障发现和转移,实现自动高可用。

 

Redis哨兵模式的优缺点
哨兵模式优点:最大的优点就是主从可以自动切换,系统更健壮,可用性更高;

哨兵模式缺点:最大的缺点就是还要多维护一套哨兵模式,实现起来也变的更加复杂增加维护成本;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/72747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Rider设置

自动换行强制换行&换行线 (设置成0)设置自定义背景色

数据采集与融合技术作业2

作业2我的getee仓库链接 https://gitee.com/LLLzt-III/crawl_project 作业1代码链接 https://gitee.com/LLLzt-III/crawl_project/tree/master/作业2一、作业①:要求:在中国气象网(http://www.weather.com.cn)给定城市集的7日天气预报,并保存在数据库。 输出信息:Gitee文件…

第147篇:微信小程序开发中Promise的使用(aysnc,await)

好家伙,0.错误描述 今天在开发中犯了一个比较严重的错误 对于Promise的错误使用场景: 微信小程序中展示搜索条件列表// API请求工具函数 const apiRequest = (url, method = GET, headers = {}) => {return new Promise((resolve, reject) => {wx.request({url,method,he…

Playable Director

目录组件介绍字段说明使用Timeline资源 组件介绍Unity原生组件,Playable Director 组件存储时间轴实例和时间轴资源之间的链接。Playable Director 组件控制时间轴实例的播放时间、时间轴实例更新其时钟的方式以及在时间轴实例完成播放后发生的操作。字段说明playable TimeLin…

细说STC15单片机I/O口的四种工作模式

STC15单片机I/O口有四种模式,分别是准双向口、推挽输出、高阻输入和开漏输出。那么什么是准双向口、推挽输出、高阻输入和开漏输出呢?单片机的这四种模式又是怎么体现出来呢?我们来看看STC15芯片手册上各种模式的说明如下图所示。 准双向口:与传统8051的P1、P2和P3口相同模…

dp一遍通

前言 马上csp-s考试了,却发现自己dp太菜了,打算恶补dp 线性dp理解 递推/记忆化搜索,有很多种理解方式 递归重叠子问题的记忆化搜索:像这里例如 \(f[3]\) 可以通过一次计算得到,保存答案,下一次直接调用即可,省去很多复杂度 我们从此引出dp第一个性质:最优子结构 大问题…

数据采集与融合技术作业二

目录作业①实验要求及结果心得体会作业②实验要求及结果心得体会作业③实验要求及结果心得体会码云连接作业① 实验要求及结果要求 在中国气象网(http://www.weather.com.cn)给定城市集的7日天气预报,并保存在数据库。 代码点击查看代码 from bs4 import BeautifulSoup, Uni…

多校A层冲刺NOIP2024模拟赛08

多校A层冲刺NOIP2024模拟赛08\(T1\) A. 传送 (teleport) \(0pts\)弱化版: [ABC065D] Built? | luogu P8074 [COCI2009-2010#7] SVEMIR | “迎新春,过大年”多校程序设计竞赛 H 二次元世界之寻找珂朵莉先不管后面加入的 \(m\) 条边。对于两点间的路径 \(i \to j\) ,经过中转…