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的身份继续运行

相关推荐
SPC的存折2 分钟前
1、Redis数据库基础
linux·运维·服务器·数据库·redis·缓存
爱学习的小囧1 小时前
VMware ESXi 6.7U3v 新版特性、驱动集成教程和资源包、部署教程及高频问答详情
运维·服务器·虚拟化·esxi6.7·esxi蟹卡驱动
小疙瘩1 小时前
只是记录自己发布若依分离系统到linux过程中遇到的问题
linux·运维·服务器
dldw7772 小时前
IE无法正常登录windows2000server的FTP服务器
运维·服务器·网络
我是伪码农2 小时前
外卖餐具智能推荐
linux·服务器·前端
汤愈韬3 小时前
下一代防火墙通用原理
运维·服务器·网络·security
IMPYLH3 小时前
Linux 的 od 命令
linux·运维·服务器·bash
MatrixOrigin4 小时前
数据库没有死,只是范式变了
数据库·oracle
数据雕塑家5 小时前
Linux下大文件切割与合并实战:解决FAT32文件系统传输限制
linux·运维·服务器