Redis集群架构搭建——主从、哨兵、集群

news2024/12/24 11:44:35

上一篇文章Ubuntu上通过源码方式安装Redis已经介绍了如何安装redis,在这篇文章中,将会教大家搭建Redis的几种高可用的架构:主从架构、哨兵集群、Cluster集群。

本篇文章使用的redis版本为6.2.13,不同版本的配置可能有略微的区别,比如replicaof/slaveof。

因为设备有限,只能在一台Ubuntu虚拟机上通过不同端口启动多个redis服务,

 注意,启动redis的命令不要直接复制,否则可能会提示“没有那个文件或目录”,自己手敲的命令就可以正常执行(血的教训)。

目录

一、搭建主从架构

搭建主节点

复制配置文件

修改配置文件

启动主节点

搭建从节点

复制配置文件

修改配置文件 

启动从节点

二、搭建哨兵集群架构

增加一个从节点

搭建哨兵节点

复制sentinel.conf

修改设置

启动哨兵节点

查看集群信息

测试哨兵选主

三、搭建高可用集群架构


一、搭建主从架构

主从架构的redis集群模式最低配置是一个master一个slave,所以要启动两个redis服务。

搭建主节点

复制配置文件

切换到redis安装目录,复制一份配置文件

cp redis.conf redis_6379.conf

如下图所示:

修改配置文件

修改一下redis_6379.conf,通过Ctrl+F搜索并修改以下配置。

# bind 127.0.0.1 -::1

protected-mode no

# 设置启动端口号
port 6379

# 设置后台启动
daemonize yes

# 进程ID保存的文件
pidfile /var/run/redis_6379.pid

# 设置日志文件名
logfile "redis_6379.log"

启动主节点

按照上一步修改完redis_6379.config之后,通过下面的命令启动redis

./src/redis-server redis_6379.conf

如图,查看日志文件,redis成功启动了

搭建从节点

复制配置文件

切换到redis安装目录,复制一份配置文件,直接复制之前的6379文件,懒得重复修改一些设置。

cp redis_6379.conf redis_6389.conf

修改配置文件 

修改一下redis_6389.conf,通过Ctrl+F搜索并修改以下配置。

# 设置启动端口号
port 6389

# 从节点只能处理读操作,当前版本redis默认开启的配置
replica-read-only yes

# 配置redis主节点ip地址和端口号
replicaof 192.168.254.128 6379

# 进程ID保存的文件
pidfile /var/run/redis_6389.pid

# 保存数据的文件地址
dir /usr/local/redis/6389/data

# 日志文件的文件名
logfile "/usr/local/redis/6389/logs/redis_6389.log"

注意:为了避免文件找不到问题,需要先在/usr/local下创建对应的目录

/redis/6389/data

/redis/6389/logs

启动从节点

通过以下命令启动从节点

./src/redis‐server redis_6389.conf

如下图,slave节点成功启动,并从主节点6379同步了数据。

然后在主节点设置几个key,看一下是否会同步到从节点:

通过redis-cli命令连接主节点(默认连接的是端口号是6379的redis节点),可以通过-p指定端口号。第一次使用redis-cli可能会提示安装redis-tools,复制命令回车即可。

设置一个name

从节点上获取name

至此,redis主从架构的搭建就圆满完成了。

二、搭建哨兵集群架构

哨兵集群架构其实就是在主从架构的基础上,引入了哨兵节点,哨兵不处理客户端的读写请求,之负责监控主节点和从节点,当发现主节点挂了,会重新选举一个主节点,选举主节点的过程是通过多个哨兵投票得到的,只有超过半数的哨兵同意选举才能成立,所以哨兵的数量要设置成奇数,防止平票重新选举的情况发生。因此,哨兵集群架构最少要有3个哨兵节点。

增加一个从节点

在第一节主从架构的基础上,再搭建一个redis节点6399。

从6389节点复制一份配置文件

cp redis_6389.conf redis_6399.conf

然后修改下面这些配置就可以了(能偷懒就偷懒ovo)

port 6399

pidfile /var/run/redis_6399.pid

logfile "/usr/local/redis/6399/logs/redis_6399.log"

dir /usr/local/redis/6399/data

然后输入命令启动

./src/redis‐server redis_6399.conf

同样的,它会从主节点6379同步数据。

搭建哨兵节点

复制sentinel.conf

cp sentinel.conf sentinel_6380.conf 

修改设置

port 6380

daemonize yes

logfile "/usr/local/redis/6380/logs/redis_6380.log"

dir /usr/local/redis/6380/data

pidfile /var/run/redis_6380.pid

# 配置主节点ip和端口号,最后一个2表示当哨兵节点中两个通过选举结果时,才设置候选节点为master
# 一般设置成哨兵节点数/2 + 1
sentinel monitor mymaster 192.168.254.128 6379 2

然后按照类似的方法创建两个哨兵节点6390和6400

复制

cp sentinel_6380.conf sentinel_6390.conf

替换6380为6390,然后同理创建6400

启动哨兵节点

src/redis-sentinel sentinel_6380.conf

src/redis-sentinel sentinel_6390.conf

src/redis-sentinel sentinel_6400.conf

启动完成后,点击任意一个配置文件,发现文件末尾多了一段内容。

查看集群信息

连接6400端口的哨兵节点,通过redis的info命令查看到整个集群的信息

redis-cli -p 6400

info

测试哨兵选主

通过kill命令杀死redis主节点,看一下能否完成新的master选举。

如上图,主节点已经下线了,连接其他两个从节点中任意一个,例如,连接6389

发现6389被设置成了主节点

至此,redis的哨兵集群架构也搭建完成了。

三、搭建高可用集群架构

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

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

相关文章

C++:list

目录 List的模拟实现 List节点类 List链表结构 List迭代器类 结构 T& operator*(); T& operator->(); Self& operator(); Self operator(int); Self& operator--(); Self& operator--(int); bool operator!(const Self& l); bool oper…

JDK、JRE 和 JVM 的区别和联系

三者关系 就这三者的关系而言,jvm是jre的子集,jre是jdk的子集,具体关系如下图: Java的执行流程 对于一个Java程序,其执行流程大致如下: 开发人员使用JDK编写和编译Java源代码,生成Java字节码文…

二叉树层序遍历及判断完全二叉树

个人主页:Lei宝啊 愿所有美好如期而遇 目录 二叉树层序遍历: 判断完全二叉树: 二叉树层序遍历: 层序遍历就是一层一层,从上到下遍历,上图遍历结果为:4 2 7 1 3 6 9 思路: 通过队列来实现层序…

lenovo联想笔记本电脑ThinkPad X13 AMD Gen2(20XH,20XJ)原装出厂Windows10系统镜像

联想原厂Win10系统,自带所有驱动、出厂主题壁纸、系统属性联想LOGO专属标志、Office办公软件、联想电脑管家等预装程序 链接:百度网盘 请输入提取码 提取码:dolg 适用于型号:20XL,20XJ,20XG,21A1,20XK,20XH,20XF,21A0 所需要…

1.vue3脚手架在vscode下面建立

一、下载安装node.js Node.js (nodejs.org) 二、安装vue3脚手架 #添加项目脚手架 npm install -g vue/cli 三、建立项目 #项目建立 vue create {appname} 测试项目安装成功:运行npm run serve命令 npm run serve 证明脚手架、项目环境已配置好 四、添加配件&#x…

5+非肿瘤+铁死亡+实验验证生信思路解析

今天给同学们分享一篇非肿瘤铁死亡实验验证的生信文章“Identification and validation of ferroptosis-related gene signature in intervertebral disc degeneration”,这篇文章于2023年2月6日发表在Front Endocrinol (Lausanne)期刊上,影响因子为5.2。…

Windows专业版的Docker下载、安装与启用Kubenetes、访问Kubernetes Dashboard

到Docker 官网https://www.docker.com/ 下载windows操作系统对应的docker软件安装 Docker Desktop Installer-Win.exe 2023-09版本是4.23 下载后双击安装 重启windows后,继续安装 接受服务继续安装 解决碰到的Docker Engine stopped 打开 控制面板》程序》启用或关…

Java-day15(Java常用类)

Java常用类 1.String类 public class test1 {/** String:代表不可变的字符序列,底层使用char[]存放* String是final的 * */Testpublic void test() {String str1 "Java EE";String str2 "Java EE";String str3 new String("…

用sublime测试正则表达式

1 打开sublime 2.使用ctrlf快捷键 3.开启如下功能 4.测试

什么是语法糖?Java中有哪些语法糖?

什么是语法糖?Java中有哪些语法糖? 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对…

【操作系统笔记十三】Shell脚本编程

什么是 shell shell 就是命令解释器,用于解释用户对操作系统的操作,比如当我们在终端上执行 ls ,然后回车,这个时候会由 shell 来解释这个命令,并且执行解释后的命令,进而对操作系统进行操作。 在 Centos…

初识软件工程

软件工程是一门涵盖软件开发、维护和管理的学科,它通过应用工程化的原则和方法来提高软件系统的质量和可靠性。在当今数字化和信息化的时代,软件工程对于现代社会的各个领域都具有至关重要的作用。 基本概念? 计算机系统中与硬件相互依存的一…

【力扣】300. 最长递增子序列 <动态规划>

【力扣】300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2…

Wiki.js - 下一代的开源Wiki软件

简介:在众多开源的Wiki软件中,Wiki.js无疑是一个独特且现代的选择。基于Node.js构建,使用了最新的Web技术,Wiki.js为用户提供了一个美观且功能丰富的界面,同时还保留了强大的扩展性和自定义性。无论你是为个人、团队或…

一文掌握CodiMD安装与使用

简介:CodiMD 是一个基于 Markdown 语言的实时协作文档编辑器,它允许多个用户在同一个文档上进行实时编辑。CodiMD 的前身是 HackMD,但为了满足更开放的开源社区需求,CodiMD 作为其社区版本独立出来。 优势: 1. 开源且…

9+单细胞+实验验证,探讨单基因对癌细胞转移作用的思路方向

今天给同学们分享一篇单细胞实验的生信文章“Identification of RAC1 in promoting brain metastasis of lung adenocarcinoma using single-cell transcriptome sequencing”,这篇文章于2023年5月18日发表在Cell Death Dis期刊上,影响因子为9。 本研究旨…

2023研究生数学建模E题保姆级思路 出血性脑卒中临床智能诊疗

本次E题是一道J机器学习题目,难度也比较高,该题一般是有正确结果的,容易踩坑,不太建议小白选择,小白可以选择D题,D题思路也可以看另一篇文章,总的难度都不算低,这三道的难度接近&…

科目三基础四项(一)

​ 第一天,基础操作,仪表,方向,挡位 按照模块来 1、方向盘两手在两侧 ​ 编辑 转向时的角度,只用:向左540,向右180 向左打和向右打的角度要抵消,回正 掉头向左打满再回 注意…

【LeetCode热题100】--56.合并区间

56.合并区间 排序: 如果按照区间的左端点排序,那么在排完序的列表中,可以合并的区间一定是连续的,如下图所示,标记为蓝色、黄色和绿色的区间分别可以合并为一个大区间,它们在排完序的列表中是连续的 算法&a…

Learn Prompt-Midjourney 图片生成:快速开始

Discord 注册​ Midjourney 目前是在 Discord 频道上运行。我们可以通过 Discord 的机器人进行指令操作,最终返回图片。 我们可以直接点击进入Midjourney Discord频道。当然如果你直接搜索进入Midjourney的官网,你同样可以通过点击右下角的绿色按钮Joi…