前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >项目实践,Redis集群技术学习(七)

项目实践,Redis集群技术学习(七)

作者头像
用户1289394
发布2022-02-15 15:56:03
3010
发布2022-02-15 15:56:03
举报
文章被收录于专栏:Java学习网Java学习网

Redis.4 集群伸缩

Redis.4.1 伸缩原理

Redis 集群提供了灵活的节点扩容和收缩方案。在不影响集群对外服务的情况

下,可以为集群添加节点进行扩容也可以下线部分节点进行缩容,如图

Redis 集群可以实现对节点的灵活上下线控制。其中原理可抽象为槽和对应数据在不同节点之间灵活移动。首先来看我们之前搭建的集群槽和数据与节点的对应关系,如图所示

三个主节点分别维护自己负责的槽和对应的数据,如果希望加入 1 个节点实现集群扩容时,需要通过相关命令把一部分槽和数据迁移给新节点,如图

图中每个节点把一部分槽和数据迁移到新的节点 6385,每个节点负责的槽和数据相比之前变少了从而达到了集群扩容的目的。这里我们故意忽略了槽和数据在节点之间迁移的细节,目的是想让读者重点关注在上层槽和节点分配上来,理解集群的水平伸缩的上层原理:集群伸缩=槽和数据在节点之间的移动,下面将介绍集群扩容和收缩的细节。

10.4.2 扩容集群

扩容是分布式存储最常见的需求,Redis 集群扩容操作可分为如下步骤:

1)准备新节点。

2)加入集群。

3)迁移槽和数据。

1.准备新节点

需要提前准备好新节点并运行在集群模式下,新节点建议跟集群内的节点配置

保持一致,便于管理统一。准备好配置后启动两个节点命令如下:

redis-server conf/redis-6385.conf

redis-server conf/redis-6386.conf

启动后的新节点作为孤儿节点运行,并没有其他节点与之通信,集群结构如图

所示。

2.加入集群

新节点依然采用 cluster meet 命令加入到现有集群中。在集群内任意节点执行

cluster meet 命令让 6385 和 6386 节点加入进来,命令如下:

127.0.0.1:6379> cluster meet 127.0.0.1 6385

127.0.0.1:6379> cluster meet 127.0.0.1 6386

新节点加入后集群结构如图所示。

集群内新旧节点经过一段时间的 ping/pong 消息通信之后,所有节点会发

现新节点并将它们的状态保存到本地。例如我们在 6380 节点上执行 cluster

nodes 命令可以看到新节点信息:

127.0.0.1:6380>cluster ndoes

1a205dd8b2819a00dd1e8b6be40a8e2abe77b756 127.0.0.1:6385 master - 0

1469347800759

7 connected

475528b1bcf8e74d227104a6cf1bf70f00c24aae 127.0.0.1:6386 master - 0

1469347798743

8 connected

...

新节点刚开始都是主节点状态,但是由于没有负责的槽,所以不能接受任

何读写操作。对于新节点的后续操作我们一般有两种选择:

·为它迁移槽和数据实现扩容。

·作为其他主节点的从节点负责故障转移。

redis-trib.rb 工具也实现了为现有集群添加新节点的命令,还实现了直接添

加为从节点的支持,命令如下:

redis-trib.rb add-node 127.0.0.1:6385 127.0.0.1:6379

redis-trib.rb add-node 127.0.0.1:6386 127.0.0.1:6379

(Redis5.0 版本后同样把 redis-trib.rb 命令改为 redis-cli )

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档