Redis3.0.1集群动态增加或删除节点

Reading time ~1 minute

1.首先把需要添加的节点启动

cd /usr/local/cluster/
mkdir 7007
cd 7007
mkdir conf data
cp /usr/local/cluster/7001/conf/redis.conf  /usr/local/cluster/7007/conf
cp -rf /usr/local/cluster/7007/ /usr/local/cluster
cd /usr/local/cluster/7007/conf
vim redis.conf
#修改redis.conf中的port和路径的参数的值为7007
#修改完7007之后再修改7008中的配置文件
redis-server /usr/local/cluster/7007/conf/redis.conf
redis-server /usr/local/cluster/7008/conf/redis.conf

2.执行以下命令,将这个新节点添加到集群中

cd /usr/local/cluster/redis-3.0.5/src
./redis-trib.rb add-node 127.0.0.1:7007 127.0.0.1:7001

第一个参数是我们刚才启动的新实例,第二个参数是集群中已有的节点。

Alt text

3.查看刚才新增的节点

执行命令redis-cli -c -p 7001 cluster nodes Alt text

4.增加主节点

使用redis-trib程序,将集群中的某些哈希槽移动到新节点里面

执行redis-cli -c -p 7001 cluster nodes之后复制好新增节点的ID

执行下面的命令对集群中的哈希槽进行移动

cd /usr/local/cluster/redis-3.0.5/src
./redis-trib.rb reshard 127.0.0.1:7001

系统会提示我们要移动多少哈希槽,这里移动1000个 Alt text

然后还需要指定把这些哈希槽转移到哪个节点上, Alt text

输入我们刚才新增的节点的ID: 1b85b140533946fe3e9a7700f22493171629e9ae

然后需要我们指定转移哪几个几点的哈希槽

Alt text

输入all 表示从所有的主节点中随机转移,凑够1000个哈希槽 然后再输入yes,redis集群就开始分配哈希槽了。 至此,一个新的主节点就添加完成了,执行命令查看现在的集群中节点的状态 redis-cli -c -p 7001 cluster nodes Alt text

5.增加从节点

执行下面的命令,增加从节点: ./redis-trib.rb add-node --slave 127.0.0.1:7008 127.0.0.1:7007 第一个参数为从节点,第二个参数为主节点。

Alt text 使用下面命令来确认一下127.0.0.1:7008是否已经成为127.0.0.1:7007的从节点: redis-cli -p 7001 cluster nodes | grep slave | grep 1b85b140533946fe3e9a7700f22493171629e9ae参数ID为主节点ID

看到下面图片中的情况就表示添加成功,表示7007只有一个从节点7008 Alt text

6.删除主节点

如果删除的节点是主节点,这里我们删除127.0.0.1:7007节点,这个节点有1000个哈希槽 首先要把节点中的哈希槽转移到其他节点中,执行下面的命令

cd /usr/local/cluster/redis-3.0.5/src
./redis-trib.rb reshard 127.0.0.1:7001
  • 系统会提示我们要移动多少哈希槽,这里移动1000个,因为127.0.0.1:7007节点有824个哈希槽
  • 然后系统提示我们输入要接收这些哈希槽的节点的ID,这里使用127.0.0.1:7001的节点ID
  • 然后要我们选择从那些节点中转出哈希槽,这里一定要输入127.0.0.1:7007这个节点的ID,最后输入done表示输入完毕
  • 上面用到的数值和ID都可以从这段信息中找到。

Alt text 最后一步,使用下面的命令把这个节点删除

cd /usr/local/cluster/redis-3.0.5/src
./redis-trib.rb del-node 127.0.0.1:7001 127.0.0.1:7007

第一个参数是集群中的任何一个主节点地址,而第二个参数是要删除节点的 ID

7.删除从节点

如果节点是从节点的,直接使用下面的命令删除即可。

cd /usr/local/cluster/redis-3.0.5/src
./redis-trib.rb del-node 127.0.0.1:7001 127.0.0.1:7008

转载请注明出处:
文章地址:Redis3.0.1集群动态增加或删除节点
文章作者:凌风
原始连接:https://lingfeng.me/blog/redis/01-redis-cluster-addnode/
许可协议:转载请注明原文链接及作者。

系列博文:Redis系列文章

HomeBrew 安装及常用命令

HomeBrew 是 Mac OSX 上的软件包管理工具,能在 Mac 中方便的安装软件或者卸载软件, 使用命令,非常方便。 Continue reading