Redis Sentinel哨兵模式原理及配置

之前文章介绍了redis replication主从高可用架构,
现在延伸下,本文讨论redis replication架构下实现自动故障切换(automatic failover)的技术--Sentinel


主要参考官方文档:
https://redis.io/topics/sentinel  

http://redisdoc.com/topic/sentinel.html  

 
注:配置sentinel之前需先建立master-slave replication
可依照文章建立replication: http://blog.itpub.net/25583515/viewspace-2644438/  


一.安装配置
在1个master 1个slave 的环境中加一个sentinel,
进入redis源码安装目录copy sentinel.conf文件
# cd /u01/packages/redis-3.0.6
# cp sentinel.conf   /usr/local/redis/etc/
# vi /usr/local/redis/etc/sentinel.conf
daemonize yes
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000


参数解释:
sentinel monitor mymaster 127.0.0.1 6379 1
指示 Sentinel 去监视一个被命名为 mymaster 的master,可指定为任何名字
Master  IP为127.0.0.1 , 端口号为 6379 ,
这个master判断为失效至少需要 1 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)
注意,无论你设置多少个 Sentinel 同意才能判断一个服务器失效, 一个 Sentinel 都需要获得系统中多数(majority) Sentinel 的支持, 才能发起一次自动故障迁移


sentinel down-after-milliseconds mymaster 30000
down-after-milliseconds 指定了 Sentinel 认为master已经断线所需的毫秒数


sentinel parallel-syncs mymaster 1
parallel-syncs 指定了在执行故障转移时, 最多可以有多少个slave同时对新的master进行同步, 这个数字越小, 完成故障转移所需的时间就越长


sentinel failover-timeout mymaster 180000
failover-timeout 指定故障切换允许的毫秒数,超过这个时间,就认为故障切换失败,默认为3分钟


启动sentinel
# redis-sentinel /usr/local/redis/etc/sentinel.conf


查看状态
# redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=1,sentinels=1


至此,配置sentinel工作完成


Sentinel 相关命令
• INFO sentinel的基本状态信息
• PING :返回 PONG 
• SENTINEL masters :列出所有被监视的master,以及这些master的当前状态
• SENTINEL slaves <master name> :列出给定master的所有slave服务器,以及这些slave的当前状态
• SENTINEL get-master-addr-by-name <master name> : 返回给定名字的master的 IP 地址和端口号。 如果这个master正在执行故障转移操作, 或者针对这个master的故障转移操作已经完成, 那么这个命令返回新的master的 IP 地址和端口号。
• SENTINEL reset <pattern> : 重置所有名字和给定模式 pattern 相匹配的master。 pattern 参数是一个 Glob 风格的模式。 重置操作清除master目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的,master的所有slave和 Sentinel
• SENTINEL failover <master name> : 当master失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移 (不过发起故障转移的 Sentinel 会向其他 Sentinel 发送一个新的配置,其他 Sentinel 会根据这个配置进行相应的更新)。


二. 原理:
故障转移时主要是解决两个问题,一是选Leader Sentinel,二是选新的master


1.选Leader Sentinel规则

Sentinel 自动故障迁移使用 Raft 算法来选举领头(Leader)Sentinel , 从而确保在一个给定的纪元时期(epoch)里, 只有一个Leader产生。
表示在同一个时期, 不会有两个 Sentinel 同时被选中为Leader, 并且各个 Sentinel 在同一个时期中只会对一个Leader进行投票。


注:Raft算法主要思想是同一期Term(Epoch)投票中少数服从多数原则达成一致,选出Leader
具体算法这里不过多解释,详细可参考文章: https://www.jianshu.com/p/8e4bbe7e276c

 


2.选新master规则
1> 在失效主服务器属下的从服务器当中, 那些被标记为主观下线、已断线、或者最后一次回复 PING 命令的时间大于五秒钟的从服务器都会被淘汰。
2> 在失效主服务器属下的从服务器当中, 那些与失效主服务器连接断开的时长超过 down-after 选项指定的时长十倍的从服务器都会被淘汰。
3> 在经历了以上两轮淘汰之后剩下来的从服务器中, 我们选出复制偏移量(replication offset)最大的那个slave作为新的master服务器; 如果复制偏移量不可用, 或者slave服务器的复制偏移量相同, 那么带有最小运行 ID 的那个从服务器成为新的master。


一次故障转移步骤:
1>发现master已进入客观下线状态。
2>对当前纪元时期(epoch)进行自增, 并尝试在这个纪元时期中当选。
3>如果当选失败, 那么在设定的故障迁移超时时间的两倍之后, 重新尝试当选。 如果当选成功, 那么执行以下步骤
4>选出一个slave,并将它升级为master。
5>向被选中的slave发送 SLAVEOF NO ONE 命令,让它转变为master。
通过发布与订阅功能, 将更新后的配置传播给所有其他 Sentinel , 其他 Sentinel 对它们自己的配置进行更新。
6>向已下线master的其它slave发送 SLAVEOF host port 命令, 让它们去复制新的master。
7>当所有slave都已经开始复制新的master时, 领头 Sentinel 终止这次故障迁移操作。


以上,介绍了Redis Sentinel哨兵模式相关配置及原理,是否很好理解呢。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25583515/viewspace-2645084/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25583515/viewspace-2645084/

2024最新Redis 哨兵模式搭建详解 在现代应用程序中,数据的高可用性和可靠性至关重要。Redis 的哨兵模式(Sentinel)是实现高可用性的一个强大解决方案,它不仅仅提供高可用性,还能进行实时监控及故障自动恢复。这篇文章将深入探讨 Redis 哨兵模式的工作原理,详细的搭建步骤,以及各项配置的深度解析,旨在帮助读者全面掌握 Redis 哨兵架构。 阅读详情

相关推荐

七、Redis高可用(哨兵模式Sentinel)

当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器;Sentinel(哨兵)是Redis的高可用性的解决方案,有一个或多个Sentinel示例组成的Sentinel系统可以监视任意多个主节点,以及这些主节点的从节点,并在被监视的主节点下线时,自动将下线的主节点下的某个从节点升级为新的主节点,然后由新的主节点代替已下线的主节点继续处理命令请求。开启sentinel。

爱吃西红柿的博客 1077

七、Redis Sentinel 哨兵模式

(一)Redis Sentinel 模式简介   Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而redis-sentinel本身也是独立运行的进程,可以部署在其他与redis集群可通讯的机器中监控redis集群。 (二)功能   1、不时地...

panchang199266的博客 378

Redis 哨兵模式(Sentinel)的工作原理是什么?

总之,Redis 哨兵模式通过多个 Sentinel 节点的协作,实现了对主节点的自动监控、故障检测和故障转移,提高了 Redis 集群的可用性和可靠性。Sentinel 节点更新配置。

yonggeit的博客 3018

Zookeeper和Redis中的选举工作

前言 最近在准备复习了,想着把以前的知识串一串,零零散散的总是很容易忘,知识还是要成体系的,这也是互联网工程师的必备素养吧,要不每天都有新知识,等到35还怎么和年轻人拼,只有沉淀出自己的东西,才能不被淘汰。 现在到处都是分布式、高并发,我们用的很多东西像数据库之类的到了生产环境都会是集群部署,每台机器都是一个节点,很多场景又会分为主从节点,比如主写从读啊之类的,当然,说到这里少不了节点挂了的情况,...

幻想波普星 1220

AutoCAD提示找不到acdb24.dll、AcGe24.dll、AcPal.dll、AcUt.dll怎么办?

在我们安装了AutoCAD 2023版本以后,打开CAD,可能会出现dll文件丢失的情况,如下所示:1、由于找不到acdb24.dll,无法继续执行代码。重新安装程序可能解决此问题。2、由于找不到AcGe24.dll,无法继续执行代码。重新安装程序可能解决此问题。3、由于找不到AcPal.dll,无法继续执行代码。重新安装程序可能解决此问题。4、由于找不到AcUt.dll,无法继续执行代码。重新安装程序可能解决此问题。遇到AutoCAD启动系统错误,由于找不到dll文件该怎么处理呢?

huoxu369的博客 1万+

Datawhale~数据挖掘实践之序列问题处理~天池·资金流入流出预测-挑战Baseline~Day01~数据探索与分析

写在前面✍ 本系列笔记基于天池平台上“资金流入流出预测-挑战Baseline”学习赛,记录如何完整的打一次数据挖掘类比赛。同时,该比赛属于序列建模问题,希望学习完成这个任务,可以对序列问题的处理有一定的独立思考能力和实践操作能力,可以将所学理论,用编码的形式和实际的问题得到深入。 第一篇,EDA Content: 初步了解赛题及数据 1.1 任务 1.2 用户基本信息数据 1.3 用户申购赎回数据 1.4 收益率表 1.5 银行间拆借利率表 1.6 提交格式 1.7 评分指标 EDA 1 初.

小卜妞的博客 2358

404. Sum of Left Leaves(Leetcode每日一题-2020.09.19)

Problem Find the sum of all left leaves in a given binary tree. Example Solution 首先就是我们只求叶子节点之和(左孩子右孩子为空就可以判断是否为叶子节点),然后需要判断是否是左边的叶子节点,所以我们只需要判断每个节点左边节点是否为空,如果不为空是否为叶子节点,如果成立我们就返回这个左孩子的值再加上向右边孩子进行递归计算的值(右孩子中也有可能有左叶子节点)。 /** * Definition for a binary tree

Bryan要加油 697

STM32L452与FPGA通信翻车?手把手教你关闭I2C时钟延展避坑(附OVR错误解决方案)

本文深入解析STM32L452与FPGA在I2C通信中因时钟延展功能导致的常见问题,提供关闭I2C时钟延展的详细配置方法(NOSTRETCH模式),并针对可能出现的OVR错误给出Combined模式解决方案。通过实战案例和波形分析,帮助工程师快速排查和解决嵌入式系统中的I2C兼容性问题。

e3f4g5的博客 215

Redis集群部署详解:主从复制、Sentinel哨兵模式与Cluster集群的工作原理与配置

主从复制、哨ientinel哨兵模式与Cluster集群的工作原理与配置

niaonao 3357

手把手教你新建一个winform项目(史上最全)

本文介绍如何利用visual studio新建一个winform程序

qq_34059233的博客 4万+

【CSP-S 提高组】考试大纲集合

【CSP-S提高组】考试大纲集合

weixin_42596089的博客 7255

Redis配置哨兵模式(sentinel)

Redis配置哨兵模式(sentinel) 【原文链接】 昨天最后留了一个问题,主服务器挂掉了,子服务器怎么上位还是说等待主服务器归来? 答案是主机挂掉了,子节点还会等待主机恢复,如果需要更改主机,还需要手动配置这样很不方便,这时候哨兵模式就派上用场了。 今天的内容是接着上一篇【点这里】继续配置的。 1、哨兵模式(sentinel)是什么? 哨兵是一个独立的进程,其原理是:哨兵通过向redis服务器发送命令,等待redis服务器响应,从而监控多个运行中的redis实例。 通过发送命令,让redis服务器返

weixin_56321833的博客 461

CloudCompare&PCL 体元累加法(树冠体积计算)

文章目录

dayuhaitang1的博客 1553

【Redis】Redis高可用之Sentinel哨兵模式详解(Redis专栏启动)

本文深入浅出讲解什么是Redis Sentinel 哨兵模式、哨兵模式架构。剖析Redis Sentinel实现原理,Sentinel领导者节点选举原理,主节点选举原理,最后附Redis接入哨兵模式实战。

小明的Java问道之路 1万+

嵌入式工程师成长之路(1)——元件基础(试读版)

上拉电阻阻值选错导致MCU反复重启?0欧电阻竟然能“背锅”信号干扰?高精密采样电阻的温漂毁了整个控制系统?——这些问题,都是基础不牢!优快云硬件领域头部博主十年经验汇总,涵盖电阻分类、封装、实战选型、避坑指南,附带职业进阶路径,助你从小白进阶为“电路医生”!

云轩阁 34万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Redis(十八)——Sentinel 哨兵模式

文章目录Redis(十八)——Sentinel 哨兵模式1、哨兵模式概述2、搭建 Sentinel 集群3、sentinel 集群测试4、哨兵模式的所有配置详解 Redis(十八)——Sentinel 哨兵模式 1、哨兵模式概述 主从切换 当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。Redis从2.8开始正式提供了Sentinel (哨兵)模式来解决这个问题。 哨兵模式概述 S

万里顾一程的博客 591

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

redis哨兵模式的原理及部署

Redis Sentinel 是一个分布式系统,为Redis提供高可用性解决方案。可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议 (gossip protocols) 来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个从服务器作为新的主服务器。

misakivv的博客 1041

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

关于Redis集群、主从、哨兵模式的介绍

Redis集群模式详解 本文系统介绍了Redis的四种集群模式及其配置方案。1)主从复制模式通过主节点处理写请求、从节点同步数据和分担读负载;2)Redis集群模式采用16384个哈希槽实现数据分片,支持水平扩展;3)哨兵模式专注于监控和自动故障转移;4)集群+哨兵组合模式兼具数据分片和高可用性。文章重点分析了3主3从的最小高可用配置方案,阐述了奇数master节点的选举机制优势,并通过餐馆经营类比形象说明了集群工作原理。最后对比了不同模式的优缺点,为业务场景选择提供了参考依据,特别强调了写入负载和冗余需求

weixin_50055999的博客 1843

Redis哨兵机制原理详解

哨兵模式:(心跳检测机制) 前面说到主从模式其实是一种数据的备份方式,如果master宕机了,需要手动切换,并且还要切换客户端的连接数据源。这就无法达到高可用。哨兵模式就可以解决这一问题。 哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。 哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且哨兵会早主从模式的从节点..

张维鹏的博客 3万+

【Redis】哨兵模式 Sentinel

哨兵模式 Sentinel sentinel 简介 主从复制高可用存在的问题? 手动故障转移、2. 写能力和存储能力受限,其他节点只是主节点的副本 redis sentinel 分为几个节点,相当于redis的进程,不会存储数据,作用是完成redis的故障判断和故障转移,并且通知客户端的过程。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rTedTQeH-1618839534648)(D:\chencan\img\redis\redis sentinel.png)]

your_棒棒糖的博客 156

redis哨兵模式

哨兵模式

weixin_56904358的博客 505

Redis配置哨兵模式

配置Redis哨兵模式

weixin_47054648的博客 1426

redis7基础篇2 redis的哨兵模式2

当一个主从配置的master失效后,sentinel可以选举出一个新的master,用于自动接替原来master的工作,主从配置中的其他redis服务器自动指向新的master同步数据,一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。表示允许并行同步的slave个数,当master挂了后,哨兵会选出新的master,此时,剩余的slave会向新的mster发起同步数据。故障转移的超时时间,进行故障转移时,如果超过设置的毫秒,表示故障转移失败。

健康平安的活着的专栏 755

Redis哨兵模式的搭建

Redis哨兵模式是一种用于在Redis主从复制环境中进行高可用性监控和故障恢复的机制。该模式引入了一个或多个哨兵节点,这些节点负责监控Redis服务器的状态,并在主节点发生故障时切换为新的主节点。redis 哨兵模式启动成功后,会自动在sentinel .conf 最下方生成以下配置。启动所有服务器后,查看所有redis 节点状态。新版本redis自带哨兵,不需要单独安装。依次启动所有服务器上的redis 服务。在redis的安装目录下有个文件。修改所有服务器的hosts。,这就是哨兵的配置文件。

莫忘、初心 3699
上一篇: 为SQL Server快照snapshot DB建立login访问
下一篇: SQL书写规范(通用)
cuilingqiao0657
博客等级 码龄11年 4粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值