redis 集群搭建

目录

1.redis集群简介

[1.1 redis集群是什么?](#1.1 redis集群是什么?)

[1.2 redis集群的特点](#1.2 redis集群的特点)

2.环境准备

[2.1 节点服务器](#2.1 节点服务器)

[2.2 安装redis](#2.2 安装redis)

3.配置节点

4.启动节点

5.创建集群

[5.1 集群创建命令](#5.1 集群创建命令)

[5.2 集群状态确认](#5.2 集群状态确认)

6.集群测试

[6.1 数据存储](#6.1 数据存储)

[6.2 故障转移](#6.2 故障转移)

1.redis集群简介

1.1 redis集群是什么?

Redis 集群是 Redis 的一种分布式部署方式,旨在实现数据的水平扩展和高可用性。通过将数据分散存储在多个节点上,Redis 集群能够处理更大的数据集并提供更高的并发访问能力。

1.2 redis集群的特点

redis 集群主要有以下特点:

分片:

  • 数据在不同节点之间分布,使用哈希槽(hash slots)来管理。
  • 默认情况下,Redis 集群支持 16384 个哈希槽,数据根据键值进行分配。

高可用性:

  • 每个主节点可以有一个或多个从节点,从节点负责备份主节点的数据。
  • 当主节点故障时,从节点可以自动提升为主节点,确保服务持续可用。

动态扩展:

  • 可以在运行时添加或移除节点,以适应变化的负载需求。

读写分离:

  • 可以配置从节点处理读请求,而主节点处理写请求,以提高性能。

2.环境准备

2.1 节点服务器

本文章集群使用虚拟机实现,系统为ubuntu18.04,由于资源有限,所以只是用两台虚拟机实现,仅供参考:

|-----------------|----------------|
| 地址 | 节点 |
| 192.168.145.136 | 6381、6382、6383 |
| 192.168.145.137 | 6384、6385、6386 |

注意:虚拟机之间必须能够相互通信,可以使用ping命令测试。

2.2 安装redis

在ubuntu上下载redis:将以下代码依次在终端中执行

bash 复制代码
sudo apt-get install lsb-release curl gpg
bash 复制代码
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
bash 复制代码
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
bash 复制代码
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
bash 复制代码
sudo apt-get update
bash 复制代码
sudo apt-get install redis

如果是在其他系统上安装redis,可以到redis官网查看如何下载........

本文章使用的redis版本为7.2.5

3.配置节点

△:只演示一台虚拟机的操作,其他的操作一样。

redis安装成功后会在 /etc 目录下生成子目录 redis ,redis的默认配置文件 redis.conf 会存放在这里。我们可以不用这个配置文件,自己新建配置文件。

在 redis 目录下新建目录 cluster :

在 cluster 目录下新建子目录:

目录名称自定义。

随便在一个子目录中新建配置文件 redis.conf 并在配置文件中添加下图内容:

bash 复制代码
# redis 节点端口,自定义
port 6381
# 后台运行
daemonize yes
# 守护模式
protected-mode no
# 开启集群模式
cluster-enabled yes
cluster-config-file "nodes-6381.conf"
cluster-node-timeout 5000
appendonly yes
masterauth "111111"
databases 1

注意:各个节点端口不同,集群配置文件名称自定义...

4.启动节点

执行以下命令启动每个节点,注意配置文件的地址:

bash 复制代码
// 这里的配置文件指向你的配置文件的位置
sudo redis-server /etc/redis/cluster/6381/redis.conf

使用命令 ps -ef|grep redis-server 查看进程可以看到每个端口后面都有【 cluster 】,这表明该端口的redis实例是集群节点:

5.创建集群

启动完全部节点后就可以创建集群了

5.1 集群创建命令

执行下列命令便可创建集群:

bash 复制代码
// ip地址跟端口号按实际情况设置
// --cluster-replicas 1 表示为每个master节点配置一个slave
redis-cli --cluster create 192.168.145.136:6381 192.168.145.136:6382 192.168.145.136:6383 192.168.145.137:6384 192.168.145.137:6385 192.168.145.137:6386 --cluster-replicas 1

5.2 集群状态确认

集群创建完成后,需要确认集群是否处于正常状态。

集群主要查看 集群整体信息、槽位分配、节点信息。

在确认集群状态之前,需要连接其中一个节点。

bash 复制代码
// 因为之前没有设置 requirepass,所以不需要输入密码
// 一定要指定集群的一个端口,否则会连接默认的6379端口
redis-cli -p 6381 -c

5.2.1 集群信息

集群信息主要包含 集群状态、被分配的槽位数量、正常槽位数量、部分故障槽位数量、完全故障槽位数量、已识别节点数量、master节点数量......

查看集群信息的命令:

bash 复制代码
cluster info

执行上述命令后会出现下图内容:

5.2.2 集群槽位分配

redis集群有16384个槽位,这些槽位会分给master节点,slave节点不会参数槽位的分配。

查看槽位分配的命令:

bash 复制代码
cluster slots

槽位分配内容:

5.2.3 集群节点信息

节点信息会显示各个节点的id、节点性质、节点状态、节点端口。

6.集群测试

确认集群正常运行后,我们可以对集群进行测试,确保集群能够正常使用已经某一个master节点发生故障时,其slave节点会 顶替master 节点,实现故障转移。

6.1 数据存储

redis作为一个基于内存的高性能数据库,最主要就是存储数据。redis集群作为redis的分布式部署方式,最终目的是提高redis读写性能,所以需要测试集群是否可以正常读写数据。

连接redis之后,在控制台中执行简单的读写命令:

执行简单的数据读写命令后,如果如上图一样执行成功,说明该redis集群可以正常使用。

6.2 故障转移

redis集群有一特点便是故障转移,当主节点出现故障时,集群会自动检测并进行故障转移,将从节点提升为主节点,从节点会继承之前主节点的所有槽位,之前出现故障的主节点即使重新运行,因为它已经被替代了,所以会以从节点的身份回归集群中。

下面连接一个master节点,并使用 shutdown 命令将该节点关闭。

连接6381端口的节点并关闭它,查看它的slave节点6386的变化。

关闭前:

关闭后:可以看到端口号为6386的redis节点已经变成了master

重新启动后:原来的6381端口的redis节点不会变回master,而是以slave的身份继续运行

相关推荐
齐齐大魔王2 小时前
linux-僵死进程处理
linux·运维·服务器
HackTwoHub5 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
l1t5 小时前
DeepSeek总结的DuckLake构建基于 SQL 原生表格式的下一代数据湖仓
数据库·sql
KmSH8umpK5 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第八篇
数据库·redis·分布式
网络工程小王5 小时前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
TDengine (老段)5 小时前
从施工监测到运营预警,桥科院用 TDengine 提升桥梁数据管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
wangbing11255 小时前
各linux版本的包管理命令
linux·运维·服务器
callJJ6 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
S1998_1997111609•X6 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
比昨天多敲两行7 小时前
Linux基础开发工具(下)
linux·运维·服务器