Redis6 搭建主从集群架构

文章目录

  • 搭建Redis主从集群架构
    • 1.集群结构
    • 2.准备实例和配置
    • 3.启动
    • 4.开启主从关系
    • 5.测试

搭建Redis主从集群架构

安装部署单机版Redis6可参考:

安装部署单机版Redis6

1.集群结构

我们搭建的主从集群结构如图:
在这里插入图片描述

我们计划是在一台虚拟机里去部署三个Redis实例来模拟主从集群,那要想在一台虚拟机要准备三个实例,我们就必须得准备三个不同的配置文件和目录,让他们分别去运行,互相不干扰。所以我们要做的第一件事其实是创建三个文件夹,分别用端口来命名,这样方便我们将来去找。

共包含三个节点,一个master主节点,两个slave 从节点。

这里我们会在同一台虚拟机中开启3个redis实例,模拟主从集群,信息如下:

IPPORT角色
192.168.10.117001master
192.168.10.117002slave
192.168.10.117003slave

2.准备实例和配置

要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。

1)创建目录

我们创建三个文件夹,名字分别叫7001、7002、7003:

mkdir 7001 7002 7003

在这里插入图片描述

接下来还要给这三个目录准备配置文件,因为每一个实例都要有自己独立的配置文件

2)恢复原始配置
那有的同学就有疑问了,为什么我们要把RDB开启,把 AOF 关闭呢?这个我们在后边学习了主从同步的原理,大家就能明白了。

修改redis-6.2.4/redis.conf文件,将其中的持久化模式改为默认的RDB模式,AOF保持关闭状态。

# 开启RDB
# save ""
save 3600 1
save 300 100
save 60 10000# 关闭AOF
appendonly nobind 0.0.0.0

3)拷贝配置文件到每个实例目录
然后将redis-6.2.4/redis.conf文件拷贝到三个目录中(在Redis安装目录下进行操作,我的在/usr/local/software/):

# 方式一:逐个拷贝
cp redis-6.2.6/redis.conf 7001
cp redis-6.2.6/redis.conf 7002
cp redis-6.2.6/redis.conf 7003# 方式二:管道组合命令,一键拷贝
echo 7001 7002 7003 | xargs -t -n 1 cp redis-6.2.6/redis.conf

在这里插入图片描述

4)修改每个实例的端口、工作目录

修改每个文件夹内的配置文件,将端口分别修改为7001、7002、7003,将rdb文件保存位置都修改为自己所在目录:
例如7001:

port 7001
dir /usr/local/software/7001/

在这里插入图片描述
在这里插入图片描述

5)修改每个实例的声明IP
虚拟机本身有多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信息,格式如下:

# redis实例的声明 IP
replica-announce-ip 192.168.10.11

每个目录都要改,我们一键完成修改(在/usr/local/software/目录执行下列命令):

printf '%s\n' 7001 7002 7003 | xargs -I{} -t sed -i '1a replica-announce-ip 192.168.10.11' {}/redis.conf

在这里插入图片描述
查看是否修改成功
在这里插入图片描述

3.启动

为了方便查看日志,我们打开3个ssh窗口,分别启动3个redis实例,启动命令:

# 第1个
redis-server 7001/redis.conf
# 第2个
redis-server 7002/redis.conf
# 第3个
redis-server 7003/redis.conf

在这里插入图片描述
启动后:
在这里插入图片描述

如果要一键停止,可以运行下面命令:

printf '%s\n' 7001 7002 7003 | xargs -I{} -t redis-cli -p {} shutdown

但是目前它们三个之间有没有主从关系。其实这三个线是独立的三个Redis。

4.开启主从关系

现在三个实例还没有任何关系,要配置主从可以使用replicaof 或者slaveof(5.0以前)命令。

有临时和永久两种模式:

  • 修改配置文件(永久生效)
在redis.conf中添加一行配置:slaveof 主节点ip 主节点端口
slaveof <masterip> <masterport>
  • 使用redis-cli客户端连接到redis服务,执行slaveof命令(重启后失效):
slaveof <masterip> <masterport>
slaveof 主节点ip 主节点端口

注意:在5.0以后新增命令replicaof,与salveof效果一致。

这里我们为了演示方便,使用方式二。

通过redis-cli命令连接7002,执行下面命令:

# 连接 7002
redis-cli -p 7002
# 执行slaveof
slaveof 192.168.10.11 7001

通过redis-cli命令连接7003,执行下面命令:

# 连接 7003
redis-cli -p 7003
# 执行slaveof
slaveof 192.168.10.11 7001

在这里插入图片描述

然后连接 7001节点,查看集群状态:

# 连接 7001
redis-cli -p 7001
# 查看状态
info replication

在这里插入图片描述
在这里插入图片描述

5.测试

执行下列操作以测试:

  • 利用redis-cli连接7001,执行set num 123
    在这里插入图片描述

  • 利用redis-cli连接7002,执行get num,再执行set num 666
    在这里插入图片描述

  • 利用redis-cli连接7003,执行get num,再执行set num 888
    在这里插入图片描述

可以发现,只有在7001这个master节点上可以执行写操作,7002和7003这两个slave节点只能执行读操作。
是不是天然的就实现了读写分离了?主节点做写操作,从节点做读操作。

其实主从的搭建非常的简单,就是你启动三个实例,我们因为是在同一个机器下,所以要改端口什么的,如果你是在不同机器,就不用去改端口之类的东西了,直接咔咔启动三台就行了,然后在从节点上执行命令就行了

slaveof <masterip> <masterport>

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

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

相关文章

腾讯云轻量服务器Windows系统使用IIS实现公网直链访问文件

windows方便所以服务器装的windows系统&#xff0c;windows默认不能分享文件直链&#xff0c;只要用IIS建个站点就行了 先弄一台有公网ip的windows系统服务器打开服务器管理器&#xff0c;添加这个 打开IIS右键添加网站 程序池默认&#xff0c;路径选个文件夹作为网站根目录 …

HSRP和VRRP

VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由器冗余协议&#xff09; 是一种网络层的容错协议&#xff0c;主要用于在多台路由器之间提供默认网关冗余。在IP网络中&#xff0c;当一个子网有多个路由器时&#xff0c;VRRP可以确保在主用路由器失效…

css3中nth-child属性作用及用法剖析

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 标题&#xff1a;CSS3中nth-child属性作用及用法剖析 摘要&#xff1a;CSS3中的nth-child选择器允许我们根据元素位置来定位特定的元素…

JAVA开发第一个Springboot WebApi项目

一、创建项目 1、用IDEA新建一个SpringBoot项目 注意JDK与Java版本的匹配 2、添加依赖 (1)、Lombok (2)、Spring Web (3)、Mybatis Framework (4)、MySqlDriver 项目中的配置 pom.xml 如下 <?xml version="1.0" encoding="UTF-8"?> …

详解 QT 多线程 TCP 文件接收实例

要求&#xff1a;在QT程序中写一个多线程的软件&#xff0c;使用共享内存实现TCP数据接收&#xff0c;发送与处理&#xff0c;三个不同进程间的相互通信&#xff0c;并使用哨兵线程监控各个进程是否出现堵塞。 分析&#xff1a;在 Qt 程序中实现多线程的软件&#xff0c;使用共…

Idea 开启热部署 Devtools

一、背景 当我们在 idea 中修改代码的时候&#xff0c;idea 并不会自动的重启去响应我们修改的内容&#xff0c;而是需要我们手动的重新启动项目才可以生效&#xff0c;这个是非常不方便&#xff0c;但是可以在 idea 中开启这个自动热部署的功能。 我的 idea 版本为 2022.3.3 。…

Spring MVC RequestMappingHandlerMapping原理解析

在Spring MVC框架中&#xff0c;路由机制是实现HTTP请求到具体处理器方法映射的核心。RequestMappingHandlerMapping是Spring MVC中用于处理此类映射的核心组件。与SimpleUrlHandlerMapping不同&#xff0c;RequestMappingHandlerMapping是基于注解驱动的&#xff0c;它利用Req…

C++STL【list链表】

list 1. list介绍 list文档&#xff08;非官方&#xff09; 官方文档list是双向带头循环链表&#xff0c;它可以在常数范围内的任意位置进行插入和删除操作。list的迭代器是双向迭代器(bidirectional iterator)&#xff0c;它可以前后双向迭代。 由容器的底层结构决定&#xf…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RowSplit容器组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之RowSplit容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、RowSplit容器组件 将子组件横向布局&#xff0c;并在每个子组件之间插入一…

数据处理分类、数据仓库产生原因

个人看书学习心得及日常复习思考记录&#xff0c;个人随笔。 数据处理分类 操作型数据处理&#xff08;基础&#xff09; 操作型数据处理主要完成数据的收集、整理、存储、查询和增删改操作等&#xff0c;主要由一般工作人员和基层管理人员完成。 联机事务处理系统&#xff…

Spring MVC HandlerMethodArgumentResolver原理解析

在Spring MVC框架中&#xff0c;HandlerMethodArgumentResolver接口扮演着非常重要的角色。它负责解析请求中的参数&#xff0c;并将其转换为处理器方法所需要的参数值。这种解析过程确保了HTTP请求的参数能够被正确地传递给后端控制器&#xff0c;从而实现请求到处理器方法的绑…

网民用户身份信息实名认证-身份证号+姓名实名认证 GO语言接口代码

翔云身份证二要素实名认证接口&#xff0c;是保护网民数字身份安全的重要防线&#xff0c;更是人们心中守护信息安全的坚实盾牌。有效阻止了网民信息泄露。 以下是go语言调用翔云身份证号实名认证API的代码&#xff1a; package mainimport ("fmt""bytes"…

Common Sense Machines(CSM):立志成为图像生成适用于游戏引擎的3D资产AI产品

详细说明 Common Sense Machines&#xff08;CMS&#xff09;&#xff1a;立志成为图像生成适用于游戏引擎的3D资产AI产品-喜好儿aigc详细说明&#xff1a;https://heehel.com/CSM-3d 官方网站&#xff1a;https://www.csm.ai/ 使用体验网址&#xff1a;https://3d.csm.ai/ 来…

lowcode-engine接入编辑器

https://lowcode-engine.cn/site/docs/guide/create/useEditor 方案1 pnpm init pnpm add "alilc/create-elementlatest"pnpm create "alilc/element" editor-project-name选择编辑器 进入执行pnpm install命令安装包 pnpm start报错 pnpm add &qu…

苹果曝出两个 iOS 系统 0-Day 漏洞

最近&#xff0c;苹果公司发布了紧急安全更新&#xff0c;解决了两个 iOS 零日漏洞。这些漏洞存在于 iOS 内核&#xff08;CVE-2024-23225&#xff09;和 RTKit&#xff08;CVE-2024-23296&#xff09;中&#xff0c;威胁攻击者可利用其绕过内核内存保护&#xff0c;这就给了具…

解决vue项目本地开发完成后部署到服务器后报404的问题

一、如何部署 前后端分离开发模式下&#xff0c;前后端是独立布署的&#xff0c;前端只需要将最后的构建物上传至目标服务器的web容器指定的静态目录下即可 我们知道vue项目在构建后&#xff0c;是生成一系列的静态文件 常规布署我们只需要将这个目录上传至目标服务器即可 /…

linux循环之while循环

1.while循环语法 while 循环控制条件 do commands done #这种结构在循环的开头判断循环控制条件是否满足&#xff0c;如果条件一直满足&#xff0c;那么就一直循环下去。与for循环的区别是&#xff0c;while循环更适合在循环次数未知的情况下使用。 2.while循环案例 [ro…

ChatGPT提问技巧——控制温度和TOP-P样本

ChatGPT提问技巧——控制温度和TOP-P样本 “控制温度和Top-P抽样”在自然语言处理中&#xff0c;控制温度是指通过调整生成文本的随机性和多样性&#xff0c;而Top-P抽样是一种生成文本的策略&#xff0c;它选择概率最高的前P个词作为候选词汇。这两个技术常用于生成文本的质量…

Android学习笔记 Dialog

## Android Dialog 基础用法 Dialog 类是对话框的基类&#xff0c;但应该避免直接实例化 Dialog&#xff0c;而应使用其子类&#xff0c;比如 AlertDialog。此类对话框可以显示标题、提示信息、按钮、可选择项列表或自定义布局等。另外还有 DatePickerDialog 或 TimePickerDia…

文本溢出隐藏 显示省略号,鼠标悬浮展示 el-tooltip(TooltipIsShowMixin封装)

目录 mixins 封装使用 TooltipIsShowMixin效果展示 mixins 封装 TooltipIsShowMixin.js export const TooltipIsShowMixin {data() {return {tooltipIsShow: false}},methods: {tooltipIsDisHandler(className) {this.$nextTick(() > {const dom document.querySelector…