Redis集群-主从复制、哨兵

news2024/11/22 22:29:28

●主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。

主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障

恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。

●哨兵:在主从复制的基础上,哨兵实现了自动化的故障恢复。缺陷:写操作无法负载均衡;存储

能力受到单机的限制;哨兵无法对从节点进行自动故障转移,在读写分离场景下,从节点故障会导

致读服务不可用,需要对从节点做额外的监控、切换操作。

●集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现

了较为完善的高可用方案。

Redis 主从复制

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点

(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但

一个从节点只能有一个主节点。

#主从复制的作用:

●数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

●故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种

服务的冗余。

●负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服

务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其

是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

●高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是

Redis高可用的基础。

#主从复制流程:

1)首次同步:当从节点要进行主从复制时,它会发送一个SYNC命令给主节点。主节点收到SYNC

命令后,会执行BGSAVE命令来生成RDB快照文件,并在生成期间使用缓冲区记录所有写操作。

2)快照传输:当主节点完成BGSAVE命令并且快照文件准备好后,将快照文件传输给从节点。主

节点将快照文件发送给从节点,并且在发送过程中,主节点会继续将新的写操作缓冲到内存中。

3)追赶复制:当从节点收到快照文件后,会加载快照文件并应用到自己的数据集中。一旦快照文

件被加载,从节点会向主节点发送一个PSYNC命令,以便获取缓冲区中未发送的写操作。

4)增量复制:主节点收到PSYNC命令后,会将缓冲区中未发送的写操作发送给从节点,从节点会

执行这些写操作,保证与主节点的数据一致性。此时,从节点已经追赶上了主节点的状态。

5)同步:从节点会继续监听主节点的命令,并及时执行主节点的写操作,以保持与主节点的数据

同步。主节点会定期将自己的操作发送给从节点,以便从节点保持最新的数据状态.

注意:当slave首次同步或者宕机后恢复时,会全盘加载,以追赶上大部队,即全量复制

搭建Redis 主从复制

上传文件

初始化

修改内核参数 

加载

安装软件

解压编译

从节点配置

重启

登录查看

插入数据

从服务器数据跟新

查看日志

Redis 哨兵模式

主从切换技术的方法是:当服务器宕机后,需要手动一台从机切换为主机,这需要人工干预,不仅

费时费力而且还会造成一段时间内服务不可用。为了解决主从复制的缺点,就有了哨兵机制。

哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移。

#哨兵模式的作用:

●监控:哨兵会不断地检查主节点和从节点是否运作正常。

●自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的

其中一个从节点升级为新的主节点,并让其它从节点改为复制新的主节点。

●通知(提醒):哨兵可以将故障转移的结果发送给客户端。

哨兵结构由两部分组成,哨兵节点和数据节点:

●哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据。

●数据节点:主节点和从节点都是数据节点。

#故障转移机制:

1.由哨兵节点定期监控发现主节点是否出现了故障

每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。如

果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主

观下线了(单方面的)。当超过半数哨兵节点认为该主节点主观下线了,这样就客观下线了。

2.当主节点出现故障,此时哨兵节点会通过Raft算法(选举算法)实现选举机制共同选举出一个哨

兵节点为leader,来负责处理主节点的故障转移和通知。所以整个运行哨兵的集群的数量不得少于

3个节点。

3.由leader哨兵节点执行故障转移,过程如下:

●将某一个从节点升级为新的主节点,让其它从节点指向新的主节点;

●若原主节点恢复也变成从节点,并指向新的主节点;

●通知客户端主节点已经更换。

需要特别注意的是,客观下线是主节点才有的概念;如果从节点和哨兵节点发生故障,被哨兵主观

下线后,不会再有后续的客观下线和故障转移操作。

#主节点的选举:

1.过滤掉不健康的(已下线的),没有回复哨兵 ping 响应的从节点。

2.选择配置文件中从节点优先级配置最高的。(replica-priority,默认值为100)

3.选择复制偏移量最大,也就是复制最完整的从节点。

哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式

从节点优先级

搭建Redis 哨兵模式

修改 Redis 哨兵模式的配置文件(所有节点操作)

复制文件修改属组

 修改配置文件

 

启动前先写一个脚本

返回修改文件

复制到另一台主机上

启动哨兵

 

跟踪日志

暂停主服务器

 

故障切换

VIP跳转到新的主机上

重新启动原来的主服务器

原来的主服务器自动变成从服务器

自动做主从复制

Redis 群集模式 

集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。

集群由多组节点(Node)组成,Redis的数据分布在这些节点组中。节点组中的节点分为主节点和从

节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。

#集群的作用,可以归纳为两点:

(1)高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似);当任一节点发生故障

时,集群仍然可以对外提供服务。

(2)数据分区:数据分区(或称数据分片)是集群最核心的功能。

集群将数据分散到多组节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;另一

方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。

Redis单机内存大小受限问题,在介绍持久化和主从复制时都有提及;例如,如果单机内存太大,

bgsave和bgrewriteaof的fork操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长

时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。

#Redis集群的数据分片:

Redis集群引入了哈希槽的概念

Redis集群有16384个哈希槽(编号0-16383)

集群的每组节点负责一部分哈希槽

每个Key通过CRC16校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽

所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作

#以3个节点组成的集群为例:

节点A包含0到5460号哈希槽

节点B包含5461到10922号哈希槽

节点C包含10923到16383号哈希槽

#Redis集群的主从复制模型

集群中具有A、B、C三个节点,如果节点B失败了,整个集群就会因缺少5461-10922这个范围的槽

而不可以用。

为每个节点添加一个从节点A1、B1、C1整个集群便有三个Master节点和三个slave节点组成,在节

点B失败后,集群选举B1位为的主节点继续服务。当B和B1都失败后,集群将不可用。

搭建Redis 群集模式 

redis的集群一般需要6个节点,3主3从。方便起见,这里所有节点在同一台服务器上模拟:

以端口号进行区分:3个主节点端口号:6001/6002/6003,对应的从节点端口号:

6004/6005/6006。

准备目录

赋权

复制文件并配置

 

将文件赋给其他主机

启动

启动集群

查看对应关系

 

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

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

相关文章

小白学习手册:轻松理解MQ消息队列

目录 # 开篇 RabbitMQ介绍 通讯概念 1. 初始MQ及类型 2. MQ的架构 2.1 RabbitMQ的结构和概念 2.2 RabbitMQ消息流示意图 3. MQ下载使用 3.1 Docker下载MQ参考 3.2 进入RabbitMQ # 开篇 MessagesQueue 是一个抽象概念,用于描述消息队列系统的一般特性和功能…

Ubuntu(通用)—网络加固—ufw+防DNS污染+ARP绑定

1. ufw sudo ufw default deny incoming sudo ufw deny in from any to any # sudo ufw allow from any to any port 5353 protocol udp sudo ufw enable # 启动开机自启 # sudo ufw reload 更改后的操作2. 防ARP欺骗 华为云教程 arp -d删除dns记录arp -a显示arp表 ipconfi…

windows USB设备驱动开发-双角色驱动

在USB的通讯协议中,规定发起连接的一方为主机(Host),接受连接的一方为设备,这可以用U盘插入电脑举个例子,当U盘插入电脑后,电脑这边主动发起查询和枚举,U盘被动响应查询和数据存取。 USB 双角色驱动程序堆…

《RepViT Revisiting Mobile CNN From ViT Perspective》

期刊:CVPR 年份:2024 代码:http://https: //github.com/THU-MIG/RepViT 摘要 最近,与轻量级卷积神经网络(CNN)相比,轻量级视觉Transformer(ViTs)在资源受限的移动设备上表现出了更高的性能和更低的延迟。研究人员已…

大聪明教你学Java | 深入浅出聊 RocketMQ

前言 🍊作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“猥琐”办法解决繁琐问题,让复杂的问题变得通俗易懂。 🍊支持作者: 点赞👍、关注💖、留言&#x1f4…

技术派Spring事件监听机制及原理

Spring事件监听机制是Spring框架中的一种重要技术,允许组件之间进行松耦合通信。通过使用事件监听机制,应用程序的各个组件可以在其他组件不直接引用的情况下,相互发送和接受消息。 需求 在技术派中有这样一个需求,当发布文章或…

旋转变压器软件解码simulink仿真

1.介绍 旋转变压器是一种精密的位置、速度检测装置,尤其适用于高温、严寒、潮湿、高速、振动等环境恶劣、旋转编码器无法正常工作的场合。旋转变压器在使用时并不能直接提供角度或位置信息,需要特殊的激励信号和解调、计算措施,才能将旋转变压…

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统 一 文档简介二 平台构建2.1 使用平台2.2 百度智能云2.2.1 物联网核心套件2.2.2 在线语音合成 2.3 playback语音数据准备与烧录2.4 开机语音准备与添加2.5 唤醒词识别词命令准备与添加 三 代码准备3.1 sln-local/2-iot 代码…

2025第13届常州国际工业装备博览会招商全面启动

常州智造 装备中国|2025第13届常州国际工业装备博览会招商全面启动 2025第13届常州国际工业装备博览会将于2025年4月11-13日在常州西太湖国际博览中心盛大举行!目前,各项筹备工作正稳步推进。 60000平米的超大规模、800多家国内外工业装备制造名企将云集…

Unity Shader 软粒子

Unity Shader 软粒子 前言项目Shader连连看项目渲染管线设置 鸣谢 前言 当场景有点单调的时候,就需要一些粒子点缀,此时软粒子就可以发挥作用了。 使用软粒子与未使用软粒子对比图 项目 Shader连连看 这里插播一点,可以用Vertex Color与…

KUKA机器人不同运行方式

KUKA机器人有以下四种运行方式: 1、手动慢速运行(T1) 2、手动快速运行(T2) 3、自动运行(AUT) 4、外部自动运行(AUT EXT) 将示教器上的钥匙向右旋转,就会…

【数据结构之B树的讲解】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

专题五:Spring源码之初始化容器上下文

上一篇我们通过如下一段基础代码作为切入点,最终找到核心的处理是refresh方法,从今天开始正式进入refresh方法的解读。 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(…

Study--Oracle-05-Oracler体系结构

一、oracle 体系概览 Oracle数据库的体系结构通常包括以下主要组件: 1、实例(Instance):运行数据库的软件环境,包括内存结构(SGA)和进程结构(Background Processes and User Proces…

Mysql面试合集

概念 是一个开源的关系型数据库。 数据库事务及其特性 事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。 事务特性: (1)原子性:即不可分割性,事务要么全部被执行,要么就…

Spring Boot 实现 AOP 动态热插拔功能并附DEMO源码

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

3D Gaussian Splatting代码中的Gaussian_Module和Cameras两个类的代码解读

Gaussian_model 讨论Gaussian_model这个类,是因为里面包含了三维高斯分布的基本信息,里面定义了各种参量的构建方式、用于优化学习的激活函数、学习率设置方法和高斯点优化过程中的增加与删除方式及对应优化器的处理方法。这个类定义在scene文件夹中的g…

探索工业AI智能摄像机的高端科技

在当今快速发展的工业智能化领域,工业AI智能摄像机系列以其卓越的性能和多功能性在国内外备受关注(文末有国外工程师的评测链接)。搭载Raspberry Pi CM4支持的旨在广泛应用,涵盖从简单的条形码扫描到基于人工智能的工业环境中的缺…

数学知识——欧拉函数

数学知识(二) 20240628 求和N互质的个数公式 先分解N,再求个数fai n欧拉函数的证明:用容斥原理 不考 求质因子 p1, … , pk 1-N中与N互质的个数, 去掉质因子倍数 是pi的倍数的有N/pi个,但是会有既是p1也是…

【UE5.1】Chaos物理系统基础——01 创建可被破坏的物体

目录 步骤 一、通过笔刷创建静态网格体 二、破裂静态网格体 三、“统一” 多层级破裂 四、“簇” 群集化的破裂 五、几何体集的材质 六、防止几何体集自动破碎 步骤 一、通过笔刷创建静态网格体 1. 可以在Quixel Bridge中下载两个纹理,用于表示石块的内外纹…