【Redis】Redis哨兵模式

news2025/1/18 5:13:55

【Redis】Redis哨兵模式

Redis主从模式当主服务器宕机后,需要手动把一台从服务器切换为主服务器,需要人工干预费事费力,为了解决这个问题出现了哨兵模式。

哨兵模式是是一个管理多个 Redis 实例的工具,它可以实现对 Redis 的监控、通知、自动故障转移,是Redis实现高可用的方案。哨兵模式能够在发生故障时自动触发故障转移流程,从而保证集群的高可用性。

哨兵模式概述

Redis 可以存在多台服务器,并且实现了主从复制的功能。哨兵模式是一种特殊的模式,在 Redis 中哨兵是一个独立的进程。其原理是哨兵通过发送命令,等待 Redis 服务器响应,从而监控运行的多个 Redis 实例是否可以正常工作,如下图所示。

在这里插入图片描述

  • 通过发送命令,让 Redis 服务器返回其运行状态,包括主服务器和从服务器。
  • 当哨兵监测到主机出现故障后,会自动将其中一台从服务器切换成主服务器,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换新的主服务器。

但是在现实中,一个哨兵进程监控 Redis 服务器,也可能出现问题,因为这个哨兵进程本身也可能出现故障。为了处理这个问题,可以使用多个哨兵监控,而各个哨兵之间还会相互监控,这样就变为了多个哨兵模式。除了监控各个 Redis 主从服务器,各个哨兵之间还会互相监控,看看哨兵们是否还“活”着。其关系如下图所示。

在这里插入图片描述

论述一下故障切换 (failover) 的过程:假设主服务器宕机,哨兵1先监测到这个结果,当时系统并不会马上进行 failover 操作,而仅仅是哨兵1 主观地认为主服务器已经不可用,这个现象被称为主观下线。当后面的哨兵也监测到了主服务器不可用,并且有了一定数量的哨兵认为主服务器不可用后,哨兵之间就会形成一次投票。通过哨兵之间的投票机制,选出新的主服务器后,就会通过发布订阅方式,让各个哨兵对自己监控的服务器进行切换主服务器操作,这个过程被称为客观下线。这样对于 Redis 客户端而言,一切都是透明的。

故障转移流程

故障转移需要选择一个slaver节点来作为master。

选择主Maseter过程大致如下:

  1. 选择优先级最高的节点,通过sentinel配置文件中的replica-priority配置项,这个参数越小,表示优先级越高
  2. 如果第一步中的优先级相同,选择offset最大的,offset表示主节点向从节点同步数据的偏移量,越大表示同步的数据越多
  3. 如果第二步offset也相同,选择run id较小的

这样通过以上四大步骤,实现由Redis Sentinel自动完成故障发现和转移,实现自动高可用。

Redis 哨兵模式的优缺点

哨兵模式优点:最大的优点就是主从可以自动切换,系统更健壮,可用性更高

哨兵模式缺点:最大的缺点就是还要多维护一套哨兵模式,实现起来也变的更加复杂增加维护成本

最大的缺点就是还要多维护一套哨兵模式,实现起来也变的更加复杂增加维护成本

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

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

相关文章

动力电池系统介绍(十三)——高压互锁(HVIL)

动力电池系统介绍(十三) 一、高压互锁梗概1.1 高压互锁原理1.1 高压互锁内部结构1.2 高压互锁分类1.3 高压互锁原则 二、高压互锁常见故障2.1 高压互锁开关失效2.2 端子退针导致开路2.3 互锁端子对地短路2.4 动力电池内部故障 三、高压互锁故障排查 一、…

孟德尔随机化:Steiger Test避免反向因果关系

Steiger Test避免反向因果关系 以下steiger test方法是一个新的方法学,增加后提升提取工具变量的稳健性,没有的话也不影响文章内容。 看自己的需要。跑分析过程中,如果是GWAS数据没有samplesize,自己又需要这个内容,…

musl libc ldso 动态加载研究笔记:01

前言 musl 是一个轻量级的标准C库,建立在系统调用之上,可以认为是【用户态】的C 库,与 glibc 或者 uClibc 属于同一类。 基于 musl 的 gcc 工具链包括交叉编译工具链,可以用于编译 Linux 或者其他的操作系统,如当前 L…

kubesphere 集成 sonar

文章目录 安装 helm通过 helm 安装 sonar配置 SonarQube 服务器创建 SonarQube 管理员令牌SonarQube 配置添加到 ks-installer创建 Webhook 服务器将 SonarQube 服务器添加至 Jenkins将 sonarqubeURL 添加到 KubeSphere 控制台重启服务 为新项目创建 SonarQube Token 官方文档&…

蓝蓝设计-ui设计公司-界面设计案例作品

泛亚高科-光伏电站控制系统界面设计 html前端 | 交互设计 | 视觉设计 | 图标设计 泛亚高科(北京)科技有限公司(以下简称“泛亚高科”),一个以实时监控、高精度数值计算为基础的科技公司, 自成立以来,组成了以博士、硕…

同样都是找工作,为什么你的简历没人看?

上次的文章分享了自己软件测试面试时的一些经历,今天我想分享一下自己当时写简历以及投简历方面的经历,本文内容纯粹是个人简单分享,如果有写得不好的地方还请读者包涵与指正。 我是去年的九月初开始投递简历的,貌似各行各业的人…

μCOS-Ⅲ_简介

μCOS-Ⅲ简介 文章目录 μCOS-Ⅲ简介前言一、什么是 C/OS-III?二、C/OS-III的特点三、C/OS-III的版本和参考资料1、C/OS-III版本2、C/OS-III源码获取3、C/OS-III参考资料 四、C/OS-III源码简介总结 前言 μcos-III是一个可以基于ROM运行的、可裁剪的、抢占式、实时…

第五章.编辑资料

5.1.添加编辑页面 <template><div class="users-show"><div class="col-md-3 main-col"><div class="box"><div class="padding-md"><div class="list-group text-center"><rou…

k8s v1.27.4 部署metrics-serverv:0.6.4,kube-prometheus

只有一个问题&#xff0c;原来的httpGet存活、就绪检测一直不通过&#xff0c;于是改为tcpSocket后pod正常。 wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml修改后的yaml文件&#xff0c;镜像修改为阿里云 apiVersion: …

9.处理this和防抖、节流

9.1 this指向-普通函数 普通函数的调用方式决定了this的值&#xff0c;即【谁调用this的值 指向谁】 普通函数没有明确调用者时this值为window&#xff0c;严格模式下没有调用者时this的值为undefined 9.2 this指向-箭头函数 箭头函数中的this与普通函数完全不同&#xff0…

uni——遍历循环替换值

案例展示 const fraction_json ref([]) //星级数组最终我们需要的格式是&#xff1a; [{“num”: “5”, “evaluate_id”: “2”}, {“num”: “5”, “evaluate_id”: “3”}] 参考的方法&#xff1a; 【 .map() 】方法 map() 方法返回一个新数组&#xff0c;数组中的元素…

究竟什么是位图

引言 为什么要写这篇博文呢&#xff0c;是因为之前面试的时候遇到这样一个问题&#xff1a; 有一款数十亿级别的用户产品&#xff0c;如何统计一周内连续活跃的用户数&#xff1f; 这个问题的特征其实很明显&#xff1a;数据量大&#xff0c;需要交并操作&#xff0c;而且还有…

Postgresql+Postgis安装教程

Windows 下载地址 Postgresql&#xff1a;https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Postgis&#xff1a;https://winnie.postgis.net/download/windows/ 我这里安装Postgresql13&#xff0c;所以对应Postgis也选择pg13版本 首先安装Postgresql…

kali 换源

kali 换源 1.使用root权限打开 vim /etc/apt/sources.list # See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/ #deb http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware# Additional line for source pack…

标签(1)(详解)

目录 标签 部分标签 标签之标题 标题介绍与应用 VSCode插件 标签之段落 换行 水平线 标签之图片 网站中最多的元素 图片路径详解 绝对路径 相对路径 网络路径 标签之超文本链接 超链接描述 超链接属性 超链接表现 标签之文本 常用文本标签 标签 部分标签 …

Linux权限系列--给普通用户添加某个命令的sudo权限

原文网址&#xff1a;Linux权限系列--给普通用户添加某个命令的sudo权限_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Linux系统如何给普通用户添加某个命令的sudo权限。 使用场景 普通开发者可能需要sudo的命令&#xff1a; apt-get&#xff08;经常要安装软件&#x…

《Zookeeper》源码分析(十四)之 投票是如何发送与接收的

目录 MessengerWorkerSenderWorkerReceiver第5步&#xff1a;检验选票的epoch和version第6步&#xff1a;处理投票 Messenger Messenger管理接收到的消息以及待发送的消息&#xff0c;其源码如下&#xff1a; 它的源码比较简单&#xff0c;接下来着重介绍它维护的两个线程&a…

【仿写tomcat】七、项目结构优化以及代码开源

仿写tomcat 项目结构开源地址 项目结构 到目前为止&#xff0c;博主的仿写tomcat就告一段落了&#xff0c;后续有时间了还会继续补充功能&#xff0c;现在的项目结构如下。 在保证功能的前提下作出的改动有&#xff1a; 将各个类中的参数统一成了Config类&#xff0c;通过对…

Java课题笔记~ Ajax

1.1 概述 AJAX (Asynchronous JavaScript And XML)&#xff1a;异步的 JavaScript 和 XML。 我们先来说概念中的 JavaScript 和 XML&#xff0c;JavaScript 表明该技术和前端相关&#xff1b;XML 是指以此进行数据交换。 1.1.1 作用 AJAX 作用有以下两方面&#xff1a; 与服…

百度又开源一款压测工具,可模拟几十亿的并发场景,太强悍了

dperf 是百度开源的一款基于 DPDK 的 100Gbps 网络性能和负载测试软件&#xff0c;能够每秒建立千万级的 HTTP 连接、亿级别的并发请求和数百 Gbps 的吞吐量。 优点 性能强大&#xff1a; 基于 DPDK&#xff0c;使用一台普通 x86 服务器就可以产生巨大的流量&#xff1a;千万…