Redis 集群搭建教程

news2024/11/25 7:21:13

一、介绍

Redis 集群有着高可用、易扩展、更好的性能等优势,本文主要是实战搭建一个三主三从的 Redis 集群。

正常来说,搭建 Redis 集群需要 6 台服务器。为了简单一点,本文通过一台服务器,6 个端口,搭建一个 Redis 的伪集群。

二、准备环境

IP 地址端口号
10.211.55.48001~8006

三、安装 Redis

3.1、安装 C/C++ 环境,编译 Redis 安装包使用

yum -y install gcc gcc-c++ make  

3.2、下载 Redis 安装包

# 切换软件安装目录  
cd /usr/local/  
  
# 新建 redis 安装目录  
mkdir redis  
  
# 切换到 redis 安装目录  
cd redis  
  
# 下载 redis 安装包  
wget http://download.redis.io/releases/redis-6.2.5.tar.gz  
  
# 解压 redis 安装包  
tar -zxvf redis-6.2.5.tar.gz  

3.3、编译 redis

# 进入解压后的 Redis 目录  
cd redis-6.2.5/  
  
# 编译  
make  
  
# 进入编译好的目录(编译成功后 src 目录下会出现编译后的 Redis 服务程序 redis-server)  
cd src  

image-20230921170229468

四、Redis 集群配置

4.1、创建集群相关目录

# 切换目录  
/usr/local/redis  
  
# 创建 Redis 集群目录  
mkdir rediscluster  
  
# 进入 rediscluster 目录  
cd rediscluster  
  
# 批量创建六个文件夹  
mkdir ./node800{1,2,3,4,5,6}  

image-20230924113834429

4.2、redis.conf 文件配置

# 进入 redis.conf 所在目录  
cd /usr/local/redis/redis-6.2.5  
  
# 编辑 redis.conf 文件  
vim redis.conf  

需要修改的配置内容如下

# 设置端口  
port 8001  
  
#去掉绑定的 ip  
#bind 127.0.0.1  
  
#关闭保护模式  
protected-mode no  
  
# 指定数据文件存放位置,必须要指定不同的目录,不然会丢失数据,默认 dir ./。  
dir /usr/local/redis/rediscluster/node8001  
  
# 开启集群模式  
cluster-enabled yes  
  
# 集群节点配置文件,这里的800x最好和port对应上,redis集群自动创建、自动更新  
cluster-config-file nodes-8001.conf  
  
# 集群超时时间,节点超过这个时间没反应就断定是宕机  
cluster-node-timeout 5000  
  
# 开启AOF持久化  
appendonly yes  
  
# 如果要设置密码,需要增加如下配置:  
# 设置redis访问密码  
  
requirepass 123456  
# 设置集群节点间访问密码,跟上面一致  
masterauth 123456  

4.3、拷贝 redis.conf 到集群相关目录

# 进入 redis.conf 目录  
cd /usr/local/redis/redis-6.2.5  
  
# 拷贝 redis.conf 文件到 node800x 相关目录  
cp redis.conf ../rediscluster/node8001  
cp redis.conf ../rediscluster/node8002  
cp redis.conf ../rediscluster/node8003  
cp redis.conf ../rediscluster/node8004  
cp redis.conf ../rediscluster/node8005  
cp redis.conf ../rediscluster/node8006  

4.4、将 node8001 ~ node8006 目录下的 redis.conf 文件的端口号一个一个替换

image-20230925112602941

4.5、启动 Redis 集群

# 切换到 redis 的 src 目录  
cd /usr/local/redis/redis-6.2.5/src  
  
# 一个一个启动 redis  
./redis-server ../../rediscluster/node8001/redis.conf  
./redis-server ../../rediscluster/node8002/redis.conf  
./redis-server ../../rediscluster/node8003/redis.conf  
./redis-server ../../rediscluster/node8004/redis.conf  
./redis-server ../../rediscluster/node8005/redis.conf  
./redis-server ../../rediscluster/node8006/redis.conf  
  
# 查看 redis 的启动状态  
ps -ef | grep redis  

image-20230925142604828

# 切换到 redis 的 src 目录  
cd /usr/local/redis/redis-6.2.5/src  
  
# 组建 redis 集群(注意,执行下面这个命令的时候,要在一行,不要换行)  
./redis-cli -a 123456 --cluster create 10.211.55.4:8001 10.211.55.4:8002 10.211.55.4:8003 10.211.55.4:8004 10.211.55.4:8005 10.211.55.4:8006 --cluster-replicas 1  

image-20230925143613901

五、连接 Redis 集群

5.1、连接方式

使用 Another Redis Desktop Manager 客户端连接集群的方式如下。连接以后就可以和平常一样使用 redis 了。

image-20230925143948182

5.2、集群相关命令

# 假设先在 redis 塞一个 key value 键值对  
set key value  
  
# 查看 key 为 key 的 slot 值  
cluster keyslot key  
  
# 查看slot信息  
cluster slots  
  
# 查看集群相关信息  
cluster info  
  
# 查看集群中节点的相关信息  
cluster nodes  

六、故障模拟

正常情况下的集群,杀掉集群中的某个主节点

# 查看 Redis 进程信息  
ps aux | grep redis  
  
# 杀掉 8001 对应的进程 id(-9 后面的是对应的进程 id,ps aux | grep redis 命令展示的第二列)  
kill -9 15913  

查看集群节点的信息

image-20230925154419541

杀掉 8005 主节点后的节点信息

image-20230925154536167

重新启动 8005 redis

# 切换到 redis 的 src 目录  
cd /usr/local/redis/redis-6.2.5/src  
  
# 一个一个启动 redis  
./redis-server ../../rediscluster/node8005/redis.conf  

image-20230925154713476

七、参考资料

  • Linux搭建redis集群
  • Redis 6.0 集群搭建实践

八、最后

我是 xiucai,一位后端开发工程师。

如果你对我感兴趣,请移步我的个人博客,进一步了解。

- 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
- 本文首发于个人博客,未经许可禁止转载💌

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

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

相关文章

在微信公众平台 设置小程序域名白名单

首先 我们打开微信公众平台 微信公众平台 然后扫描二维码 登录自己需要操作的小程序 这里特别声明一下此操作必须是企业账号创建的小程序 然后 在左侧菜单中选择开发下的 开发管理 然后在这里选择 开发设置 然后 下拉找到 服务器域名 点击 修改 按钮 然后会需要你扫个二维…

软考中级哪一门比较好过?

如果你不确定要备考中级考试中的哪一科目,那么我建议你备考系统集成项目管理工程师。因为系统集成相对于其他中级考试更容易一些,它更偏文科,需要多背记多刷题。这也意味着你可以通过自学来备考,而且难度并不大。只要你愿意下功夫…

大学宿舍IP一键视频对讲

大学宿舍ip一键视频对讲 大学宿舍一键视频对讲是指在大学宿舍内安装一套视频对讲系统,通过一键操作,实现与宿舍内其他人进行视频通话的功能。 该系统通常包括以下组成部分: 1. 室内终端:每个宿舍内安装一个室内终端,…

C语言结构体的一些鲜为人知的小秘密

目录 一、结构体内存对齐规则: 1.1范例 1.2结构体内存对齐规则 1.3自定义默认对齐数 二、位段 2.1什么是位段 2.2位段的内存分配 2.3位段的不足 三、枚举和联合体 3.1枚举 3.1.1枚举类型的定义 3.1.2枚举类型的使用 3.2联合体 3.2.1联合体的定义 3.…

nginx的安装(一)

linux服务器nginx的安装 安装nginx 1.下载nginx安装包,到nginx官网 https://nginx.org/ 2.下载pcre安装包3.安装pcre,进入/usr/src/ 目录下,上传pcre安装包,nginx安装包4.首先安装pcre,在当前的目录解压安装包 tar -zxvf pc…

leetcode:2535. 数组元素和与数字和的绝对差(python3解法)

难度:简单 给你一个正整数数组 nums 。 元素和 是 nums 中的所有元素相加求和。数字和 是 nums 中每一个元素的每一数位(重复数位需多次求和)相加求和。 返回 元素和 与 数字和 的绝对差。 注意:两个整数 x 和 y 的绝对差定义为 |…

python函数中*args和**kwargs的作用和意义

一、背景 在使用python编程过程中,项目的完成离不开每个函数的功劳,因此函数就是编程的生命!然而,函数定义中的*args和**kwargs参数会让许多刚接触python的coder不知所措,所以这里讲一下python函数中这两个参数的作用…

netty快速入门基本用法

1、netty的基本工作流程 在netty中存在以下的核心组件: ServerBootstrap:服务器端启动辅助对象;Bootstrap:客户端启动辅助对象;Channel:通道,代表一个连接,每个Client请对会对应到…

Vue3为什么推荐使用ref而不是reactive

为什么推荐使用ref而不是reactive reactive本身具有很大局限性导致使用过程需要额外注意,如果忽视这些问题将对开发造成不小的麻烦;ref更像是vue2时代option api的data的替代,可以存放任何数据类型,而reactive声明的数据类型只能是对象; 先抛出结论,再详细说原因:非必要不用rea…

医学影像SAM

医学影像SAM 1. 医学影像SAM1.1. MedSAM1.2. SAM-Adapter1.3. Medical-SAM-Adapter1.4. sam-med2d1.5. MS-SAM 下面整理了一些比较好的博客。 1. 医学影像SAM 由于sam在医学影像上表现不是特别好,在该类型数据集上就需要再训练。 1.1. MedSAM MedSAM&#xff1a…

【双塔模型DSSM】的原理与实现

文章目录 简介1 双塔模型的召回结构1.1 样本准备1.2 模型特征1.3 模型loss1.4 线上部署 2 双塔模型的粗排结构2.1 样本准备2.2 模型特征2.3 模型loss2.4 线上部署 参考文章 简介 DSSM 模型总的来说可以分成三层结构,分别是输入层、表示层和匹配层。双塔结构如下图所…

机器学习第十一课--K-Means聚类

一.聚类的概念 K-Means算法是最经典的聚类算法,几乎所有的聚类分析场景,你都可以使用K-Means,而且在营销场景上,它就是"King",所以不管从事数据分析师甚至是AI工程师,不知道K-Means是”不可原谅…

虚拟机安装CentOS 7

一、CentOS7.4下载 官网下载地址:http://vault.centos.org/ 1、进入CentOS下载官网,找到CentOS7.4版本往下滑找到要下载的版本(这里我用的是7.4哈~~) 下载完成之后,由于“CentOS-7-x86_64-DVD-1708.torrent”只是一…

Python 找出最大数

"""在输入的三个数中找出最大知识点:1、条件嵌套语句if/else2.字符串分割函数split()3、列表元素索引4、数据类型转换举一反三:1、如何控制只能输入三个数,否则重新输入2、如何避免输入无效字母"""# 定义一个变…

Cron表达式_用于定时调度任务

一、Cron表达式简介 Cron表达式是一个用于设置计划任务的字符串,该字符串以5或6个空格分隔,分为6或7个域,每一个域代表任务在相应时间、日期或时间间隔执行的规则【Cron表达式最初是在类Unix操作中系统中使用的,但现在已经广泛应用…

三菱PLC位置式PID(梯形图源代码)

PID的算法和公式详细介绍,大家可以查看PID专栏,这里不再展开细述。这篇文章主要给出FX3GA系列位置式PID的梯形图源代码,方便大家学习使用。 位置式PID三菱ST代码 三菱FX3U PLC 位置式PID算法(ST语言)_三菱pid梯形图源代码_RXXW_Dor的博客-CSDN博客三菱PLC自带的PID不必多说…

uniapp:如何修改组件默认样式

日历组件默认样式如下图,但是我不想要右上角的红点,并且日期下面的数字要加红色背景,变成圆形,还是先用元素检查找到元素的类名,然后通过/deep/来覆盖样式,需要注意的是,lang要scss或者less&…

硬件基本功--MOS管

一、上下拉电阻Rgs的作用 Rgs:经验值,一般取10K左右。 1. 上电时给MOS管的栅极一个确定的电平,防止上电时GPIO为高阻态时,MOS管的栅极电平不确定,从而受到干扰。 2. 断电时,如果MOS管是导通的状态&#xff…

北京智和信通亮相2023IT运维大会,共话数智浪潮下自动化运维新生态

2023年9月21日,由IT运维网、《网络安全和信息化》杂志社联合主办的“2023(第十四届)IT运维大会”在北京成功举办。大会以“以数为基 智引未来”为主题,北京智和信通技术有限公司(下文简称:北京智和信通&…

火山引擎边缘云:数智化项目管理助力下的业务增长引擎

近日,“QCon全球软件开发大会2023北京站”、“第十二届中国PMO大会”、“2023第二届中国PMO&PM大会”相继召开,火山引擎边缘云项目管理团队受邀参加,并就项目管理相关主题开展分享。 会上,火山引擎边缘云项目管理负责人申建表…