Redis Cluster的扩容和缩容

Posted YaoYong_BigData

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis Cluster的扩容和缩容相关的知识,希望对你有一定的参考价值。

一、Redis Cluster扩容

原来是3个集群每个集群我们会分配16384/3个卡槽,如果现在加一对那就是4个集群了这就是16384/4个卡槽,前面每个集群都要出一些卡槽分给第四个。

1.Redis Cluster扩容实际操作
创建7006和7007和之前的节点一样更改配置文件,然后我们一会要把他们依次加入到Cluster当中。

我们看一下没加入7006和7007之前的Cluster node是谁和他们的卡槽范围。有查询结果可知7000,7001,7002是master他们的卡槽范围分别是0-5460,5461-10922,10923~16383。然后我们添加7006看看效果。

如图所示7006已经被添加到集群中。

 这张图我们能看到7006而且它添加进来默认是master只不过没给他分配卡槽。然后我们再添加7007。

执行以下命令./redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7000 --cluster-slave --cluster-master-id 0bdd75ed547be8e29a12a1ce4fb61838f4239ebc,把7007设置为7006的从节点。其中那个id就是7006的id。这回我们看一下cluster集群里的节点情况:

 我们可以看到7006,7007已经成功地添加成功了,而且7006为master节点,7007为slave节点只是没有给这个7006分配卡槽。然后我们重新给这个cluster分配卡槽。

执行命令./redis-cli --cluster reshard 127.0.0.1:7000然后他会问如果想扩充一个master你要到多少个卡槽我们一共是4个master所以每个应该是4096个。然后他又问你想移动到哪个ID上你把7006的ID赋复制过来就行了。然后他又问你以什么方式这里面all就是你之前所有的卡槽都可以当做源卡槽进行分配,这里面显然就是平均分所以选all,done需要你指定ID,从特定的节点上分配卡槽到7006,一般用于某个节点较多的情况。

分配完卡槽之后我们再看一下cluster nodes:

如图所示分给7006的卡槽范围分别是0-1364,5461-6826,10923-12287。这个是这么得来的新增加一个节点我们要每个master节点分配16384/4 = 4096个卡槽,新增加一个所以我们要让之前老的节点平均出一点凑出来这个数,原来是3个master节点所以每个人出4096/3个卡槽,所以大概一人出1365个就差不多了。

二、master节点宕机之后重新实现选举

比如说我们把7006宕机了,然后再看看cluster nodes的情况。

如图所示7007自动上位。

重启7006

 

 重启7006之后可以看到他自动的被分配为slave节点。说明Cluster集群选举是自动进行的。

三、Redis Cluster的缩容

假设说我们要把7006和7007这个集群删了,那么一定要在宕机之前把他的卡槽清空。我们只需要执行以下命令/usr/redis/bin/redis-cli --cluster reshard 127.0.0.1:7000 --cluster-from 7007的id --cluster-to 7000的id --cluster-slots 4096

这条命令的意思就是将7007的所有的卡槽移动到7000上,这个–cluster-slots可以指定具体分配多少个,–cluster-to也可以指定多个id,但是具体分配多少需要你自己算。这里图个省事儿,不算了,直接全挪过去了。

 从图中我们可以看出7007的卡槽全挪到了7000。这里面注意一下哈,移动卡槽连着里面的数据也会跟着移动。

以上是关于Redis Cluster的扩容和缩容的主要内容,如果未能解决你的问题,请参考以下文章

REDIS CLUSTER 搭建,扩容缩容基本原理

Pod 扩容和缩容

redis cluster异地数据迁移,扩容,缩容

Hadoop3 - HDFS DataNode 动态扩容和缩容

Hadoop3 - HDFS DataNode 动态扩容和缩容

Hadoop3 - HDFS DataNode 动态扩容和缩容