Redis 主从复制,哨兵模式,集群

news2024/11/18 5:30:16

目录

主从复制

主从复制

作用

缺陷

主从复制流程

实现Redis主从复制

哨兵模式

主从复制切换的缺点

哨兵的核心功能

哨兵模式原理

哨兵模式的作用

哨兵结构组成

故障转移机制

主节点的选举

实现哨兵模式

集群(Cluster)


redis群集有三种模式,主从复制,哨兵模式,集群(Cluster)

主从复制

主从复制

主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。

主从复制具体是指将一台redis服务器的数据,复制到其他的Redis服务器,前者称为主节点(master),后者称为从节点(slave),数据复制是单向的,只能由主节点到从节点。

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

作用

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

故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复

负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,从节点提供读服务,分担服务器负载,尤其是在写少读多的情况下,通过多个从节点分担读负载,可以大大提高Redsi服务器的并发量

高可用基石:主从复制是哨兵和集群能够实施的基础,是Redis高可用的基础

缺陷

故障无法自动化,写操作无法负载均衡,存储能力受到单机限制

主从复制流程

如果启动一个slave进程,则他会向master机器发送一个"sync command"命令,请求同步链接

无论是第一次连接还是重新连接,master机器都会启动一个后台进程,将数据快照保存到数据文件中(执行rdb操作),同时master 还会记录修改数据的所有命令并缓存到数据文件中

后台进程完成缓存操作之后,master机器就会向slave机器发生数据文件,slave端机器将数据文件保存到硬盘上,然后将其加载到内存中,接着master机器会将修改数据的所有操作一并发给slave机器,若slave机器出现故障宕机,则恢复故障后重新连接

master机器收到slave端机器的连接后,将其完整的数据文件发送给slave机器,如果master同时收到多个slave发来的同步请求,则master会在后台启动一个进程保存数据文件,然后将其发送给所有的slave端机器,确保所有的slave机器都正常

实现Redis主从复制

master:192.168.94.7

slave1:192.168.94.8

slave2:192.168.94.9

主配置

bind 0.0.0.0                                   70行,修改监听地址为0.0.0.0
daemonize yes                             137行,开启守护进程
logfile /var/log/redis_6379.log       172行,指定日志文件目录
dir /var/lib/redis/6379                     264行,指定工作目录
appendonly yes                             700行,开启AOF持久化功能
 

vim /etc/redis/6379.conf

/etc/init.d/redis_6379 restart

从配置

两台从配置一样
bind 0.0.0.0                                70行,修改监听地址为0.0.0.0
daemonize yes                          137行,开启守护进程
logfile /var/log/redis_6379.log    172行,指定日志文件目录
dir /var/lib/redis/6379                  264行,指定工作目录        
replicaof 192.168.94.7 6379     288行,指定要同步的Master节点IP和端口
appendonly yes                          700行,开启AOF持久化功能
vim /etc/redis/6379.conf

查看主从状态

测试

哨兵模式

主从复制切换的缺点

当服务器宕机后,需要手动一台从机切换为主机,这需要人工干预,不仅费时费力而且还会造成一段时间内服务不可用。

为了解决主从复制的缺点,就有了哨兵机制。

哨兵的核心功能

在主从复制的基础上,哨兵引入了主节点的自动故障转移

哨兵模式原理

哨兵(sentinel):是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 Master并将所有slave连接到新的 Master。所以整个运行哨兵的集群的数量不得少于3个节点。

哨兵模式的作用

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

自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其它从节点改为复制新的主节点。

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


哨兵结构组成

哨兵节点和数据节点

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

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


故障转移机制

1.由哨兵节点定期监控发现主节点是否出现了故障,每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的)。当超过半数哨兵节点认为该主节点主观下线了,这样就客观下线了。

2.当主节点出现故障,此时哨兵节点会通过Raft算法(选举算法)实现选举机制共同选举出一个哨兵节点为leader,来负责处理主节点的故障转移和通知。所以整个运行哨兵的集群的数量不得少于3个节点

3.由leader哨兵节点执行故障转移,过程如下:
将某一个从节点升级为新的主节点,让其它从节点指向新的主节点;
若原主节点恢复也变成从节点,并指向新的主节点;
通知客户端主节点已经更换。

需要特别注意的是,客观下线是主节点才有的概念;如果从节点和哨兵节点发生故障,被哨兵主观下线后,不会再有后续的客观下线和故障转移操作。


主节点的选举

1.过滤掉不健康的(已下线的),没有回复哨兵 ping 响应的从节点。
2.选择配置文件中从节点优先级配置最高的。(replica-priority,默认值为100)
3.选择复制偏移量最大,也就是复制最完整的从节点。


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

实现哨兵模式

修改配置文件(主从修改内容一致)

protected-mode no                                 17行,关闭保护模式
port 26379                                              21行,Redis哨兵默认的监听端口
daemonize yes                                       26行,指定sentinel为后台启动
logfile "/var/log/sentinel.log"                   36行,指定日志存放路径
dir "/var/lib/redis/6379"                           65行,指定数据库存放路径
sentinel monitor mymaster 192.168.94.7 6379 2    

84行,修改 指定该哨兵节点监控192.168.94.7:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移


sentinel down-after-milliseconds mymaster 30000    113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000        146行,故障节点的最大超时时间为180000(180秒)
vim /opt/redis-5.0.7/sentinel.conf

下面亮相皆为默认,默认即可

启动哨兵模式

注意:先启动主进程,再启动从进程

redis-sentinel sentinel &  启动哨兵

redis-cli -p 26379 info sentinel  查看哨兵的详细信息

测试

tailf /var/log/sentinel.log

将192.168.94.7恢复,并恢复成从

集群(Cluster)

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

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

相关文章

解决PDF打开后显示名称与文档名称不一致的问题【不需要word模板!!!】

文章目录 简介原因解决办法参考资料 简介 最近,博主在使用Acobat打开一个PDF文件的时候发现:打开后的PDF文件标签跟该文件的存储名称不一致。这是一件令人并不十分愉快和顺心的事情,网上搜索得到的解决办法基本上都是出奇的相似,…

css心跳动画

图标引入 <img class"icon" src"heart.svg" alt"" srcset""> CSS代码 <style>.icon {animation:bpm 1s linear,pulse 0.75s 1s linear infinite;}keyframes pulse {from,75%,to {transform: scale(1);}25% {transform:…

趣学前端 | 类,我想好好继承它的知识点

背景 最近睡前习惯翻会书&#xff0c;重温了《JavaScript权威指南》。这本书&#xff0c;文字小&#xff0c;内容多。两年了&#xff0c;我才翻到第十章。因为书太厚&#xff0c;平时都充当电脑支架。 JavaScript 类 话说当年类、原型、继承&#xff0c;差点给我绕晕。 在J…

生成式AI的情感实验——AI能否产生思想和情感?

机器人能感受到爱吗&#xff1f;这是一个很好的问题&#xff0c;也是困扰了科学家们很多年的科学未解之谜。虽然我们尚未准备好向智能机器赋予情感&#xff0c;但智能机器却已经可以借助生成式人工智能&#xff08;AI&#xff09;来帮助我们表达自己的情感。 自然情感表达 AI正…

【子集回溯】Leetcode 78. 子集 90. 子集 II

【子集回溯】Leetcode 78. 子集 90. 子集 II 78. 子集90. 子集 II ---------------&#x1f388;&#x1f388;78. 子集 题目链接&#x1f388;&#x1f388;------------------- 78. 子集 class Solution {List<List<Integer>> result new ArrayList<>()…

Java 7、Java 8常用新特性

目录 Java 8 常用新特性1、Lambda 表达式2、方法引用2.1 静态方法引用2.2 特定对象的实例方法引用2.3 特定类型的任意对象的实例方法引用2.4 构造器引用 3、接口中的默认方法4、函数式接口4.1 自定义函数式接口4.2 内置函数式接口 5、Date/Time API6、Optional 容器类型7、Stre…

【随笔】Git 基础篇 -- 分支与合并 git rebase(十)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

【Pt】马灯贴图绘制过程 05-铁丝与渲染出图

目录 效果 步骤 一、基本材质 二、浮尘 三、渲染 效果 步骤 一、基本材质 CtrlAlt鼠标右键选中指定的纹理集 在智能材质中将“Iron Forged Old”加入图层 将智能材质“Iron Forged Old”文件夹打开&#xff0c;将图层“Base”和“Edge”的基本颜色改暗一点 二、浮尘 新…

PHP+python高校教务处工作管理系统q535p

开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp/Laravel 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 运行环境:phpstudy/wamp/xammp等 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方…

21.兼容性测试

考试频率低&#xff1b; 一般考兼容性测试会结合web测试&#xff1b;&#xff08;兼容性矩阵&#xff09; 主要议题&#xff1a; 1.兼容性测试概述 2.硬件兼容性测试 最低配置不讲究工作负载&#xff0c;意思是软件能够运行的最低要求环境&#xff1b; 推荐配置&#xff0c…

【精品方案】智慧金融大数据分析平台总体架构方案

以下是部分PPT内容&#xff0c;请您参阅。如需下载完整PPTX文件&#xff0c;请前往星球获取&#xff1a; 1.实现数据共享 通过数据平台实现数据集中&#xff0c;确保金融集团各级部门均可在保证数据隐私和安全的前提下使用数据&#xff0c;充分发挥数据作为企业重要资产的业务价…

Nacos 服务发现 快速入门

Nacos 服务发现 快速入门 一、Nacos 服务发现 – 什么是服务发现 &#xff1f; 1、 Nacos 服务发现-什么是服务发现 在微服务架构中&#xff0c;整个系统会按职责能力划分为多个服务&#xff0c;通过服务之间协作来实现业务目标。 这样在我们的代码中免不了要进行服务间的远程…

[HackMyVM]靶场Zurrak

难度:medium kali:192.168.56.104 靶机:192.168.56.140 端口扫描 # nmap -sV -A 192.168.56.140 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-30 16:59 CST Nmap scan report for 192.168.56.140 Host is up (0.00039s latency). Not shown: 996 closed tcp po…

三相异步发电机在两相坐标系下的数学模型和状态方程

目录 1、异步发电机在两相静止坐标系下的数学模型 &#xff08;1&#xff09;磁链方程&#xff1a; &#xff08;2&#xff09;电压方程 &#xff08;3&#xff09;转矩方程 &#xff08;4&#xff09;异步电动机在两相静止坐标系&#xff08; &#xff09;上的数学模型 2、…

AcWing---转圈游戏---快速幂

太久没写快速幂了... 这是一道数学题orz&#xff0c;能看出来的话答案就是 &#xff0c;但是很大&#xff0c;同时还要mod n&#xff0c;直接用快速幂即可。 快速幂模版&#xff1a; long long int power(long long int a,long long int b,long long int mod){long long int r…

YUNBEE云贝-技术分享:PostgreSQL分区表

引言 PostgreSQL作为一款高度可扩展的企业级关系型数据库管理系统&#xff0c;其内置的分区表功能在处理大规模数据场景中扮演着重要角色。本文将深入探讨PostgreSQL分区表的实现逻辑、详细实验过程&#xff0c;并辅以分区表相关的视图查询、分区表维护及优化案例&#xff0c;…

基于深度学习的番茄成熟度检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;在本博客中&#xff0c;我们深入探讨了基于YOLOv8/v7/v6/v5的番茄成熟度检测系统。核心技术基于YOLOv8&#xff0c;同时融合了YOLOv7、YOLOv6、YOLOv5的算法&#xff0c;对比了它们在性能指标上的差异。本文详细介绍了国内外在此领域的研究现状、数据集的处理方…

OpenHarmony实战:轻量级系统之移植验证

OpenHarmony芯片移植完成后&#xff0c;需要开展OpenHarmony兼容性测试以及芯片SDK功能性测试。除可获得测试认证之外&#xff0c;还可以在开发阶段提前发现缺陷&#xff0c;大幅提高代码质量。 OpenHarmony兼容性测试 OpenHarmony兼容性测试是XTS&#xff08;OpenHarmony生态…

基于深度学习的植物叶片病毒识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文深入研究了基于YOLOv8/v7/v6/v5的植物叶片病毒识别系统&#xff0c;核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及基于Strea…

手搓链表(java)(不完整)

手搓链表&#xff08;java&#xff09;&#xff08;不完整&#xff09; 文章目录 手搓链表&#xff08;java&#xff09;&#xff08;不完整&#xff09;前言一、代码1.MyLinkedList类&#xff1a;2.测试类&#xff1a; 总结 前言 提示&#xff1a;以下是本篇文章正文内容&…