Redis高可用(主从复制、哨兵模式)详解

Redis高可用(主从复制、哨兵模式)详解

在这里插入图片描述

Redis是一种高性能的键值存储系统,能够通过多种机制来实现高可用性,这些机制主要包括主从复制(Replication)和哨兵模式(Sentinel)。

Redis 主从复制(Replication)

一、主从复制简介

Redis的主从复制是一种实现数据冗余和读写分离的机制,通过将数据从主节点(Master)复制到一个或多个从节点(Slave),确保系统中有多个副本以提高数据可靠性和读取性能。

二、工作原理

1. 主节点和从节点
  • 主节点(Master):处理所有的写操作,并将数据变化传播到从节点。

在这里插入图片描述

  • 从节点(Slave):复制主节点的数据,并提供只读访问。当主节点发生变化时,从节点会同步这些变化。

在这里插入图片描述

2. 数据传输方式:异步复制
  • Redis的主从复制主要是异步的,即主节点在完成写操作后并不等待从节点的确认。
  • 从节点会周期性地向主节点请求同步数据。

在这里插入图片描述

三、主从复制过程

在这里插入图片描述

1. 初次同步(全量复制)

当一个从节点第一次连接到主节点或重新连接时,会进行全量复制:

  1. 从节点发送同步命令:从节点向主节点发送PSYNC命令,请求同步数据。
  2. 主节点生成RDB文件:主节点执行一个后台保存操作(BGSAVE),并生成一个新的RDB快照文件。
  3. 主节点发送RDB文件:生成的RDB文件通过网络发送到从节点,从节点接收后加载到内存中。

在这里插入图片描述

  1. 主节点发送缓冲区数据:在主节点生成RDB文件期间,所有写操作的命令会被暂存在缓冲区中。RDB文件发送完毕后,这些缓冲区中的命令会被依次发送给从节点。
  2. 从节点应用命令:从节点将接收到的增量命令应用到自身的数据集中,以保持与主节点的数据一致。
    在这里插入图片描述
2. 增量同步(部分复制)

在全量复制之后,主从节点之间进行的是增量同步,也称为部分复制:

  1. 增量复制:主节点将所有新的写操作命令发送给从节点。
  2. 命令传播:主节点会对每个写操作生成相应的Redis命令,并通过复制流发送给从节点。
  3. 从节点执行命令:从节点接收到命令后,立即执行这些命令来更新自身数据。
3. 断线重连
  • 在网络故障或其他原因导致主从断线时,从节点会自动尝试重新连接主节点。
  • 如果重新连接成功,并且主节点的复制积压缓冲区(Replication Backlog)中仍然有未发送给从节点的数据,则可以进行部分复制,避免重新进行全量复制。

四、配置步骤

1. 主节点配置

主节点不需要特别配置,只需启动一个Redis实例即可。

2. 从节点配置

在从节点的配置文件(redis.conf)(永久的)中,设置以下参数:

在这里插入图片描述

replicaof <master-ip> <master-port>

如果主节点的IP地址为192.168.1.100,端口为6379,配置如下:

replicaof 192.168.1.100 6379

或者在从节点运行时(暂时的)使用命令:

SLAVEOF 192.168.1.100 6379

在这里插入图片描述

五、复制细节和优化

1. 复制积压缓冲区(Replication Backlog)
  • 定义:这是一个固定大小的环形缓冲区,用于存储最近的写操作命令。

在这里插入图片描述

  • 作用:在从节点短时间断开后重连时,可以利用缓冲区中的数据进行部分复制,避免全量复制。
  • 配置:可以通过repl-backlog-size参数设置缓冲区大小。
2. 心跳机制
  • 作用:保持主从节点之间的连接存活,并监控复制状态。
  • 机制:从节点周期性地发送PING命令给主节点,主节点响应PONG。如果主节点长时间没有收到从节点的心跳,会标记该从节点为失效。
3. 复制延迟
  • 定义:从节点同步数据的速度可能会滞后于主节点,产生延迟。
  • 原因:网络状况、从节点负载等。
  • 监控:可以通过INFO replication命令查看复制延迟。

二、Redis哨兵模式(Sentinel)

在这里插入图片描述
Redis Sentinel是一个健壮的分布式系统,其中多个Sentinel需要就给定的主节点不再可用的事实达成一致。然后,故障转移过程开始选择一个新的主节点。

在这里插入图片描述

一、工作原理

哨兵模式通过一组哨兵进程来监控主从结构的健康状态,确保系统的自动化故障转移和通知功能。

在这里插入图片描述
哨兵(Sentinel)是一个重要的组件,负责监控Redis集群中的主节点(Master)和从节点(Slave),并在主节点失效时自动进行故障转移。

1. 监控
  • 哨兵群集:通常由多个哨兵节点组成,它们通过选举形成一个领导者,负责执行监控任务。
  • 监控对象:哨兵节点定期向Redis主节点和从节点发送PING命令,检查它们是否可达。

在这里插入图片描述

2. 故障检测
  • 主节点失效检测:当哨兵节点检测到主节点不可达时,会将其标记为下线。
  • 从节点失效检测:如果一个从节点失效,哨兵会通知主节点,并在必要时将其重新配置为新的从节点。
3. 故障转移
  • 选举领导者:哨兵群集中的哨兵会进行选举,选择一个哨兵作为领导者负责执行故障转移操作。

在这里插入图片描述

  • 选举条件:通过Raft算法进行选举,选举条件包括优先级、运行ID等。
4. 自动故障转移
  • 故障转移过程
    • 哨兵检测到主节点失效后,从当前的从节点中选举一个升级为新的主节点。
    • 哨兵更新集群中其他从节点的配置,使它们成为新主节点的从节点。
    • 客户端和应用可以通过哨兵的监听地址连接到新的主节点。
5. 手动故障转移
  • 手动干预:管理员可以通过哨兵提供的命令手动触发故障转移过程,以便在维护期间进行控制和调整。

二、哨兵选举机制

在Redis Sentinel中,选举机制是确保在主节点(Master)失效后,哨兵群集能够协作选举出一个新的主节点的关键过程。
在这里插入图片描述

1. 哨兵领导者选举

Redis Sentinel中的哨兵节点在运行时会进行领导者选举,领导者负责执行故障检测和故障转移操作。选举过程基于Raft算法的思想,但具体实现可能有所不同。

  • 哨兵运行ID(runid):每个哨兵节点在启动时生成一个唯一的runid,用于标识该哨兵节点的身份。

  • 优先级(priority):哨兵节点可以配置一个优先级,用于决定在选举领导者时的重要性。

选举条件:
  • 单一领导者:在任何时刻,哨兵群集中应该只有一个领导者,以确保操作的一致性和可靠性。

  • 运行ID比较:哨兵根据各自的运行ID来决定谁应该成为领导者。通常,具有最新运行ID的哨兵会有更高的优先级。

  • 优先级考量:如果多个哨兵具有相同的运行ID,优先级较高的哨兵将更有可能被选为领导者。

2. 主节点故障后的选举过程

当哨兵检测到Redis的主节点失效时,选举新的主节点的过程通常如下:

  • 哨兵检测失效:一旦哨兵节点检测到主节点不可用(例如通过心跳检测),它会开始选举新的主节点。

  • 选举领导者:哨兵群集中的哨兵节点开始通信,以决定哪一个哨兵节点将负责执行故障转移。通常,哨兵节点会互相通信,比较彼此的优先级和运行ID来决定新的领导者。

  • 执行故障转移:一旦新的领导者选举出来,它将负责将一个从节点提升为新的主节点,并更新其他哨兵节点和从节点的配置,确保整个Redis集群能够继续工作。


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

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

相关文章

js,uni 自定义 时间选择器 vue2

<template><view class"reserve-time-box"><view class"title">选择时间</view><view class"date-box"><view class"date-scroll-box" :style"{ width : ${dataTimeWidth}rpx }"><v…

Node.js下载及安装详细教程

目录 Node.js安装详细教程 下载安装环境变量配置文件结构配置npm在安装全局模块时的路径和缓存cache的路径测试常见命令 Node.js安装详细教程 &#x1f441;官网下载地址:Download | Node.js (nodejs.org) 下载速度慢的话 可以使用网盘下载&#xff1a; https://pan.quark.…

自然语言处理基本知识(1)

一 分词基础 NLP:搭建了计算机语言和人类语言之间的转换 1 精确分词&#xff0c;试图将句子最精确的分开&#xff0c;适合文本分析 >>> import jieba >>> content "工信处女干事每月经过下属科室" >>> jieba.cut(content,cut_all …

TCP、UDP详解

目录 1.区别 1.1 概括 1.2 详解 2.TCP 2.1 内容 2.2 可靠传输 2.2.1 确认应答 2.2.2 超时重传 2.2.3 连接管理 三次握手 四次挥手 2.2.4 滑动窗口 2.2.5 流量控制 2.2.6 拥塞控制 2.2.7 延时应答 2.2.8 捎带应答 2.2.9 面向字节流 2.2.10 异常情况的处理 1.…

通达信短线抄底主升浪幅图指标公式源码

通达信短线抄底主升浪幅图指标公式源码&#xff1a; A1:REF(C,1); A2:SMA(MAX(C-A1,0),5,1)/SMA(ABS(C-A1),5,1)*1000; A3:BARSLAST(REF(CROSS("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)),1)); A4:A2-LLV(A2,10); A5:(MA(A4,2)*3A4*13)/16; A6:IF(A5>1…

最新!AI大模型的研究热点!

引言 在人工智能的浪潮中&#xff0c;大模型研究如日中天&#xff0c;涵盖诸多研究方向&#xff0c;每个方向均承载着独特的研究焦点与挑战。 以下&#xff0c;我们将逐一探讨数个备受瞩目的研究方向&#xff0c;包括检索增强生成RAG、大模型Agent、Mamba、MoE、LoRA等&#…

Linux高并发服务器开发(四)进程间通信

文章目录 1 前言2 无名管道3 有名管道4 管道读写特点5 设置管道为非阻塞6 使用有名管道实现简单版本聊天7 共享存储映射7.1 mmap 存储映射函数7.2 共享映射实现父子进程通信7.3 共享映射实现无亲缘关系进程通信7.4 匿名映射实现父子进程通信 8 信号8.1 概念和特点8.2 信号的编号…

使用 shell 脚本同步 yum 源建立本地私有仓库

文章目录 [toc]事出有因脚本内容前端展示 事出有因 有两方面原因做了这个事情&#xff1a; dockerhub 国内无法访问centos 7 要停止社区支持了 结合两个情况&#xff0c;不久的将来&#xff0c;可能国内也就没有对应的 yum 仓库了&#xff08;现在想找 centos 7 之前的仓库&…

防火墙GRE over IPSec配置

一、基础知识 1、GRE隧道 GRE隧道是一种网络通信协议&#xff0c;使用通用路由封装&#xff08;GRE&#xff09;技术&#xff0c;能够将一种网络协议下的数据报文封装在另一种网络协议中&#xff0c;从而实现在另一个网络层协议中的传输。 GRE隧道的基本概念和工作方式 基本…

HarmonyOS Next开发学习手册——代码混淆

代码混淆简介 针对工程源码的混淆可以降低工程被破解攻击的风险&#xff0c;缩短代码的类与成员的名称&#xff0c;减小应用的大小。 DevEco Studio提供代码混淆的能力并默认开启&#xff0c;API 10及以上版本的Stage模型、 编译模式为release 时自动进行代码混淆。 使用约束…

沙龙圆满举行 | 数据资产入表新动向·驱动企业新质生产力!

近日&#xff0c;由四川智慧城市发展联盟、璞华科技有限公司等公司主办的“数据治理与入表专题沙龙会”在成都圆满落幕。璞华科技有限公司作为数据治理、数据资产入表领域的领军企业&#xff0c;为此次盛会贡献了我们的专业见解与实战经验。 沙龙现场&#xff0c;业内精英齐聚一…

【技术追踪】SDSeg:医学图像的 Stable Diffusion 分割(MICCAI-2024)

这医学图像分割领域啊&#xff0c;终究还是被 Stable Diffusion 闯进去了~ SDSeg&#xff1a;第一个基于 Stable Diffusion 的 latent 扩散医学图像分割模型&#xff0c;在五个不同医学影像模态的基准数据集上超越了现有的最先进方法~ 论文&#xff1a;Stable Diffusion Segmen…

基于LangChain构建RAG应用

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;上一篇文章中我们详细介绍了RAG的核心思想以及搭建向量数据库的完整过程&#xff1b;&#x1f632; 本文将基于上一篇文章的结果进行开发&#xff0c;主…

配置Nginx二级域名

一、环境 &#xff08;一&#xff09;配置 1.服务器 linux CentOS 2.反向代理 Nginx 3.开放端口 云服务器开放端口80和443 二、域名备案 &#xff08;一&#xff09;腾讯云 1.腾讯云域名备案流程 备注&#xff1a;一级域名备案后&#xff0c;二级域名可以不用再备案&a…

AS-V1000外部设备管理介绍(国标GB28181设备管理,可以管理的国标设备包括DVR/NVR、IPC、第三方国标28181平台)

目录 一、概述 1、视频监控平台介绍 2、外部设备定义&#xff08;接入的国标设备&#xff09; 二、外部设备管理 2.1 外部设备添加 &#xff08;1&#xff09;设备侧的配置 &#xff08;2&#xff09;平台侧的配置 2.2 外部设备信息的修改 三、外部通道管理 3.1 外部…

React_创建一个项目

目录 一、React&#xff08;js 版&#xff09; 二、React&#xff08;ts 版&#xff09; 使用react创建一个项目,前提是确保你已经安装了Node.js和npm。 如果没有安装Node.js和npm&#xff0c;查看这个文件&#xff1a; 安装node.js和npmhttps://blog.csdn.net/zxy1993106…

GoSync+华为智能穿戴使用指导

GoSync官方简介&#xff1a; GoSync 是一款免费应用程序&#xff0c;主要用于将您的可穿戴设备中的步行、跑步、骑自行车和游泳等活动数据同步到您的 Google Fit 和其他健身平台。在开始同步数据之前&#xff0c;您需要将您的可穿戴设备账户与您的健身平台账户连接起来。在创建…

三元和磷酸铁锂电池有什么区别?

现在的电动车大多都会使用到锂电池&#xff0c;在常见的锂电池分为两种&#xff0c;一种是三元锂电池另外一种是磷酸铁锂电池&#xff0c;面对这两种锂电池时&#xff0c;它们到底有什么不同&#xff1f; 1、材料不同 这两种锂电池的不同之处便是材料不同&#xff0c;磷酸铁锂…

时间序列分析入门:概念、模型与应用【ARMA、ARIMA模型】

在这篇博客中&#xff0c;我们将全面探讨时间序列分析的基本概念和分类&#xff0c;深入理解平稳性及其检验方法&#xff0c;并介绍自回归模型&#xff08;AR&#xff09;、滑动平均模型&#xff08;MA&#xff09;、自回归滑动平均模型&#xff08;ARMA&#xff09;以及自回归…

Unity免费领高级可视化编程自定义节点工具AI行为UI流程对话树状态机逻辑等FlowReactor价值50刀high level20240627

刚发现一款类似虚幻蓝图的可视化编程工具&#xff0c;原价50刀&#xff0c;现在免费领取了。赶紧去领取入库&#xff0c;防止作者涨价。 高级可视化编程自定义节点工具&#xff1a;https://prf.hn/l/BJbdvnD 作者其他资产&#xff1a;https://prf.hn/l/YLAYznV Unity免费领高级…