当前位置: 首页 > article >正文

redis 集群搭建

目录

 

1.redis集群简介

1.1 redis集群是什么?

1.2 redis集群的特点

2.环境准备

2.1 节点服务器

2.2 安装redis

3.配置节点

4.启动节点

5.创建集群

5.1 集群创建命令

5.2 集群状态确认

6.集群测试

6.1 数据存储

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.1366381、6382、6383
192.168.145.1376384、6385、6386

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

2.2 安装redis

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

sudo apt-get install lsb-release curl gpg
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
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
sudo apt-get update
sudo apt-get install redis

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

本文章使用的redis版本为7.2.5

3.配置节点

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

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

在 redis 目录下新建目录 cluster :

b7c4752d9b6e4592bbe0bd0b6e4e8cdd.png

在 cluster 目录下新建子目录:

目录名称自定义。

2af08eb9f12a48ce8900c90d0dce3926.png

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

# 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.启动节点

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

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

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

86ba7e21814e4d98bb29ee204c25e489.png

e8bbd106f17d46158327038b608c1d03.png

 

5.创建集群

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

5.1 集群创建命令

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

// 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 集群状态确认

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

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

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

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

5.2.1 集群信息

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

查看集群信息的命令:

cluster info

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

e8cfa857cb6240eb9a3a6046264eb830.png

5.2.2 集群槽位分配

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

查看槽位分配的命令:

cluster slots

槽位分配内容:

36962b8a109f4556aaed41f277913574.png

5.2.3 集群节点信息

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

837002e748544d88b38a91ae98d225d5.png

6.集群测试

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

6.1 数据存储

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

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

d67c428257e346f9bab469c3de5c75c2.png

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

6.2 故障转移

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

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

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

关闭前:

d6a7d720319c41b3ad4b863acea4e5a4.png

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

4b3fa752d2d940e3b32bffc5288fb1e0.png

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

d116697d49844d6d81a60f5641704b39.png

 

 


http://www.kler.cn/news/339614.html

相关文章:

  • 【Redis】Redis事务
  • 力扣16~20题
  • UE4 材质学习笔记01(什么是着色器/PBR基础)
  • Android Studio New里面没有New Flutter Project
  • 浅谈人工智能之大模型的流式调用:Python版
  • Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式
  • 基于PHP+uniapp微信小程序的个性化影视推荐系统的设计54lfb
  • 单片机教案 2.1 ATmega2560单片机最小应用系统
  • Python:使用itertools.permutations实现全排列
  • DepthB2R靶机打靶记录
  • 深度学习的应用
  • opencv学习:图像拼接及完整代码实现
  • JS设计模式之职责链模式:优雅地处理请求流程
  • 智能电子价签:助力零售效率升级的关键
  • 基于Python的自然语言处理系列(28):spaCy基础介绍
  • 微积分复习笔记 Calculus Volume 1 - 2.2 The Limit of a Function
  • 机器学习实战27-基于双向长短期记忆网络 BiLSTM 的黄金价格模型研究
  • 科技云报到:云服务的中场战事,从AI应用开始
  • CSRF | GET 型 CSRF 漏洞攻击
  • 旅游管理智能化:SpringBoot框架的应用