Redis集群一旦启动,就不能轻易删除掉一个节点了。
需要由redis-trib.rg这个ruby脚本行使集群管理的功能。所有的哈希槽都分配于master节点
一、delete master node
1. 重新分片 reshard后的参数可以是集群中任何一个节点
redis-3.2.9/src/redis-trib.rb reshard 192.168.1.6:7000
2.删除主节点
redis-3.2.9/src/redis-trib.rb del-node 192.168.1.6:7001 '3a2c151ea5c1b37758ae244aa17ec51c64e99a4d'
rm /usr/local/redis/nodes/nodes-7001.conf # 不删除这个节点文件,就无法将改节点再次添加进去
二、delete slave node 不需要重新分配哈希槽,所有哈希槽由master节点分配
redis-3.2.9/src/redis-trib.rb del-node 192.168.1.6:8000 'b23f02065b617eade882163565b633e5b31717bb'
三、添加主节点
在上一步删除主节点[port:7002]后,该主节点服务自动停止。但是再次启动还是会加载nodes-7002.conf这个配置文件
所以在此启动该主节点前,需要将nodes-7002.conf删除,保证主节点[port:7002]为空的前提下,将其加入到集群。
3.1启动并检查是否为空
如图:节点只有一个,说明该节点未加入集群且所有槽位未分配,即为空节点。
3.2 加入集群 7000为集群中已存在的主节点
redis-3.2.9/src/redis-trib.rb add-node 192.168.1.6:7002 192.168.1.6:7000
四、添加从节点
添加从节点时,也需要先将nodes-[port].conf删除掉,再来启动从节点服务。
启动服务并将节点添加到集群
redis-server /etc/redis/redis-8001.conf && redis-3.2.9/src/redis-trib.rb add-node --slave 192.168.1.6:8001 192.168.1.6:7000
五。均衡槽位
通过rb脚本可以方便地将所有槽位平均分配: 7000是具有较少槽位的一个主节点
redis-3.2.9/src/redis-trib.rb rebalance 192.168.1.6:7000