如上图所示:我现在有6台机器的redis集群,端口为7002,7003,7004为主,端口为7001,7005,7006为从节点
![](https://i-blog.csdnimg.cn/blog_migrate/9a13d26a4a828d9d1e879a7c01b527fe.png)
现在准备了两个没有在集群中的redis服务:7007和7008;
ok 现在让我们开始把7007和7008添加到集群中
第一步:运行下./redis-trib.rb看命令是否正常,这个命令是用ruby写的所以如果不正常请安装ruby. ![](https://i-blog.csdnimg.cn/blog_migrate/9a13d26a4a828d9d1e879a7c01b527fe.png)
安装ruby步骤1:yum install ruby
2:yum install rubygems
3:gem install redis (安装redis和ruby 的接口)第二步:
执行命令 ./redis-trib.rb add-node new_host:new_port existing_host:existing_port说明:new_host:需要加入集群的redis服务ip地址 如本例中是:192.168.142.128new_port:需要加入集群的redis服务ip端口 如本例中是:7007和7008existing_host:集群中已存在的任何一个redis ip地址 如本例中的192.168.142.128执行命令./redis-trib.rb add-node 192.168.142.128:7007 192.168.142.128:7001existing_port:集群中已存在的任何一个redis 端口 如本例中的7001、7002、7003、7004、7005、7006
如下:添加7007成功。
现在我们再来看下集群节点信息如下
端口为7007的redis已经成功的加入到集群中,但是他这个主节点没有空间槽。我们还需要进行第三步给这个节点
非配空间槽
第三步:给新加入节点分配空间槽
1:执行命令./redis-trib.rb reshard 192.168.142.128:7007
执行命令如上图所示:问你是否从原有的1-16384个槽中分配多少到新的主节点我们这里分配4000为例回车
2:然后紧接着会询问你给id为谁的主节点分配,我们这里copy这个id就行
3:询问你是从所有的空间去给这个节点分配空间还是从某一个节点分配
我这里输入all 回车继续
4:然后会给你分配出一个分配计划,输入yes开始分配。完成ok
我们再来看下7007已经分配了4000个空间槽 。
第四步:我们把端口为7008的redis添加到集群,把它作为 7007的从节点
重复第二步命令:./redis-trib.rb add-node 192.168.142.128:7008 192.168.142.128:7002
添加成功。
最后一步: 需要登录新加入的7008redis,执行命令cluster replicate 主节点id(就是你想把这个从节点
放到那个主节点下面)
ok 完成如上图所示集群信息
测试:
如上图所示 添加集群完成。
而且测试发现:空间槽的分配是不分有没有数据的,有数据的槽也有可能分配到新的主节点下