Redis的哨兵(高可用)

news2024/9/20 8:01:15

实验环境:用一主两从来实现Redis的高可用架构。

一、Redis哨兵

Sentinel 进程是用于监控redis集群中Master主服务器工作的状态,在Master主服务器发生故障的时候, 可以实现Master和Slave服务器的切换,保证系统的高可用,此功能在redis2.6+的版本已引用,Redis的 哨兵模式到了2.8版本之后就稳定了下来。一般在生产环境也建议使用Redis的2.8版本的以后版本。

每个哨兵(Sentinel)进程会向其它哨兵(Sentinel)、Master、Slave定时发送消息,以确认对方是否”活” 着,如果发现对方在指定配置时间(此项可配置)内未得到回应,则暂时认为对方已离线,也就是所谓的” 主观认为宕机” (主观:是每个成员都具有的独自的而且可能相同也可能不同的意识),英文名称: Subjective Down,简称SDOWN。

有主观宕机,对应的有客观宕机。当“哨兵群”中的多数Sentinel进程在对Master主服务器做出SDOWN 的 判断,并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的Master Server下线判 断,这种方式就是“客观宕机”(客观:是不依赖于某种意识而已经实际存在的一切事物),英文名称是: Objectively Down, 简称 ODOWN。

通过一定的vote算法,从剩下的slave从服务器节点中,选一台提升为Master服务器节点,然后自动修改 相关配置,并开启故障转移(failover)。

Sentinel 机制可以解决master和slave角色的自动切换问题,但单个 Master 的性能瓶颈问题无法解决,类 似于MySQL中的MHA功能。

Redis Sentinel中的Sentinel节点个数应该为大于等于3且最好为奇数。

sentinel中的三个定时任务:

  • 每10秒每个sentinel对master和slave执行info
    • 发现slave节点
    • 确认主从关系
  • 每2秒每个sentinel通过master节点的channel交换信息(pub/sub)
    • 通过sentinel__:hello频道交互
    • 交互对节点的“看法”和自身信息
  • 每1秒每个sentinel对其他sentinel和redis执行pi

 二、哨兵的实验过程

在所有阶段中关闭 protected-mode no

1、在master节点中

#编辑配置文件

[root@redis-node1 ~]# cd redis-7.4.0/

[root@redis-node1 redis-7.4.0]# cp sentinel.conf /etc/redis/

[root@redis-node1 redis-7.4.0]# vim /etc/redis/sentinel.conf

protected-mode no #关闭保护模式

port 26379 #监听端口

daemonize no #进入不打如后台

pidfile /var/run/redis-sentinel.pid #sentinel进程pid文件

loglevel notice #日志级别

sentinel monitor mymaster 172.25.254.10 6379 2 #创建sentinel监控监控master主机,2表示必须得到2票

sentinel down-after-milliseconds mymaster 10000 #master中断时长,10秒连不上视为master下线

sentinel parallel-syncs mymaster 1 #发生故障转移后,同时开始同步新master数据的slave数量

sentinel failover-timeout mymaster 180000 #整个故障切换的超时时间为3分钟

####复制配置文件到其他阶段

[root@redis-node1 redis-7.4.0]# scp /etc/redis/sentinel.conf root@172.25.254.20:/etc/redis/

[root@redis-node1 redis-7.4.0]# scp /etc/redis/sentinel.conf root@172.25.254.30:/etc/redis/

 2、启动服务

[root@redis-node1 redis-7.4.0]# redis-sentinel /etc/redis/sentinel.conf

3、测试

把node1停掉之后,会重新选举一个master,然后node1变为slave,在这里我们可以看到node1停了之后,node2变成了master:

切换到node2查看:

等待一会再查看,slave也添加上来啦:

三、在整个架构中可能会出现的问题

问题:

在生产环境中如果master和slave中的网络出现故障,由于哨兵的存在会把master提出去;当网络恢复后,master发现环境发生改变,master就会把自己的身份转换成slave;master变成slave后会把网络故障那段时间写入自己中的数据清掉,这样数据就丢失了。

解决:

master在被写入数据时会持续连接slave,mater确保有2个slave可以写入我才允许写入;如果slave数量少于2个便拒绝写入。

#在matster中设定

[root@redis-node2 ~]# redis-cli

127.0.0.1:6379> CONFIG GET min-slaves-to-write

1) "min-slaves-to-write"

2) "0"

127.0.0.1:6379> CONFIG set min-slaves-to-write 2

OK

127.0.0.1:6379> CONFIG GET min-slaves-to-write

1) "min-slaves-to-write"

2) "2"

#如果要永久保存写到配置文件中/etc/redis/6379.conf

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

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

相关文章

java一键生成数据库说明文档html格式

要验收项目了,要写数据库文档,一大堆表太费劲了,直接生成一个吧,本来想用个别人的轮子,网上看了几个,感觉效果不怎么好,自己动手写一个吧。抽空再把字典表补充进去就OK了 先看效果: …

找不到msvcp140.dll无法继续执行代码的基本解决策略,快速修复msvcp140.dll错误文件

在我们日常使用电脑的过程中,偶尔会遇到一些令人头疼的技术问题。其中,"找不到 msvcp140.dll 无法继续执行代码" 的错误提示便是许多 Windows 用户常见的难题之一。这条错误消息通常在尝试启动某些程序时出现,指出系统缺少一个关键…

SAP HR 逻辑数据库PNP简单说明

逻辑数据库是专门在逻辑数据库生成器中编辑的开发对象,其核心价值在于为其他ABAP程序提供来自分层树结构节点的数据访问能力。尽管在SAP的最新帮助文档中,逻辑数据库被标记为已过时的,但是在HR模块中仍然被广泛使用,提供读取和处理…

基于Echarts的大屏可视化

效果图 基于vue3echartsTailwind CSS技术实现 实现思路 新建一个新项目 找任一目录进行 pnpm create vitelatest选择vue和js开始项目 导入tailwindcss https://tailwindcss.com/ 选择vue按照里面的步骤一步一步完成即可 将事先准备好的资料导入到assets包中即可 写入项…

Android setText不生效问题(文字不显示)

1.直接说解决方案: 在代码没问题的情况下,将你的TextView的Id改一下,然后再重启编译器即可(注意,不修改TextView的ID,单独重启是没有作用的!) 2.出现问题的过程: 新增的一个页面与之前做好的界…

“workon不是内部命令“/virtualenvwrapper-win安装配置

如果出现“workon不是内部命令”,先卸载 pip uninstall virtualenvwrapper-win -y 一,指定所有虚拟环境存放路径: # “E:/Python_Envs_List”换成自己想要的路径 setx WORKON_HOME "E:/Python_Envs_List"二,增加pytho…

【轻松掌握】Jenkins入门指南:构建高效的CI/CD Pipeline

文章目录 前言安装部署安装JDK安装Jenkins下载Jenkins运行Jenkins访问页面填写管理员密码安装推荐的插件 Maven安装下载上传到Linux解压配置镜像运行查看Maven使用的JDK版本 Jenkins安装Maven插件 创建Demo项目创建Jenkins任务填写代码仓库地址Linux安装GIT解决报错配置Maven版…

一文吃透SpringMVC

一、SpringMVC简介 1、什么是MVC MVC是一种软件架构模式(是一种软件架构设计思想,不止Java开发中用到,其它语言也需要用到),它将应用分为三块: M:Model(模型)&#xf…

Phone X│“齐刘海”里到底搭载了哪些传感器?

揭开 “齐刘海”面纱 随着iPhone X的发布,3D人脸识别功能一度成为人们口中津津乐道的新科技,下面就让SITRI的专业团队带领大家揭开人脸识别的神秘面纱。 先从苹果iPhone X说起,让我们看一看这个可爱的“齐刘海”里到底搭载了哪些传感器&am…

杀软对抗 ----> 简简单单免杀某60

在开始之前还是宇宙免责 本Blog讨论的技术问题仅限于学习用,严禁用于非授权情况下执行攻击活动,如未授权攻击所造成一切后果由攻击者独自承担,所展示的代码仅用于杀软对抗学习,测试环境并非真实环境,并无对任何杀软有任…

我的sql我做主!Mysql 的集群架构详解之组从复制、半同步模式、MGR、Mysql路由和MHA管理集群组

目录 Mysql 集群技术一、Mysql 在服务器中的部署方法1.1 在Linux下部署mysql1.1.1 安装依赖性:1.1.2 下载并解压源码包1.1.3 源码编译安装mysql1.1.4 部署mysql 二、Mysql的组从复制2.1 配置mastesr2.2 配置salve2.3 当有数据时添加slave22.4 延迟复制2.5 慢查询日志…

医疗器械法规标准相关资料

文章目录 前言如何查找法规文件与标准1. 法规清单2. 医疗器械法规文件汇编常用链接常见网站微信公众号前言 在前文 医疗器械软件相关法律法规与标准 中介绍了在软件设计过程常见的法规与标准,并给出部分标准如何查找和下载的方法,但是上文中列举的部分不全面,真实在产品设计…

springboot公众号模板消息推送

文章目录 参考1、微信公众平台测试号管理1.1 访问微信公众平台测试账号页面1.2 获取appID和appsecret1.3 扫码二维码添加测试号1.4 添加模版消息 2、集成微信SDK2.1 引入微信工具包2.2 添加配置文件 3、API调用3.1 发送消息模版的实现3.2 测试类调用3.3 效果展示 4、回调配置回…

通过IMB看高效裁员

高效裁员是企业在面临经营压力或战略调整时不得不采取的措施之一。为了确保裁员过程既高效又尽量减少负面影响,可以遵循以下步骤和策略: 一、明确裁员目标和计划 分析需求:首先,企业需要明确裁员的原因,比如经营困难、业务重组、技术升级等,并基于这些原因确定裁员的范…

Centos系统二进制安装mysql5.7.44、添加环境变量、复制启动脚本、初始化数据库、设置用户密码

MySQL :: Download MySQL Community Server (Archived Versions) https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 删除默认存在的mariadb-libs rpm -e mariadb-libs --nodeps 安装mysql cd /usr/local/src/ && …

Redis中的 大/热 key问题 ,如何解决(面试版)

big key 什么是 big key? big key:就是指一个内存空间占用比较大的键(Key) 造成的问题: 内存分布不均。在集群模式下,不同 slot分配到不同实例中,如果大 key 都映射到一个实例,则分布不均,查询效率也…

拿下英语翻译!这四款在线翻译功不可没!

作为一个刚踏入职场的小白,我最近在为工作中的英语翻译问题头疼不已。不过,经过一番尝试和比较,我找到了几款翻译工具,它们在帮我解决翻译难题上表现得相当不错。今天,就让我以一个职场新手的身份,来跟大家…

OpenCV几何图像变换(6)计算反转仿射变换函数invertAffineTransform()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 反转一个仿射变换。 该函数计算由 23 矩阵 M 表示的逆仿射变换: [ a 11 a 12 b 1 a 21 a 22 b 2 ] \begin{bmatrix} a_{11} & a…

【超音速 专利 CN202110438812.4】广州超音速自动化科技股份有限公司

申请号CN202110438812.4公开号(公开)CN113390879A申请日2021.09.14申请人(公开)广州超音速自动化科技股份有限公司(833753)发明人(公开)张俊峰(总); 罗国和; 陈夏 原文摘要 本发明公开了一种涂…

【上】王树森《搜索引擎技术》- 课程笔记(概要、相关性)

课程合集:ShusenWang的个人空间-ShusenWang个人主页-哔哩哔哩视频 (bilibili.com) 课件地址:GitHub - wangshusen/SearchEngine: 搜索引擎原理 目录 概要 1、搜索引擎的基本概念 曝光和点击 垂搜vs通搜 课程安排 2、决定搜索满意度的因素&#…