Redis分布式集群实战(五)——Redis cluster高可用集群之添加移除结点、给集群重新分片

Delfina ·
更新时间:2024-11-14
· 667 次阅读

文章目录一、Redis集群添加新结点二、集群重新分片三、移除节点
本篇文章接上一篇博客,继续进行配置。 一、Redis集群添加新结点

添加新的节点的基本过程就是添加一个空的节点然后移动一些数据给它。
有两种情况:

添加一个主节点 添加一个从节点:添加从节点时需要将这个新的节点设置为集群中某个节点的复制

1、创建新的节点7007和7008并开启服务

cd /usr/local/rediscluster/ mkdir 7007 7008 cp 7001/redis.conf 7007/ cp 7001/redis.conf 7008/ cd 7007 vim redis.conf redis-server redis.conf cd ../7008 vim redis.conf redis-server redis.conf ps ax | grep 700*

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

2、将新节点7007添加到集群,并查看

redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001 redis-cli -c -p 7007 127.0.0.1:7007> cluster nodes

在这里插入图片描述在这里插入图片描述
3、为新节点7007添加从节点7008

redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7007--cluster-slave --cluster-master-id a3140761a8745b9cc814f5b6a0347466befbff8a

在这里插入图片描述在这里插入图片描述- 注意:新节点现在已经连接上了集群, 成为集群的一份子, 并且可以对客户端的命令请求进行转向了, 但是和其他主节点相比, 新节点还有两点区别:

新节点没有包含任何数据, 因为它没有包含任何哈希槽.

尽管新节点没有包含任何哈希槽, 但它仍然是一个主节点, 所以在集群需要将某个从节点升级为新的主节点时, 这个新节点不会被选中。

二、集群重新分片

新节点已经加入集群中,但是槽值为0,集群需要重新分片。使用 redis-trib 程序, 将集群中的某些哈希桶移动到新节点里面, 新节点就会成为真正的主节点

1、手动分配哈希槽

redis-cli --cluster reshard 127.0.0.1:7007

在这里插入图片描述
选完哈希槽个数后,又会问我们需要覆盖的节点id是什么,这个id就是我们新创建的节点id。然后让我们输入源节点,如果这里我们输入all的话,他会随机的从所有的节点中抽取300个作为新节点的哈希槽。

在这里插入图片描述

查看7007分配的哈希槽,可以看到7007分配到了指定的哈希槽

redis-cli --cluster info 127.0.0.1:7001 注意:因为哈希槽的数量是固定的,所以新的节点指定所分配到的哈希槽是其它主节点提供的,但是手动分配的哈希槽可能在使用时会出现问题,因此不建议使用该方式进行分配
在这里插入图片描述

2、自动平均分配哈希槽

redis-cli --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 127.0.0.1:7001

在这里插入图片描述
查看7007节点否平均分配到哈希槽

redis-cli --cluster check 127.0.0.1:7001

在这里插入图片描述
且数据仍同步:

redis-cli -c -p 7007 127.0.0.1:7007> get name 127.0.0.1:7007> info

在这里插入图片描述

在这里插入图片描述

三、移除节点

1、移除从Slave节点

redis-cli --cluster del-node 127.0.0.1:7008 a37d25e2d3a96b9e6d31c4d81e7f1ff9a34cd945

在这里插入图片描述
2、除Master节点

删除master节点之前首先要使用reshard移除master的全部slot,然后再删除当前节点(目前只能把被删除master的slot迁移到一个节点上)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

此时7007节点哈希槽已经全部转移到7001节点上

在这里插入图片描述

3、删除7007节点

redis-cli --cluster del-node 127.0.0.1:7007 a3140761a8745b9cc814f5b6a0347466befbff8a

在这里插入图片描述查看7007节点是否删除:
在这里插入图片描述
主节点7007删除成功


作者:草莓啾啾啾



cluster 实战 集群 redis分布式 Redis

需要 登录 后方可回复, 如果你还没有账号请 注册新账号