redis的集群

news2024/9/23 17:20:43
高可用方案

1、持久化

2、高可用 主从复制 哨兵模式 集群

主从复制: 主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用

主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读)

缺陷:故障无法自动恢复,需要人工干预,写操作的负载均衡

主从复制的工作原理
主从复制的工作原理流程图

1、建立连接:slave向主发送一个syn command(同步),请求和主节点建立连接

2、主节点收到请求之后,他不管slave是第一次连接还是重新连接,主节点都会启动一个后台进程,执行BGSAVE,主节点会把所有修改数据记录的命令加载到缓存和数据文件之中

3、数据文件创建完毕之后,master把数据文件传送给slave,slave会把这个数据文件,先保存到硬盘,然后再加载到内存

主从复制实验

架构(redis服务器)

20.0.0.20 主

20.0.0.21 从1

20.0.0.22 从2

关闭防护墙和安全机制
主配置
vim /etc/redis/6379.conf
监听地址为
0.0.0.0
700行
no改为yes
重启服务

配置从1
vim /etc/redis/6379.conf
监听地址为
0.0.0.0
278行
replicaof 20.0.0.20 6379
700行
no改为yes
重启服务

配置从2
vim /etc/redis/6379.conf
监听地址为
0.0.0.0
278行
replicaof 20.0.0.20 6379
700行
no改为yes
重启服务

主节点查看日志
tail -f /var/log/redis_6379.log

所有服务器登录redis
在主创建set键值对,并在从上查看是否同步
从只能读 

查看主从策略
redis-cli info replication
哨兵模式

先有主从再有哨兵

在主从复制的基础之上,实现主节点故障的自动切换

哨兵模式的原理

哨兵:是一个分布式系统,用于在主从结构之间,对每台redis的服务进行监控

主节点出现故障时,从节点通过投票的方式选择一个新的master

哨兵模式也需要三个节点

哨兵模式的结构

哨兵节点:监控,不存储数据

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

哨兵模式的工作机制流程图

1、主从节点上都有哨兵

2、主节点的哨兵监控从节点1和从节点2

3、从节点1的哨兵监控主节点和从节点2

4、从节点2的哨兵监控主节点和从节点1

哨兵投票机制

每个哨兵节点每隔一秒,通过ping命令方式,检测主从之间的心跳线,主节点在一定时间内没有回复或者回复了错误的信息,这个时候,哨兵就会主观的认为主节点下线了,超过半数的哨兵节点认为主节点下线了,这个时候才会认为主节点是客观下线了

主节点选举过程

哨兵节点通过raft算法(选举算法),每个节点共同投票选举出一个新的master,然后新的master实现主节点转移和故障恢复通知

主节点的选举过程

1、已经下线的从节点,不会被选为主节点

2、选择配置文件当中,从节点优先级最高的replica-priority 100

3、选择一个复制数据最完整的从节点

主节点
cd /opt/redis-5.0.7
vim sentinel.conf
17行
取消注释
关闭保护模式

26行
daemonize yes
后台运行

36行
logfile "/var/log/sentinel.log"
指定日志文件

65行
dir "var/lib/redis/6379"
数据库存放路径

84行 
sentinel monitor mymaster 20.0.0.20 6379 2
2表示至少需要2台服务器,认为主已经下线,才会进行主从切换

113行
sentinel down-after-milliseconds mymaster 30000
判断时间周期30秒(最小)

从节点1
cd /opt/redis-5.0.7
vim sentinel.conf
17行
取消注释
关闭保护模式

26行
daemonize yes
后台运行

36行
logfile "/var/log/sentinel.log"
指定日志文件

65行
dir "var/lib/redis/6379"
数据库存放路径

84行 
sentinel monitor mymaster 20.0.0.20 6379 2
2表示至少需要2台服务器,认为主已经下线,才会进行主从切换

113行
sentinel down-after-milliseconds mymaster 30000
判断时间周期30秒(最小)


从节点2
cd /opt/redis-5.0.7
vim sentinel.conf
17行
取消注释
关闭保护模式

26行
daemonize yes
后台运行

36行
logfile "/var/log/sentinel.log"
指定日志文件

65行
dir "var/lib/redis/6379"
数据库存放路径

84行 
sentinel monitor mymaster 20.0.0.20 6379 2
2表示至少需要2台服务器,认为主已经下线,才会进行主从切换

113行
sentinel down-after-milliseconds mymaster 30000
判断时间周期30秒(最小)

先启动主节点,再启动从节点(在源码包下)
redis-sentinel sentinel.conf &

查看整个集群的哨兵模式
redis-cli -p 26379 info Sentinel
模拟故障切换
查看主节点的进程号
ps -elf | grep redis

主停服务
查看日志

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

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

相关文章

排序算法:归并排序、快速排序、堆排序

归并排序 要将一个数组排序,可以先将它分成两半分别排序,然后再将结果合并(归并)起来。这里的分成的两半,每部分可以使用其他排序算法,也可以仍然使用归并排序(递归)。 我看《算法》…

酒店预订订房小程序源码系统+多酒店入驻 功能齐全 附带完整的搭建教程

随着互联网的快速发展,越来越多的人选择通过在线预订平台预订酒店。为了满足这一需求,我们开发了这个酒店预订订房小程序源码系统。该系统基于先进的云计算技术和大数据分析,旨在为用户提供更加便捷、智能的酒店预订服务。 以下是部分代码示…

喜爱拍拍宝宝照片的,一定要制作照片书方便保存

​制作照片书,让美好记忆长久保存。随着数码技术的普及,我们拥有了越来越多的照片,但如何妥善保存这些珍贵的回忆呢?一张张照片随意夹在相册里,时间一长,容易丢失或混乱。而照片书则不同,它把多…

前端如何判空

这样判空就会报错 loadNode(node, resolve)console.log("node")console.log(node)if (node.data ! null) {this.get(ctx /publicity/publicityType/typeTreeData?id node.data.id).then((res) > {resolve(res)})}}, 需要这样写,用typeof来做类型判…

解析大型语言模型的训练、微调和推理的运行时性能

背景 这篇论文是截至目前为数不多的介绍大模型训练配套环境比对的论文,对于想要入门大模型训练同学是个不错的入门资料。比较了不同尺寸模型(比较常用的7、13、70b),在不同型号gpu、训练框架、推理框架数据。结合自己实际工作需要…

交流充电桩测试参考标准是哪些

功能性能测试:这是评价交流充电桩性能的重要标准,包括充电效率、充电稳定性、充电模式等。充电效率主要检查充电桩的充电功率、充电时间等;充电稳定性主要检查充电桩的电压、电流波动等;充电模式主要检查充电桩的恒流充电、恒压充…

Java基于B/S架构,包括PC后台管理端、APP移动端、可视化数据大屏的智慧工地源码

智慧工地管理平台充分运用数字化技术,聚焦施工现场岗位一线,依托物联网、互联网、AI等技术,围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程…

Spark---集群搭建

Standalone集群搭建与Spark on Yarn配置 1、Standalone Standalone集群是Spark自带的资源调度框架,支持分布式搭建,这里建议搭建Standalone节点数为3台,1台master节点,2台worker节点,这虚拟机中每台节点的内存至少给…

使用CSS渲染不同形状

本文只是用来记录自己遇到的图形 1.图形一 2.图形二 3.图形三 4.图形四 5.图形五

uniapp 打包后各静态资源加载失败的问题(背景图,字体等)

原因: 1.部署地址不在域名根目录下 解决办法(推荐办法2): 办法1.如果部署在域名的文件夹下(例如h5), 则运行的基础路径修改为/h5/ 且注意路由模式 办法2.不修改运行的基础路径(还是./), 将代码中涉及背景图(background-image)和字体资源的路径前统一加,如图:

解决ElementUI时间选择器回显出现Wed..2013..中国标准时间.

使用饿了么组件 时间日期选择框回显到页面为啥是这样的? 为什么再时间框中选择日期,回显页面出现了这种英文格式呢???? 其实这个问题直接使用elementui的内置属性就能解决 DateTimePicker 日期时间选择…

时序预测 | MATLAB实现基于ELM-AdaBoost极限学习机结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于ELM-AdaBoost极限学习机结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于ELM-AdaBoost极限学习机结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.Matlab实现ELM-Adaboost时间序列预测,极…

健康饮酒进家庭,国台酒业与碧桂园服务集团达成战略合作

11月19日,碧桂园服务集团与国台酒业集团战略合作发布会暨“健康饮酒进家庭”项目启动仪式在广州举行。 广东省酒类行业协会创会会长朱思旭,广东省酒类行业协会会长彭洪,碧桂园服务集团总裁徐彬淮,碧桂园服务集团酒类业务总经理、广…

报表控件Stimulsoft 操作演示:空数据和 Dock 样式

在今天的文章中,我们将讨论如何避免报告中出现空行。我们不仅会介绍在没有数据时禁用组件;还会介绍在没有数据时禁用组件。我们还将探索消除禁用组件时可能出现的空行。但在我们深入探讨之前,让我们检查一下数据带的零数据样本。 Stimulsoft…

【Rxjava详解】(一)观察者模式的拓展

文章目录 RxJava引入扩展的观察者模式RxJava的观察者模式基本实现 RxJava入门示例Action RxJava引入 在介绍RxJava之前先说一下Rx。全称是Reactive Extensions,直译过来就是响应式扩展 Rx基于观察者模式,它是一种编程模型,目标是提供一致的…

4.15每日一题(连续函数在有界闭区域上求最大/小值:拉格朗日乘数法、化条件为无条件法)

方法一:拉格朗日乘数法(拉格朗日乘数设的方程比较好解的时候使用) 方法二:化条件为无条件 (拉格朗日乘数设的方程不好解的时候使用) (1)直角坐标方程化条件为无条件法 (2…

【量化】一个简版单档tick数据回测框架

这是一个简易的模拟实际交易流程的回测框架,所使用的行情数据是单档的tick成交数据。为了实现调用者可以实现自己的交易逻辑,本框架预留了几个函数予以调用者能够继承类后在子类中重写以实现买入卖出信号的生成(check_sell()和check_buy()&am…

ASO优化之关于应用类别的选择

用户可以通过应用商店内的类别,来发现他们想要的新应用。接下来我们来一起了解如何为应用来选择最符合最准确的类别。 1、应用的类别所显示的区域? 我们可以为APP选择一个主要类别和一个次要类别,所选择的主要类别对于该应用在应用商店曝光度…

3.9-Dockerfile实战

这一节介绍怎么将python程序打包成一个image,然后运行为一个container。 首先,创建/home/python/目录 mkdir /home/python/ 然后创建app.py文件。 vim app.py app.py文件的内容如下: from flask import Flaskapp Flask(__name__)app.route(…

「L2C」型行业从线索到成交,听懂客户之「声」是关键

存量经营时代下,营销变得越来越难。无论是稳流量,或是促活跃,转化率就是难以提升。 相比传统快消行业,线索型(L2C,Leads to Cash)行业因为客单价高、决策周期长、用户触点分散等特性&#xff0…