Redis Cluster中删除一个节点

在一个集群中有4主4从,假设为M1+S1,M2+S2,M3+S3,M4+S4。每个master节点有4096 slots。现在要将M4从集群中删掉。那么步骤如下:
1)执行如下命令

redis-trib.rb reshard 192.168.2.107:7001

ip和port可以是集群中任何一个实例。输入要移动的slots是1365(平均),然后选好一个目标,比如M1,源肯定是M4,一路执行完成后,发现M1上多了1365个slots;而M4上则少了1365个slots。
2)从M4移出1365个slots到M2中,命令同上。
3)从M4移出1366个slots到M3中,命令同上。
4)执行命令如下

redis-trib.rb del-node 
	192.168.2.118:7003 
	c71d99aecf1ba58ecb9640d5509fd7f6de4b96c9

这条命令一执行完,不仅M4从集群中踢出去了,而且M4也已经shutdown了。
注意:
1) redis-trib.rb del-node 命令不仅将M4从集群中踢出去了,而且M4也已经shutdown了。
2)当你清空了一个master的hashslot时,redis cluster就会自动将其slave挂载到其他master上去,这个时候就只要删除掉master就可以了。


版权声明:本文为zjuwzp原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。