Redis6集群缩容

2024-03-13 17:50
文章标签 集群 redis6 缩容

本文主要是介绍Redis6集群缩容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Redis集群缩容有几种情况,

1,如果是删除故障主节点,通常故障的主节会先自动切换为从节点,再进行删除;

2, 如果是删除从节点,先为主节点添加新的从之后,再将其删除;

3, 如果是要删除整个主从节点,一般先删从,然后迁移slot,最后再删除主;

当前集群架构 4主4从:

127.0.0.1:8000> cluster nodes
e9aac3ea026f8b5b14267861021a282103671a9c 127.0.0.1:8003@18003 master - 0 1626234271000 18 connected 0-1365 5462-6826 10923-12287
e4ec27a4f61c66131faebab76d0c33c38fb5695c 127.0.0.1:8100@18100 slave 25d25af226ac55e9c03723288c20f53520420767 0 1626234272521 16 connected
68507c82e45915e6a257afbfc2626c2424684879 127.0.0.1:8001@18001 master - 0 1626234271517 14 connected 6827-10922
89609f9d318bbca243c622195dcffb0c4c739c21 127.0.0.1:8103@18103 slave e9aac3ea026f8b5b14267861021a282103671a9c 0 1626234269000 18 connected
25d25af226ac55e9c03723288c20f53520420767 127.0.0.1:8000@18000 myself,master - 0 1626234269000 16 connected 1366-5461
e4df1b413eb5731f4de442e3e38a14612dc65700 127.0.0.1:8102@18102 slave 3db06c21c6dea8701fadbebfebf1aa92e5b13037 0 1626234272000 12 connected
30bb3d720a0c7dad6aed79f17ab33313246a0629 127.0.0.1:8101@18101 slave 68507c82e45915e6a257afbfc2626c2424684879 0 1626234268000 14 connected
3db06c21c6dea8701fadbebfebf1aa92e5b13037 127.0.0.1:8002@18002 master - 0 1626234270514 12 connected 12288-16383

我希望删除127.0.0.1:8003 和127.0.0.1:8103;

首先先删除slave 127.0.0.1:8103;

[root@A01-R05-B308E3-I114-93 ~]# redis-cli  --cluster del-node 127.0.0.1:8103 89609f9d318bbca243c622195dcffb0c4c739c21
>>> Removing node 89609f9d318bbca243c622195dcffb0c4c739c21 from cluster 127.0.0.1:8103
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.

然后重新分配slot

我希望删除节点 127.0.0.1:8003, 含有slot: 0-1365 5462-6826 10923-12287

需要进行三次reshard

第一次: 移动  0-1365 到 127.0.0.1:8000

第二次: 移动 5462-6826 到 127.0.0.1:8001

第三次: 移动 10923-12287 到 127.0.0.1:8002

执行如下: 

[root@XXX ~]# redis-cli  --cluster reshard 127.0.0.1:8000
>>> Performing Cluster Check (using node 127.0.0.1:8000)
M: 25d25af226ac55e9c03723288c20f53520420767 127.0.0.1:8000slots:[1366-5461] (4096 slots) master1 additional replica(s)
M: e9aac3ea026f8b5b14267861021a282103671a9c 127.0.0.1:8003slots:[0-1365],[5462-6826],[10923-12287] (4096 slots) master
S: e4ec27a4f61c66131faebab76d0c33c38fb5695c 127.0.0.1:8100slots: (0 slots) slavereplicates 25d25af226ac55e9c03723288c20f53520420767
M: 68507c82e45915e6a257afbfc2626c2424684879 127.0.0.1:8001slots:[6827-10922] (4096 slots) master1 additional replica(s)
S: e4df1b413eb5731f4de442e3e38a14612dc65700 127.0.0.1:8102slots: (0 slots) slavereplicates 3db06c21c6dea8701fadbebfebf1aa92e5b13037
S: 30bb3d720a0c7dad6aed79f17ab33313246a0629 127.0.0.1:8101slots: (0 slots) slavereplicates 68507c82e45915e6a257afbfc2626c2424684879
M: 3db06c21c6dea8701fadbebfebf1aa92e5b13037 127.0.0.1:8002slots:[12288-16383] (4096 slots) master1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 1366
What is the receiving node ID? 25d25af226ac55e9c03723288c20f53520420767
Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.
Source node #1: e9aac3ea026f8b5b14267861021a282103671a9c
Source node #2: doneReady to move 1366 slots.Source nodes:M: e9aac3ea026f8b5b14267861021a282103671a9c 127.0.0.1:8003slots:[0-1365],[5462-6826],[10923-12287] (4096 slots) masterDestination node:M: 25d25af226ac55e9c03723288c20f53520420767 127.0.0.1:8000slots:[1366-5461] (4096 slots) master1 additional replica(s)Resharding plan:Moving slot 0 from e9aac3ea026f8b5b14267861021a282103671a9cMoving slot 1 from e9aac3ea026f8b5b14267861021a282103671a9cMoving slot 2 from e9aac3ea026f8b5b14267861021a282103671a9cMoving slot 3 from e9aac3ea026f8b5b14267861021a282103671a9cMoving slot 4 from e9aac3ea026f8b5b14267861021a282103671a9c

迁移完毕之后的slot分布

此时127.0.0.1:8003上没有slot了,可以进行删除;

 

[root@XXX ~]# redis-cli  --cluster del-node 127.0.0.1:8003 e9aac3ea026f8b5b14267861021a282103671a9c
>>> Removing node e9aac3ea026f8b5b14267861021a282103671a9c from cluster 127.0.0.1:8003
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.

查看当前slots分布,三主三从

127.0.0.1:8000> cluster slots
1) 1) (integer) 02) (integer) 54613) 1) "127.0.0.1"2) (integer) 80003) "25d25af226ac55e9c03723288c20f53520420767"4) 1) "127.0.0.1"2) (integer) 81003) "e4ec27a4f61c66131faebab76d0c33c38fb5695c"
2) 1) (integer) 54622) (integer) 109223) 1) "127.0.0.1"2) (integer) 80013) "68507c82e45915e6a257afbfc2626c2424684879"4) 1) "127.0.0.1"2) (integer) 81013) "30bb3d720a0c7dad6aed79f17ab33313246a0629"
3) 1) (integer) 109232) (integer) 163833) 1) "127.0.0.1"2) (integer) 80023) "3db06c21c6dea8701fadbebfebf1aa92e5b13037"4) 1) "127.0.0.1"2) (integer) 81023) "e4df1b413eb5731f4de442e3e38a14612dc65700"
127.0.0.1:8000> 

这篇关于Redis6集群缩容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/805689

相关文章

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

MySQL集群高可用架构的两种使用小结

《MySQL集群高可用架构的两种使用小结》本文介绍了MySQL的两种高可用解决方案:组复制(MGR)和MasterHighAvailability(MHA),文中通过示例代码介绍的非常详细,对大家的学... 目录一、mysql高可用之组复制(MGR)1.1 组复制核心特性与优势1.2 组复制架构原理1.3

Docker + Redis 部署集群的实现步骤

《Docker+Redis部署集群的实现步骤》本文详细介绍了在三台服务器上部署高可用Redis集群的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、环境准备1. 服务器规划(3 台服务器)2. 防火墙配置(三台服务器均执行)3. 安装 docke

springBoot (springCloud2025)集成redisCluster 集群的操作方法

《springBoot(springCloud2025)集成redisCluster集群的操作方法》文章介绍了如何使用SpringBoot集成RedisCluster集群,并详细说明了pom.xm... 目录pom.XMLapplication.yamlcluster配置类其他配置类连接池配置类Redis

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx