最新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有问题,才可以进行下一步操作,这就保证了公平性和高可用。

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

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

相关文章

AppWeb认证绕过漏洞(CVE-2018-8715)

一、环境搭建 二、影响版本 三、构造payload Authorization: Digest usernameadmin 四、抓包获取sesion 五、修改数据包、认证头 记得设置用户名 六、漏洞存在特征&#xff08;Gigest&#xff09;

基于AM62x的ARM+FPGA+Codesys低成本软PLC解决方案

GPMC并口简介 GPMC(General Purpose Memory Controller)是TI处理器特有的通用存储器控制器接口&#xff0c;支持8/16bit数据位宽&#xff0c;支持128MB访问空间&#xff0c;最高时钟速率133MHz。GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等处理器专用于与外部存储器设备的接口…

2023年新一代开发者工具 Vue ,正式开源!

以下文章来源于前端充电宝 &#xff0c;作者CUGGZ 近日&#xff0c;Vue 新一代开发者工具&#xff08;DevTools&#xff09;正式开源&#xff01;Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具&#xff0c;它提供了一些功能来帮助开发者更好地了解 Vue 应用。下面就来看…

小程序入门-登录+首页

正常新建一个登录页面 创建首页和TatBar&#xff0c;实现登录后底部出现两个按钮 代码 "pages": ["pages/login/index","pages/index/index","pages/logs/logs" ],"tabBar": {"list": [{"pagePath"…

Hexo 部署 Github Pages, Github Actions自动部署

想整个静态的博客部署在github pages 历经两天的折磨终于是摸索成功了&#xff0c;官网的文档太简陋了&#xff0c;很多东西没说清楚。 欢迎大家访问我的博客&#xff01; CanyueThis is Canyues blog.https://mobeicanyue.github.io/ 最终实现的效果&#xff0c;一个项目仓库…

51单片机之LED灯

51单片机之LED灯 &#x1f334;前言&#xff1a;&#x1f3ee;点亮LED灯的原理&#x1f498;点亮你的第一个LED灯&#x1f498;点亮你的八个LED灯 &#x1f4cc;让LED灯闪烁的原理&#x1f3bd; LED灯的闪烁&#x1f3d3;错误示范1&#x1f3d3;正确的LED闪烁代码应该是这样&am…

PythonTSK Study for first day (paper read)

HTSK model Study AbstractIntroductionII TSK for high-dimentional datasetIII ResultsA DatesetB AlgorithmC性能评估 Abstract The TSK Fuzzy System with Gaussian membership functions can not address high dimentional datasets, if add softmax function to solve i…

day14--JDK8~17新特性(下):

第18章_JDK8-17新特性&#xff08;下&#xff09; 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 6. 新语法结构 新的语法结构&#xff0c;为我们勾勒出了 Java 语法进化的一个趋势&#xff0c…

CSP CCF 202305-1 重复局面 C++满分题解

#include<iostream> using namespace std;int judge(char arr[][64],int m) {int a1;for(int i0;i<m;i){int flag0;for(int j0;j<64;j){if(arr[i][j]!arr[m][j]){flag1;break;}}if(flag0)a;}return a; }int main() {int n;cin>>n;char arr[n][64]; //直接看…

SpringMVC源码解析——DispatcherServlet初始化

在Spring中&#xff0c;ContextLoaderListener只是辅助功能&#xff0c;用于创建WebApplicationContext类型的实例&#xff0c;而真正的逻辑实现其实是在DispatcherServlet中进行的&#xff0c;DispatcherServlet是实现Servlet接口的实现类。Servlet是一个JAVA编写的程序&#…

Nacos 基础篇:Nacos简介、基本概念、基本架构、Standalone单机搭建部署

文章目录 什么是Nacos基本架构逻辑架构及其组件介绍领域模型数据模型服务领域模型配置领域模型 下载目录结构配置启动 什么是Nacos Nacos&#xff1a;(Dynamic) Naming and Configuration Service&#xff0c;动态的服务发现和配置的服务&#xff0c;是一个更易于构建云原生应…

<PDF-Pics> support

If get any questions,email me caohechunhotmail.com

力扣LeetCode第26题 删除有序数组中的重复项

一、题目 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1&#xff1…

[Angular] 笔记 24:ngContainer vs. ngTemplate vs. ngContent

请说明 Angular 中 ngContainer&#xff0c; ngTemplate 和 ngContent 这三者之间的区别。 chatgpt 回答&#xff1a; 这三个在 Angular 中的概念是关于处理和组织视图的。 1. ngContainer&#xff1a; ngContainer 是一个虚拟的 HTML 容器&#xff0c;它本身不会在最终渲染…

WPF+Halcon 培训项目实战(12):WPF导出匹配模板

文章目录 前言相关链接项目专栏运行环境匹配图片WPF导出匹配模板如何了解Halcon和C#代码的对应关系逻辑分析&#xff1a;添加截取ROI功能基类矩形圆形 生成导出模板运行结果&#xff1a;可能的报错你的文件路径不存在你选择的区域的内容有效信息过少 前言 为了更好地去学习WPF…

DFS BFS

用DFS和BFS分别实现 //这边给出DFS的模版 void dfs(int x,int y) {//判断是否到达终点&#xff08;只有给出结束点的时候需要&#xff09; if (x ex && y ey) {if (min_steps > step) {min_steps step;}return;}//给出移动方向int move[4][2] {{0, 1}, {0, -1}…

php学习06-魔术常量

有九个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 LINE 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写&#xff0c;如下&#xff1a; 参考

[Angular] 笔记 20:NgContent

chatgpt: 在Angular中&#xff0c;NgContent是用于内容投影&#xff08;Content Projection&#xff09;的一个重要概念。它允许你在一个组件中插入内容&#xff0c;并将这些内容投影到另一个组件中。 当你在一个组件中使用<ng-content></ng-content>标签时&…

基于轻量级GhostNet模型开发构建生活场景下生活垃圾图像识别系统

轻量级识别模型在我们前面的博文中已经有过很多实践了&#xff0c;感兴趣的话可以自行移步阅读&#xff1a; 《移动端轻量级模型开发谁更胜一筹&#xff0c;efficientnet、mobilenetv2、mobilenetv3、ghostnet、mnasnet、shufflenetv2驾驶危险行为识别模型对比开发测试》 《基…

【用户增长】引言:浅析游戏运营用户增长概念

1 游戏发行运营中的主要职能&#xff1a; ​ 一、发行运营通识l 运营介绍&#xff1a;职能分工、发行运营流程、职业发展能力及要求l 品类认知&#xff1a;行业品类布局、品类用户画像、运营节奏及特性&#xff0c;包含不同品类核心打法及长线运营思路l 海外运营&#xff1a;海…