Redis-Sentinel哨兵

Redis Sentinel可以通过心跳检测的方式监视多个主服务器以及它们属下的所有从服务器,并在某个主服务器下线时自动对其实施故障转移。

1 启动Sentinel

一个Sentinel配置文件至少需要包含以下选项,用于指定Sentinel要监视的主服务器:

        sentinel monitor <master-name> <ip> <port> <quorum>

选项中的master-name参数用于指定主服务器的名字,这个名字在执行各种Sentinel操作的时候会经常用到;ip参数和port参数用于指定主服务器的IP地址和端口号;而quorum参数则用于指定判断这个主服务器下线所需的Sentinel数量。

Sentinel开始监视一个主服务器之后,就会去获取被监视主服务器的从服务器名单,并根据名单对各个从服务器实施监视,整个过程是完全自动的,所以用户只需要输入待监视主服务器的地址就可以了,并不需要输入从服务器的地址。除此之外,Sentinel还会对每个被监视的主从服务器实施心跳检测,并记录各个服务器的在线状态、响应速度等信息,当Sentinel发现被监视的主服务器进入下线状态时,它就会开始对下线的主服务器实施故障转移。

1.1 处理重新上线的旧主服务器

Sentinel可以同时监视多个主服务器;Sentinel在对下线的主服务器实施故障转移之后,仍然会继续对它进行心跳检测,当这个服务器重新上线的时候,Sentinel将把它转换为当前主服务器的从服务器。

1.2 设置从服务器优先级

用户可以通过replica-priority配置选项来设置各个从服务器的优先级,优先级较高的从服务器在Sentinel选择新主服务器的时候会优先被选择。replica-priority的默认值为100,这个值越小,从服务器的优先级就越高。举个例子,如果现在有3个从服务器,它们的优先级分别为100、50和10,那么Sentinel将优先选用优先级为10的从服务器作为新的主服务器。replica-priority值为0的从服务器永远不会被选为主服务器,用户可以通过这一设置将不适合用作主服务器的从服务器排除在新主服务器的候选名单之外。

1.3 新主服务器的挑选规则

当Sentinel需要在多个从服务器中选择一个作为新的主服务器时,首先会根据以下规则从候选名单中剔除不符合条件的从服务器:1)否决所有已经下线以及长时间没有回复心跳检测的疑似已下线从服务器。2)否决所有长时间没有与主服务器通信,数据状态过时的从服务器。3)否决所有优先级为0的从服务器。

然后根据以下规则,在剩余的候选从服务器中选出新的主服务器:1)优先级最高的从服务器获胜。2)如果优先级最高的从服务器有两个或以上,那么复制偏移量最大的那个从服务器获胜。3)如果符合上述两个条件的从服务器有两个或以上,那么选出它们当中运行ID(运行ID是服务器启动时自动生成的随机ID,这条规则可以确保条件完全相同的多个从服务器最终得到一个有序的比较结果)最小的那一个。

2 Sentinel网络

只使用单个Sentinel监视主服务器和它属下的从服务器,容易造成单点故障。为了避免单点故障,可以使用多个Sentinel组建一个分布式Sentinel网络。对主服务器的状态进行投票,决定是否进行故障转移,因此至少需要使用3个Sentinel才能构建一个可信的Sentinel网络。

2.1 组建Sentinel网络

需要启动多个Sentinel,并使用sentinel monitor配置选项指定Sentinel要监视的主服务器,那些监视相同主服务器的Sentinel就会自动发现对方,并组成相应的Sentinel网络。

将Sentinel和被监视的Redis服务器放到不同的机器上运行,并且各个Sentinel也应该放到不同的机器上运行,这样Sentinel网络才能够更准确、有效地判断出服务器的实际状态。

3 Sentinel管理命令

3.1 SENTINEL masters:获取所有被监视主服务器的信息

向Sentinel发送以下命令

        SENTINEL masters

3.2 SENTINEL master:获取指定被监视主服务器的信息

        SENTINEL master <master-name>

3.3 SENTINEL slaves:获取被监视主服务器的从服务器信息

SENTINEL slaves <master-name>

3.4 SENTINEL sentinels:获取其他Sentinel的相关信息

        SENTINEL sentinels <master-name>

3.5 SENTINEL get-master-addr-by-name:获取给定主服务器的IP地址和端口号

        SENTINEL get-master-addr-by-name <master-name>

3.6 SENTINEL reset:重置主服务器状态

        SENTINEL reset <pattern>//重置名称为website_db的主服务器SENTINEL reset website_db//重置名称为website_为前缀的主服务器SENTINEL reset website_*

SENTINEL reset命令可以让Sentinel忘掉主服务器之前的记录,并重新开始对主服务器进行监视,所以它通常只会在Sentinel网络或者被监视主从服务器的结构出现重大变化时使用。

3.7 SENTINEL failover:强制执行故障转移

        SENTINEL failover <master-name>

3.8 SENTINEL ckquorum:检查可用Sentinel的数量

检查Sentinel网络当前可用的Sentinel数量是否达到了判断主服务器客观下线并实施故障转移所需的数量:

        SENTINEL ckquorum <master-name>

SENTINEL ckquorum命令一般用于检查Sentinel网络的部署是否成功。

3.9 SENTINEL flushconfig:强制写入配置文件

通过向Sentinel发送以下命令,让Sentinel将它的配置文件重新写入硬盘中:

        SENTINEL flushconfig

Sentinel在被监视服务器的状态发生变化时就会自动重写配置文件,所以这个命令的作用就是在配置文件基于某些原因或错误而丢失时,立即生成一个新的配置文件。此外,当Sentinel的配置选项发生变化时,Sentinel内部也会使用这个命令创建新的配置文件来替换原有的配置文件。

4 在线配置Sentinel

4.1 SENTINEL monitor:监视给定主服务器

通过执行以下命令,用户可以让Sentinel开始监视一个新的主服务器:

        SENTINEL monitor <master-name> <ip> <port> <quorum>

4.2 SENTINEL remove:取消对给定主服务器的监视

当用户想要在线取消Sentinel对某个主服务器的监视时,可以使用以下命令:

        SENTINEL remove <masters-name>

4.3 SENTINEL set:修改Sentinel配置选项的值

通过使用以下命令,用户可以在线修改Sentinel配置文件中与主服务器相关的配置选项值:

        SENTINEL set <master-name> <option> <value>//修改投票个数SENTINEL set website_db quorum 3

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch深度学习框架:综合入门与应用指南

引言&#xff1a;掌握PyTorch版本信息的必要性 在深度学习的广阔天地中&#xff0c;PyTorch以其卓越的灵活性和易用性&#xff0c;成为了研究人员和开发者的首选框架。了解正在使用的PyTorch版本对于保证代码的兼容性和项目的顺利进行至关重要。尤其是在多人合作和多环境切换的…

MC0206 小码哥的英语

小码哥在做英语单选题的时候突然想到了一个很有意思的问题&#xff1a;单选题的答案都是A或者B&#xff0c;那么很多道题目的答案组成的就是一个A和B组成的字符串。如果两个相邻的题目的答案是相同的&#xff0c;小码哥就可以修改这两个题目的答案&#xff0c;改成都是A、都是B…

前端流式(stream)请求,获取持续响应的方式

在网络请求中,流(stream)表示持续接收数据的过程。使用流,可以逐步获取服务器响应,而不是等待整个响应完成后一次性获取。 Axios 通过监听响应对象的 data 事件,可以实现流式请求,主要的写法有直接 pipe 流和手动监听事件两种。使用流可以实现大文件或数据的流传输,有效…

深度解读:如何解决Image-to-Video模型视频生成模糊的问题?

Diffusion Models视频生成-博客汇总 前言&#xff1a;目前Image-to-Video的视频生成模型&#xff0c;图片一般会经过VAE Encoder和Image precessor&#xff0c;导致图片中的信息会受到较大损失&#xff0c;生成的视频在细节信息上与输入的图片有较大的出入。这篇博客结合最新的…

怎么在电脑上记录每日事项,并在桌面上显示便签记事本?

作为一名教师兼班主任&#xff0c;我每天的工作繁忙且多样。从早晨的课程准备&#xff0c;到课间的学生辅导&#xff0c;再到课后的作业批改和家长沟通&#xff0c;每一项工作都需要我细心且有条理地完成。在这样的工作节奏下&#xff0c;如何高效管理每日事项&#xff0c;确保…

python for循环打印字符串、指定区间范围数字以及打印区间数字内的奇数和偶数

1.一串字符&#xff0c;循环打印&#xff1a; 源码&#xff1a; strings"Python" n0 print("字符长度为&#xff1a;"str(len(strings))) for a in strings: nn1 print ("第"str(n)"位是&#xff1a;"a)打印结果&#xff1a…

C# delegate的使用

C# 中的delegate&#xff08;委托&#xff09;是一种类型安全的函数指针&#xff0c;它安全地封装了方法的签名和引用。 可以将delegate视为一种可引用的方法类型&#xff0c;类似于C或C中的函数指针&#xff0c;但比函数指针更安全、更类型安全。 delegate主要用于事件处理、…

幸福感掉线了?那就去借点“光”吧

做什么事都提不起兴趣&#xff0c;总觉得自己不是很开心但是又难以描述哪里不对劲&#xff0c;遇到想不通的事情总会控制不住地持续内耗自己&#xff1f;当生活不断给你下达负能量挑战时&#xff0c;你是否准备好反击了呢&#xff1f; 这里有一个“借光”故事或许可能帮得上你…

【PyTorch】成功解决TypeError: iteration over a 0-d tensor

【PyTorch】成功解决TypeError: iteration over a 0-d tensor &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您…

【Java IO流】缓冲流和对象流的解析和应用实例

目录 前言 一、缓冲流 四种方式拷贝文件的用时对比 二、对象流 1. 使用对象流写入对象到本地文件 2. 使用对象流读取对象数据 总结 前言 【File文件管理及IO流&#xff08;基本流&#xff09;】http://t.csdnimg.cn/uG5Ff 该篇博客中&#xff0c;介绍了学习高级流需要的…

C++ 函数的默认形参和函数重载

C 函数的默认形参和函数重载 函数的默认形参 在C中&#xff0c;函数的默认形参&#xff08;Default Arguments&#xff09;允许在函数声明或定义时为一个或多个参数指定默认值。这意味着在调用函数时&#xff0c;如果某个参数没有提供值&#xff0c;则自动使用其默认值。这个…

字节跳动后端工程师实习生笔试题-c++

字节跳动后端工程师实习生笔试题链接 笔试题 1. 最大映射2. 木棒拼图3. 魔法权值4. 或与加 1. 最大映射 有 n 个字符串&#xff0c;每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字&#xff0c;不同字符映射为不同的数字。这样每个字符串就可以看…

金航标和萨科微总经理宋仕强说,中国还有一个优势就是有全世界最大的半导体消费市场

金航标和萨科微总经理宋仕强说&#xff0c;中国还有一个优势就是有全世界最大的半导体消费市场&#xff0c;有超过1万亿人民币的规模&#xff0c;全球占比34%&#xff0c;领先美国&#xff08;27%&#xff09;&#xff0c;更大幅领先欧洲和日韩&#xff0c;金航标电子是在的中国…

Vue3 watch侦听器

一 侦听响应式ref 侦听响应式ref常量&#xff0c;当常量的ref的value值发生改变时会触发watch 一个小栗子&#xff1a;当输入框的输入内容变化时下方的文本也会跟着改变 <template><div class"box content"><div class"intro"><el…

【C语言】字符分类函数与字符转换函数

1. 字符分类函数 C语言中有⼀系列的函数是专门做字符分类的&#xff0c;也就是⼀个字符是属于什么类型的字符的。 这些函数的使用都需要包含⼀个头文件是 ctype.h 这些函数的使用方法非常类似&#xff0c;我们就讲解⼀个函数的事情&#xff1a; int islower ( int c ); islow…

Linux 15个常用脚本练习(初级)

&#xff08;1&#xff09;用户猜数字 #!/bin/bash # 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了, # 猜小了或猜大了,直至用户猜对脚本结束。 # RANDOM 为系统自带的系统变量,值为 0‐32767的随机数 # 使用取余算法将随机数变为 1‐100 的…

js中函数参数的归一化处理

在 JavaScript 中&#xff0c;函数参数的归一化处理是一种将不同类型或格式的参数转换为统一的标准或格式的过程。这样做的目的是为了提高代码的灵活性、可维护性和可重用性。 以下是一些常见的函数参数归一化处理的方式&#xff1a; 数据类型转换&#xff1a;将不同类型的参数…

软考高级,高项和架构哪个更容易?

软考高级共有5个科目&#xff0c;考试难度都是偏大的。相对而言&#xff0c;信息系统项目管理师的考试难度小于系统架构设计师&#xff0c;不过目前高项是1年1考&#xff0c;架构是1年2考&#xff0c;从这个层面来说&#xff0c;通过架构考试的机会要多一些。 架构&高项考…

RabbitMq——direct交换器和fanout交换器 扇形交换器

direct交换器&#xff1a; Configuration 发送 Bean protected Queue queue&#xff08;&#xff09;{ Queue queue new Queue&#xff08;“myQueue”&#xff09; return queue&#xff1b; } amqpTemplate.convertAndSend("myQueue","这是发送的内…

pytorch_fid计算fid

pip install pytorch-fid from pytorch_fid import fid_score# 准备真实数据分布和生成模型的图像数据 real_images_folder xxx generated_images_folder xxx# 计算FID距离值 fid_value fid_score.calculate_fid_given_paths([real_images_folder, generated_images_folder]…