Redis主从复制与Cluster集群

news2024/11/19 17:23:41

目录

一.Redis集群模式

二、Redis 主从复制

2.1 主从复制介绍

2.2 主从复制的作用

2.3 主从复制流程:

三. Redis主从复制搭建

3.1 实验步骤

​ 3.2 修改master节点配置文件

 3.3 修改slave节点的配置文件

3.4 验证主从效果

3.4.1 主节点查看日志,插入一条数据

​3.4.2 从节点查看数据是否同步成功​编辑​编辑

 四. Redis哨兵模式

4.1 哨兵模式的作用

4.2 哨兵的结构

4.3  故障转移机制

五. 搭建Redis哨兵模式

5.1 实验步骤

 5.2 启动哨兵模式(所有少比节点操作)

​5.3 查看哨兵信息

​5.4 模拟故障

​六.Redis集群模式

6.1 集群的作用

6.2 Redis集群的数据

6.3 集群模式的主从复制模型

七.搭建Redis集群

7.1 开启集群功能

​7.3 所有节点启动redis服务​编辑

 7.4 在任意一个节点启动集群即可​编辑

​7.5 测试集群


一.Redis集群模式

redis群集有三种模式,分别是主从同步/复制,哨兵模式,Cluster,

二、Redis 主从复制

2.1 主从复制介绍

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

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

2.2 主从复制的作用

数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

2.3 主从复制流程:

(1)若启动一个slave机器进程,则它会向Master机器发送一个“sync command”命令,请求同步连接。
(2)无论是第一次连接还是重新连接,Master机器都会启动一个后台进程,将数据快照保存到数据文件中(执行rdb操作),同时Master还会记录修改数据的所有命令并缓存在数据文件中。
(3)后台进程完成缓存操作之后,Master机器就会向slave机器发送数据文件,slave端机器将数据文件保存到硬盘上,然后将其加载到内存中,接着Master机器就会将修改数据的所有操作一并发送给Slave端机器。若Slave出现故障导致宕机,则恢复正常后会自动重新连接。
(4)Master机器收到slave端机器的连接后,将其完整的数据文件发送给slave端机器,如果Mater同时收到多个slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的slave端机器,确保所有的slave端机器都正常。

三. Redis主从复制搭建

配置思路

(1)准备三台安装好了redis服务器的主机

(2)master节点修改监听地址为0.0.0.0表示任意地址,并且需要开启AOF持久化,重启服务

(3)Slave节点修改监听地址0.0.0.0,开启AOF持久化,需要额外在配置文件287行指定同步的master节点IP和端口,重启服务。在主服务器写入数据加以验证

3.1 实验步骤

安装节点Redis

 3.2 修改master节点配置文件

vim /etc/redis/6379.conf 
 bind 0.0.0.0                        
  #70行,修改监听地址为0.0.0.0(生产环境中需要填写物理网卡的IP)
 daemonize yes                     #137行,开启守护进程,后台启动 
 logfile /var/log/redis_6379.log   #172行,指定日志文件存放目录
 dir /var/lib/redis/6379           #264行,指定工作目录
 appendonly yes                    #700行,开启AOF持久化功能
​/etc/init.d/redis_6379 restart     #重启redis服务

 3.3 修改slave节点的配置文件

修改slave1的配置文件,之后scp传给slave2。

vim /etc/redis/6379.conf 
 bind 0.0.0.0                           #70行,修改监听地址为0.0.0.0(生产环境中需要填写物理网卡的IP)
 daemonize yes                     #137行,开启守护进程,后台启动 
 logfile /var/log/redis_6379.log   #172行,指定日志文件存放目录
 dir /var/lib/redis/6379           #264行,指定工作目录
 appendonly yes                    #700行,开启AOF持久化功能
 scp /etc/redis/6379.conf 192.168.192.12:/etc/redis/        #将配置文件传给slave2          ​/etc/init.d/redis_6379 restart          #重启redis服务                                                                             netstat -natp | grep redis               #查看主从服务器是否已建立连接

3.4 验证主从效果

3.4.1 主节点查看日志,插入一条数据

3.4.2 从节点查看数据是否同步成功

 四. Redis哨兵模式

主从切换技术的方法是:当服务器宕机后,需要手动一台从机切换为主机,这需要人工干预,不仅费时费力而且还会造成一段时间内服务不可用。为了解决主从复制的缺点,就有了哨兵机制

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

4.1 哨兵模式的作用

  • 监控: 哨兵会不断地检查主节点和从节点是否运作正常。
  • 自动故障转移: 当主节点不能正常工作时,哨兵会开始自动故障转移操,它会将失效主节点的其中一个从节点升级为新的主节点,并让其它从节点改为复制新的主节点。
  • 通知(提醒): 哨兵可以将故障转移的结果发送给客户端。

4.2 哨兵的结构

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

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

4.3  故障转移机制

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

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

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

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

1. 将某一个从节点升级为新的主节点,让其它从节点指向新的主节点;
2. 若原主节点恢复也变成从节点,并指向新的主节点;
3. 通知客户端主节点已经更换。

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

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

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

五. 搭建Redis哨兵模式

实验环境:生产环境中使用对应数量节点的服务器作为哨兵节点,实验环境中如果电脑性能不够可以把哨兵搭建在原虚机上。

5.1 实验步骤

修改哨兵节点的配置文件sentindel.conf

修改Sentinel-1的配置文件,之后scp传给另外2个哨兵节点

vim /opt/redis-5.0.7/sentinel.conf
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.192.10 6379 2  #84行,修改
#指定该哨兵节点监控192.168.192.10:6379这个主节点,该主节点的名称是mymaster。
#最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移

sentinel down-after-milliseconds mymaster 3000  #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000  #146行,同一个sentinel对同一个master两次failover之间的间隔时间(180秒)

#传给两外2个哨兵节点
scp /opt/redis-5.0.7/sentinel.conf  192.168.192.14:/opt/redis-5.0.7/
scp /opt/redis-5.0.7/sentinel.conf  192.168.192.15:/opt/redis-5.0.7/

修改哨兵的配置文件,vim /opt/redis-5.0.7/sentinel.conf

 5.2 启动哨兵模式(所有少比节点操作)

#启动三台哨兵
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &

5.3 查看哨兵信息

#在哨兵节点查看
[root@localhost ~]# redis-cli -p 26379 info Sentinel
# Sentinel
sentinel_masters:1     #一台主节点
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.192.10:6379,slaves=2,sentinels=3
#可以看到主节点地址,2台从节点,3台哨兵

5.4 模拟故障

杀死 Master 节点上redis-server的进程号:在哨兵上查看主节点是否切换成功: 

六.Redis集群模式

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

集群由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。

6.1 集群的作用

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

集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。
Redis单机内存大小受限问题,在介绍持久化和主从复制时都有提及;例如,如果单机内存太大,bgsave和bgrewriteaof的fork操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。
(2)高可用: 集群支持主从复制和主节点的自动故障转移(与哨兵类似);当任一节点发生故障时,集群仍然可以对外提供服务。

通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现较为完善的高可用方案。

6.2 Redis集群的数据

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

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

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

每个Key通过CRC16校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

6.3 集群模式的主从复制模型

1.  集群中具有A、B、C三个节点,如果节点B失败了,整个集群就会因缺少5461-10922这个范围        的槽而不可以用。
2. 为每个节点添加一个从节点A1、B1、C1整个集群便有三个Master节点和三个slave节点组成,         在节点B失败后,集群选举B1位为主节点继续服务。当B和B1都失败后,集群将不可用。

七.搭建Redis集群

7.1 开启集群功能

修改任意一台服务器配置文件,在通过scp命令传给其他主机

 将配置文件传给另外5个节点 之后每个节点要修改监听地址为自己的IP

7.3 所有节点启动redis服务 7.4 在任意一个节点启动集群即可

 7.5 测试集群





 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

数据图表-FineReport复选按钮控件

1. 概述 1.1 版本 报表服务器版本 功能变更 11.0 -- 1.2 应用场景 1.2.1 填报控件 填报报表中可以通过该控件执行批量选中操作,如下图所示: 1.2.2 参数控件 参数面板处可以通过该控件执行查询操作,如下图所示: 1.3 如何添加…

APP上架需要的准备和流程

一上架iOS应用市场前的准备​ 1.选择适合自己的苹果开发者账号​ (1) 个人账号(Individual):费用99美金一年, 该账号在App Store销售者只能显示个人的ID,比如zhitian zhang,单人使用。个人账号只能有一个开发者。100…

护眼灯护眼有效果吗?一文了解护眼灯到底有没有用

关于护眼灯是否对预防近视、保护眼睛有效,很多人都会有怀疑态度,会认为是智商税,其实这也因人而异,有的人眼睛天生不太敏感,所以对护眼灯的光线感知不强,很难体会到实际的作用;有的人也买到较差…

ccf寻宝!大冒险!python满分(敲开心~)

寻宝 大冒险 题目传送:http://118.190.20.162/view.page?gpidT147 思路及代码: 核心点就是哈希。 之前刷的是70分,找不到之前的代码了,大概是建了一个很大的表,然后一点点比较吧。 今天再刷,上来就是…

安装ADDIS

网状meta分析,安装ADDIS 下载ADDIS、java 百度网盘下载地址: 链接:https://pan.baidu.com/s/15tqDxXUWZ2q3qOS2Fglvu 提取码:6fyw 配置java环境变量 双击系统变量中的Path 复制百度网盘下载后的jdk-11/bin的路径&#xff0c…

Apereo-cas 4.x反序列化漏洞复现

转载https://www.freebuf.com/vuls/226149.html 建议再查看https://xz.aliyun.com/t/7032#toc-7的 0x01 前言放假前看到很多文章对这个漏洞进行分析复现,又因为过年期间的特殊情况,实在是无聊至极,所以自己也来学习一下,顺便恶补一…

OceanBase-概述

文章目录背景产品家族分布式数据库社区版(当前为V4.0)企业版公有云总结核心功能适用场景工具体系迁移评估工具OMA迁移工具OMS开发工具ODC权限管理运维工具OCP生态产品图数据库时序数据库背景 前段时间学习了下tidb的体系架构,了解了其运行原…

vulhub中间件解析漏洞复现

vulhub中间件解析漏洞复现 🍉 shell 此环境来自vulhub工程: https://github.com/vulhub/vulhub 以下测试环境为ubuntu 20.04 🍉目录vulhub中间件解析漏洞复现Apache HTTPD 换行解析漏洞(CVE-2017-15715)漏洞原理及…

Redis--高级篇 D4 Redis分片集群

1、分片集群的结构 2、搭建分片集群 2.1 分片集群结构 分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下: 这里我们会在同一台虚拟机中开启6个r…

Java多态详解

前言 多态是同一个行为具有多个不同的表现形态或形式的能力 比如: 小阿giao,他是一名主播,同样也是一个人; 小阿giao是一个对象; 这个对象既有主播形态,也有人类形态; 即:一个对象…

醛基-PEG-纤维二糖 Cellobiose-CHO 纤维二糖-醛基

醛基-PEG-纤维二糖 Cellobiose-CHO 纤维二糖-醛基 羰基中的一个共价键跟氢原子相连而组成的一价原子团,叫做醛基,醛基结构简式是-CHO,醛基是亲水基团,因此有醛基的有机物(如乙醛等)有一定的水溶性。 中…

Unity有哪些适合拿来练手的游戏项目?

首先推荐一篇文章,其中涵盖海量Unity和C#的书籍、demo等海量干货。 文章链接:Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员? Unity有哪些适合练手的游戏项目?还是老规矩,全文无付费…

【软件STM32cubeIDE下STM32F4xx使用DMA+定时器+推PWM+点亮灯带WS2812相关-进阶(全数据流版)】

2TOC (1)前言 (1)起源 最近作了有关ws2812灯带的后续测试,这源于一个简单的问题。 如果用STM32F4点灯带,每个DMA数据流都用上,那么可以点亮多少条灯带? 实际情况更加复杂些&#x…

JAVA EE,一文彻底聊明白

关于JAVA EE的论述,JAVA EE和Spring的论述在第二、三章节。 目录 1.JAVA的发展史 2.JAVA EE 3.JAVA EE和Spring 1.JAVA的发展史 JAVA语言于1995年面世,主要开发者为——James Gosline,后被称为JAVA语言之父。最早该语言叫Oak,…

写给Java应用开发看的Elasticsearch调优手册

随着数据量的增长,MySQL在很多场景下,似乎已经无能为力了,所以有不少应用的数据从MySQL迁移到了Elasticsearch,我们的应用就在其中。由于开发时间紧张,所以仅仅只是了解了下Elasticsearch的基本知识,随便写…

[HDF5]如何使用CMake一起编译自己的代码和HDF5库

以一个实际项目来举例 目录 一.目录结构 二.CMakeLists.txt内容 三.执行CMakeLists命令 一.目录结构 1.build放CMake执行后生成的所有的内容,包括最后的工程或可执行文件等; 2.include放工程的头文件,以及HDF5的头文件,可以直接把HDF5中…

顶象业务安全情报——企业一眼“看透”黑灰产

不可否认,随着互联网的发展,黑灰产们也变得越来越“聪明”。它们不仅熟悉业务流程以及防护逻辑,并且能够熟练运用自动化、智能化的新兴技术实施攻击或诈骗行为,且极难识别。对购物、金融、社交、出行、教育、游戏等行业造成极大业…

3 个月前被裁员了,心情跌落谷底,直到我看到了这本神书…

3个月前的某一天,正在愉快的打工,突然被喊去谈话,然后就被辞退了。。 加入了找工作的大军 然而,因为疫情,因为大专学历的我,找工作比以往都艰难了许多 很多,纯粹就是因为学历,都不…

你想知道刷题的秘密吗?一篇博客让你明白什么是OJ题,如何刷OJ题,并深入浅出的带你刷遍顺序表的OJ题(小白必看)

目录 0.前言 1.什么是OJ 1.1 OJ简述 1.2 OJ的分类(尤其接口型OJ,带你剖析得明明白白) 1.3 接口型OJ的输入型参数 2. 剑指 Offer 56 - I. 数组中数字出现的次数 3. 88. 合并两个有序数组 4. 27.移除元素 5. 26. 删除有序数组中的重复…

Linux系统配置JDK环境变量

1、下载 1.1、Oracle官方下载地址:https://www.oracle.com/cn/java/technologies/downloads/#java8 1.2、同意协议,并点击Download 1.3、账号密码登录,没有可以创建一个 1.4、登录成功后就直接下载了 2、配置 2.1、下载好的压缩包上传到Lin…