最新Redis7哨兵模式(保姆级教学)

2023-12-31 14:04

本文主要是介绍最新Redis7哨兵模式(保姆级教学),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一定一定要把云服务器的防火墙打开一定要!!!!!!!!!否则不成功!!!!!!!!!

哨兵是什么

相当于吹哨人,吹哨人巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个库,转换为新主库,继续对外服务

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      

哨兵的作用

  • 主从监控:监控主从redis库是否正常运行
  • 消息通知:哨兵可以将故障转移的结果发送给客户端
  • 故障转移:如果Master异常,则会进行主从切换,将其中一个Slave作为新的Master
  • 配置中心:客户端通过连接哨兵来获得当前Redis服务的主节点地址

案例演示

前期准备

三个哨兵:自动监控和维护集群,不存放数据,只是吹哨人

一主二从:用于数据读取和存放

由于个人经费有限,只有三台云服务器演示,这里我就将三台哨兵配置到6379这个服务器上

案例步骤

1、/myredis目录下新建或者拷贝sentinel.conf文件

2、配置文件修改

首先我们拷贝三份不同端口的代码:

我们进入每个代码使用vim filename

将内容删除复制以下内容:

bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
logfile "/myredis/sentinel26379.log"
pidfile /var/run/redis-sentinel26379.pid
dir /myredis
sentinel monitor 主机名 62.234.60.208 6379 2
sentinel auth-pass 主机名 密码

解释一下最后两个配置文件作用:

sentinel monitor <master-name><redis-port> <quorum> 设置要监控的master服务器,quorum表示最少有几个哨兵认可客观下线同意故障迁移的法定票数

master设置了密码,连接master服务的密码

 先启动一主二从三个redis实例,则是正常的主从复制

这里我们不能忘记之前主机的配置,6379后续可能会变成从机,需要设置访问新主机的密码, 请设置masterauth项访问密码你其他机器所设置密码

master主机配置文件汇总

哨兵 启动

先启动三个哨兵,完成监控 redis-sentinel sentinel26379.conf --sentine

启动三个哨兵之哦胡在测试一侧主从复制

原有的master挂了

我们这里手动关闭6379服务器,模拟master挂了

此时我们可以等待一下,哨兵投票

此时我们可以看出,当主机down之后从机6381上位

我们看一下sentinel26379.log的日志

这是一段Redis Sentinel的日志,它记录了Redis服务器和Sentinel的一些状态变化。以下是一些关键事件的解释:

  1. sdown(主观下线):Sentinel认为某个服务器无法访问,可能是网络问题或者服务器崩溃。
  2. Redis is starting:Redis服务器正在启动。
  3. Warning: Could not create server TCP listening socket 0.0.0.0:26379: bind: Address already in use:Redis Sentinel试图在端口26379上启动,但是这个端口已经被其他进程使用了。
  4. +new-epoch:Sentinel开始了新的纪元,这通常意味着主服务器失效,Sentinel正在选举新的主服务器。
  5. +vote-for-leader:Sentinel投票选举新的领导者。
  6. +switch-master:Sentinel已经将主服务器从一个服务器切换到另一个服务器。
  7. +slave:Sentinel识别到一个新的从服务器。

以下是这段Redis Sentinel日志中每一行的解释:

  1. 4346:X 30 Dec 2023 20:25:14.957 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo:Redis服务器(PID为4346)正在启动。

  2. 4346:X 30 Dec 2023 20:25:14.957 # Redis version=7.0.14, bits=64, commit=00000000, modified=0, pid=4346, just started:显示Redis服务器的版本信息,位数,提交哈希,修改状态,进程ID和启动状态。

  3. 4346:X 30 Dec 2023 20:25:14.957 # Configuration loaded:Redis服务器已成功加载配置文件。

  4. 4346:X 30 Dec 2023 20:25:14.958 * monotonic clock: POSIX clock_gettime:Redis服务器正在使用POSIX的clock_gettime函数作为其单调时钟源。

  5. 4346:X 30 Dec 2023 20:25:14.958 # Warning: Could not create server TCP listening socket 0.0.0.0:26379: bind: Address already in use:Redis服务器试图在端口26379上创建一个TCP监听套接字,但是这个端口已经被其他进程使用了。

  6. 4346:X 30 Dec 2023 20:25:14.958 # Failed listening on port 26379 (TCP), aborting.:由于无法在端口26379上监听,Redis服务器正在终止。

  7. 26979:X 30 Dec 2023 20:25:58.361 # +sdown master mymaster 62.234.60.208 6379:Sentinel进程(PID为26979)报告主服务器(别名为mymaster,IP地址为62.234.60.208,端口号为6379)已经主观下线。

  8. 26979:X 30 Dec 2023 20:25:58.487 * Sentinel new configuration saved on disk:Sentinel进程已经将新的配置保存到磁盘上。

  9. 26979:X 30 Dec 2023 20:25:58.487 # +new-epoch 893:Sentinel进程已经开始了新的纪元(Epoch),编号为893。

  10. 26979:X 30 Dec 2023 20:25:58.493 * Sentinel new configuration saved on disk:Sentinel进程已经将新的配置保存到磁盘上。

  11. 26979:X 30 Dec 2023 20:25:58.494 # +vote-for-leader a380684d19db383c3e7110c9aee4af069db632d2 893:Sentinel进程正在为领导者(ID为a380684d19db383c3e7110c9aee4af069db632d2)投票,纪元编号为893。

  12. 26979:X 30 Dec 2023 20:25:59.395 # +config-update-from sentinel a380684d19db383c3e7110c9aee4af069db632d2 62.234.60.208 26381 @ mymaster 62.234.60.208 6379:Sentinel进程已经从另一个Sentinel(ID为a380684d19db383c3e7110c9aee4af069db632d2,IP地址为62.234.60.208,端口号为26381)那里更新了配置。

  13. 26979:X 30 Dec 2023 20:25:59.395 # +switch-master mymaster 62.234.60.208 6379 121.43.60.247 6381:Sentinel进程已经将主服务器从62.234.60.208:6379切换到了121.43.60.247:6381。

  14. 26979:X 30 Dec 2023 20:25:59.395 * +slave slave 118.31.6.132:6380 118.31.6.132 6380 @ mymaster 121.43.60.247 6381:Sentinel进程识别到一个新的从服务器(IP地址为118.31.6.132,端口号为6380)。

  15. 26979:X 30 Dec 2023 20:25:59.395 * +slave slave 62.234.60.208:6379 62.234.60.208 6379 @ mymaster 121.43.60.247 6381:Sentinel进程识别到一个新的从服务器(IP地址为62.234.60.208,端口号为6379)。

  16. 26979:X 30 Dec 2023 20:25:59.400 * Sentinel new configuration saved on disk:Sentinel进程已经将新的配置保存到磁盘上。

哨兵运行流程和选举原理

当一个主从配置中的master失效之后,sentinel可以选举出的一个新的master,用于自动接替原master的工作,主从配置中的其他redis服务器自动只想新的masterr同步数据,一般建议sentinel采取奇数台,防止某一台sentinel物权法链接到master导致误切换

运行流程

三个哨兵监控一主二从运行中->主管下线->客观下线->选出领导者哨兵->由领导者哨兵确定新master

主观下线

SDown(主观下线)单个Sentinel实例对服务器做出的下线判断,即单个sentinel认为某个服务下线(有可能是接收不到订阅,之间的网络不通等等原因)。主观下线就是说如果服务器在[sentinel down-after-milliseconds]给定的毫秒数之内没有回应PING命令或者返回一个错误消息, 那么这个Sentinel会主观的(单方面的)认为这个master不可以用了

sentinel down-after-milliseconds <masterName> <timeout>

 表示master被当前sentinel实例认定为失效的间隔时间,这个配置其实就是进行主观下线的一个依据

master在多长时间内一直没有给Sentine返回有效信息,则认定该master主观下线。也就是说如果多久没联系上redis-servevr,认为这个redis-server进入到失效(SDOWN)状态。

客观下线

ODown(客观下线):ODown需要一定数量的sentinel,多个哨兵达成一致意见才能认为一个master客观上已经down掉

quorum这个参数是进行客观下线的一个依据,法定人数/法定票数

意思是至少有quorum个sentinel认为这个master有故障才会对这个master进行下线以及故障转移。因为有的时候,某个sentinel节点可能因为自身网络原因导致无法连接master,而此时master并没有出现故障,所以这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。

这篇关于最新Redis7哨兵模式(保姆级教学)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/556253

相关文章

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者