Redis集群部署指南

简介: 本章为CentOS7下Redis集群实战教程,涵盖单机安装、主从复制、哨兵集群及分片集群搭建。通过详细步骤实现多实例部署,掌握高可用与数据分片核心技术,助力构建稳定高效的Redis分布式系统。(238字)

本章是基于CentOS7下的Redis集群教程,包括:
单机安装Redis
Redis主从
Redis分片集群
1.单机安装Redis
首先需要安装Redis所需要的依赖:
然后将课前资料提供的Redis安装包上传到虚拟机的任意目录:
redis-6.2.4.tar.gz
(2.3 MB)
例如,我放到了/tmp目录:
解压缩:
解压后:
进入redis目录:
运行编译命令:
如果没有出错就安装成功。然后修改redis.conf文件中的一些配置(注意是四个0,不要额外的):
启动Redis:
停止redis服务(ctrl + c也可停止):
2.Redis主从集群
2.1.集群结构
我们搭建的主从集群结构如图:
共包含三个节点,一个主两个从。这里我们会在同一台虚拟机中开启3个redis实例,模拟主从集群,信息如下:
IP
PORT
角色
192.168.206.129
7001
master
192.168.206.129
7002
slave
192.168.206.129
7003
slave
2.2.准备实例和配置
要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。
确保下面的配置已经更改(位置也别错)
1)创建目录
我们创建三个文件夹,名字分别叫7001、7002、7003:
如图:
2)恢复原始配置
修改redis-6.2.4/redis.conf文件,将其中的持久化模式改为默认的RDB模式,AOF保持关闭状态。
3)拷贝配置文件到每个实例目录
然后将redis-6.2.4/redis.conf文件拷贝到三个目录中(在/tmp目录执行下列命令):
4)修改每个实例的端口、工作目录
修改每个文件夹内的配置文件,将端口分别修改为7001、7002、7003,将rdb文件保存位置都修改为自己所在目录(在/tmp目录执行下列命令):
5)修改每个实例的声明IP(注意IP需要修改)
虚拟机本身有多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信息,格式如下(下面这个只是语法说明,别执行):
每个目录都要改,我们一键完成修改(在/tmp目录执行下列命令):
2.3.启动
为了方便查看日志,我们打开3个ssh窗口,分别启动3个redis实例,启动命令(在/tmp目录执行下列命令):
启动后:
如果要一键停止,可以运行下面命令:
2.4.开启主从关系
现在三个实例还没有任何关系,要配置主从可以使用replicaof 或者slaveof(5.0以前)命令。
新开窗口执行下述命令,一旦ctrl +c退出后,redis服务将中断
有临时和永久两种模式:
修改配置文件(永久生效)
在redis.conf中添加一行配置:slaveof
使用redis-cli客户端连接到redis服务,执行slaveof命令(重启后失效):
注意:在5.0以后新增命令replicaof,与salveof效果一致。(注意IP需要修改)
这里我们为了演示方便,使用方式二(在/tmp目录执行下列命令)。通过redis-cli命令连接7002,执行下面命令:
执行完:exit,退出可继续执行后续命令。通过redis-cli命令连接7003,执行下面命令:
然后连接 7001节点,查看集群状态:
结果:
2.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节点只能执行读操作。
3.搭建哨兵集群
3.1.集群结构
这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。如图:
三个sentinel实例信息如下:
节点
IP
PORT
s1
192.168.206.129
27001
s2
192.168.206.129
27002
s3
192.168.206.129
27003
3.2.准备实例和配置
要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。
我们创建三个文件夹,名字分别叫s1、s2、s3:
如图:
然后我们在s1目录创建一个sentinel.conf文件,添加下面的内容:
cd /tmp/s1
touch sentinel.conf
vi sentinel.conf
粘贴下述文本
解读:
port 27001:是当前sentinel实例的端口
sentinel monitor mymaster 192.168.206.129 7001 2:指定主节点信息
mymaster:主节点名称,自定义,任意写
192.168.206.129 7001:主节点的ip和端口
2:选举master时的quorum值
然后将s1/sentinel.conf文件拷贝到s2、s3两个目录中(在/tmp目录执行下列命令):
修改s2、s3两个文件夹内的配置文件,将端口分别修改为27002、27003:
3.3.启动
为了方便查看日志,我们打开3个ssh窗口,分别启动3个redis实例,启动命令(在tmp目录执行):
启动后:
3.4.测试
停止7001(当前主节点),此时会在多个哨兵中选举出一个哨兵的master,如下
27001投给27002
27002投给自己
27003投给27002
因此27002变成哨兵master
主观下线变客观下线
哨兵master自己从当前集群中的slave节点中选出一个新的master,原则是:
现有slave节点执行slave of,服从新的master节点
其余哨兵得到哨兵msater的选举通知
此时我们恢复7001,会发现会做一次全量同步
新加入的节点,执行slave of服从当前master(此时是从配置文件中读取)
4.搭建分片集群
4.1.集群结构
分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下
这里我们会在同一台虚拟机中开启6个redis实例,模拟分片集群,信息如下:
IP
PORT
角色
192.168.206.129
7001
master
192.168.206.129
7002
master
192.168.206.129
7003
master
192.168.206.129
8001
slave
192.168.206.129
8002
slave
192.168.206.129
8003
slave
4.2.准备实例和配置
停止原来的所有redis服务(哨兵也要停止),同时删除之前的7001、7002、7003这几个目录,重新创建出7001、7002、7003、8001、8002、8003目录:
在/tmp下准备一个新的redis.conf文件,内容如下:
touch redis.conf
vi redis.conf
将这个文件拷贝到每个目录下:
修改每个目录下的redis.conf,将其中的6379修改为与所在目录一致:
此时可以进到任意目录查看一下,确认是否都存在相关的配置文件
4.3.启动
因为已经配置了后台启动模式,所以可以直接启动服务:
通过ps查看状态:
发现服务都已经正常启动:
如果要关闭所有进程,可以执行命令:
或者(推荐这种方式):
4.4.创建集群
更多测试细节也可查看:https://www.yuque.com/xiankanpengyouquandisitiaodongtai/diods0/fzoohtlg0r8gz6cd#ecac7084
虽然服务启动了,但是目前每个服务之间都是独立的,没有任何关联。
我们需要执行命令来创建集群,在Redis5.0之前创建集群比较麻烦,5.0之后集群管理命令都集成到了redis-cli中。
1)Redis5.0之前(我们版本是之后,不适用这个)
Redis5.0之前集群命令都是用redis安装包下的src/redis-trib.rb来实现的。因为redis-trib.rb是有ruby语言编写的所以需要安装ruby环境。
然后通过命令来管理集群:
2)Redis5.0以后
我们使用的是Redis6.2.4版本,集群管理以及集成到了redis-cli中,格式如下:
命令说明:
redis-cli --cluster或者./redis-trib.rb:代表集群操作命令
create:代表是创建集群
--replicas 1或者--cluster-replicas 1 :指定集群中每个master的副本个数为1,此时节点总数 ÷ (replicas + 1) 得到的就是master的数量。因此节点列表中的前n个就是master,其它节点都是slave节点,随机分配到不同master
运行后的样子:
这里输入yes,则集群开始创建:
通过命令可以查看集群状态(下面端口可以是集群中的任意端口都行):
其中的映射关系分析如下图
4.5.测试
尝试连接7001节点,存储一个数据:
Shell
运行代码
复制代码
1
2
3
4
5
6
7
8

连接

redis-cli -p 7001

存储数据

set num 123

读取数据

get num

再次存储

set a 1
结果悲剧了:
图片加载失败
集群操作时,需要给redis-cli加上-c参数才可以:
Shell
运行代码
复制代码
1
redis-cli -c -p 7001
这次可以了:

相关文章
|
存储 数据可视化 Serverless
使用蒙特卡罗模拟的投资组合优化
在金融市场中,优化投资组合对于实现风险与回报之间的预期平衡至关重要。蒙特卡罗模拟提供了一个强大的工具来评估不同的资产配置策略及其在不确定市场条件下的潜在结果。
1272 1
|
11月前
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据存储计算服务:MaxCompute
阿里云MaxCompute是快速、全托管的TB/PB级数据仓库解决方案,提供海量数据存储与计算服务。支持多种计算模型,适用于大规模离线数据分析,具备高安全性、低成本、易用性强等特点,助力企业高效处理大数据。
559 0
|
7月前
|
弹性计算 运维 安全
阿里云轻量服务器是什么?200M带宽配置价格清单,轻量详细介绍
阿里云轻量应用服务器(Simple Application Server)是面向个人开发者及中小企业的轻量级云服务,适用于网站建设、开发测试、小程序后端等场景。采用套餐式售卖,不支持自定义CPU、内存等配置,内置WordPress、宝塔面板、LNMP等应用镜像,支持一键部署。默认200M峰值带宽,最低38元/年起,操作简单、成本低,是快速搭建应用的理想选择。
1008 11
|
4月前
|
安全 虚拟化 iOS开发
|
11月前
|
人工智能 编译器 Linux
golang交叉编译和条件编译的实际应用
交叉编译是指在一个平台上生成可在另一平台运行的可执行代码。它允许开发者在资源受限或未准备好的目标环境下提前编译程序。条件编译则根据特定条件选择性地编译代码,常用于适配不同运行环境或区分开发与发布版本。两者结合,能有效提升开发效率与程序适配能力。
353 0
|
6月前
|
人工智能 自然语言处理 安全
2025年12月,中国数字人平台介绍与技术评析及数字化应用指南
2025年,虚拟数字人技术深度融入各行业。本文从技术、场景、安全三大维度,构建十大评估标准,揭示如何甄选兼具实用性、合规性与商业价值的数字人解决方案,助力企业智能化转型。
|
8月前
|
人工智能 自然语言处理 架构师
智能体来了!黎跃春老师经验拆解IP操盘手的AI企业赋能实践
黎跃春老师融合IP操盘与智能体技术,提出“技术是1,营销是0”的核心理念,依托阿里云平台实现AI赋能企业。通过“工具提效、人创价值”路径,助力IP操盘手构建可落地的全员营销智能体,推动从流量运营到企业服务的价值升级。
461 6
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
981 9
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】人工智能就业岗位发展方向有哪些?
人工智能领域的岗位多样,涵盖了从技术研发到应用实施、从产品设计到市场运营等各个方面,以下是人工智能就业岗位的主要发展方向
1876 59
|
存储 前端开发 JavaScript
35.2K star!双链笔记+知识图谱+本地优先,这款开源知识管理神器绝了!
嗨,大家好,我是小华同学。Logseq是一款融合「双链笔记+知识图谱+本地优先」理念的开源知识管理工具,支持Markdown/Org-mode格式,助力打造你的第二大脑。它采用Clojure语言开发,注重隐私,数据完全存储在用户本地设备,提供双向链接、块级引用、PDF标注等功能,适用于程序员、学者和个人目标管理等多种场景
1928 1