redis3.x集群-删除集群中的节点
1. 如果删除的节点是主节点,那么此节点中有哈希槽,需要把删除的节点中的哈希槽转移到其他节点中,执行下面命令,还是转移哈希槽的那个命令。
1)先删除从节点
# cd/usr/local/redis-3.2.9/src/
# ./redis-trib.rb del-node 192.168.8.150:7000 90b99192b544286e67fdbf93d210ad98d51e14c3
注意:其中的del-node 后面加的192.168.8.150:7000 为集群标示,最后面为要删除的节点的ID,此次删除那个新加的7007的从节点。
执行信息为:
[[email protected] src]# cd/usr/local/redis-3.2.9/src/
[[email protected] src]# ./redis-trib.rb del-node 192.168.8.150:700090b99192b544286e67fdbf93d210ad98d51e14c3
>>> Removing node90b99192b544286e67fdbf93d210ad98d51e14c3 from cluster 192.168.8.150:7000
>>> Sending CLUSTERFORGET messages to the cluster...
>>> SHUTDOWN the node.
此时再次查看状态:
发现7007节点已经不存在了
2)删除主节点
2.1)首先一定要重新分配哈希槽,把要删除的主节点中原有的哈希槽转移到其他节点中。
使用分配哈希槽命令:
# cd usr/local/redis-3.2.9/src/
# ./redis-trib.rb reshard192.168.8.150:7000
和之前分配时操作一致,系统首先会提示要移动多少哈希槽,要删除的节点有多少个就得移动多少个,然后系统会提示输入要接收这些哈希槽的节点的ID,这里实验使用7001的节点ID。
最重要的是:之后会让我们选择执行all还是done。
此时一定要先输入7006这个要删除的节点的ID回车之后,再输入done再回车,有两步。
具体操作如下:
输入yes之后进行转移。
2.2) 再次使用查看集群信息命令,查看各节点当前信息状态,看是否已经转移成功。
redis-cli -c -h 192.168.8.150 -p 7000 cluster nodes
查看状态说明已经没有哈希槽了(紫色椭圆框标注)。
2.3) 此时再使用删除节点命令。进行删除。
./redis-trib.rb del-node192.168.8.150:7000 82002358e7805a0151bcf63e6fb7255ad4b3d3a3
后面跟着7006的节点ID
查看状态,验证是否删除。
redis-cli -c -h 192.168.8.150 -p 7000 cluster nodes
没有7006节点,说明已经删除。