想要删除集群节点中的某一个节点,需要严格执行2步:
1、 将这个节点上的所有插槽转移到其他节点上
2、 使用 Redis-trib.rb 删除节点
下面 假设我们要删除 6382 这个节点为例
1、 将这个节点上的所有插槽转移到其他节点上
1.1、查看集群节点情况:
- /usr/local/bin/redis-cli
- cluster nodes
/usr/local/bin/redis-cli
cluster nodes
2.2、 调整插槽
a ) 在 /my_soft/redis安装包及jar包/redis-3.0.4/src 目录下执行脚本:
- ./redis-trib.rb reshard 192.168.3.15:6382
./redis-trib.rb reshard 192.168.3.15:6382
b ) 选择需要转移的插槽的数量,因为 6382 上 有 100 个插槽,所以转移 100 个。
c ) 接收 转移的节点的id,我们转移到 6379 节点:904cfd517c446a9546a90cfafcc86f820b0883ab
d ) 输入插槽来源id,也就是6382的id : a3c45f11019e14bfabe47e7c4060772c473e86b3
e ) 输入done,开始转移
f ) 查看集群信息
可以 看到6382 节点上已经没有插槽了。
- /usr/local/bin/redis-cli
- cluster nodes
/usr/local/bin/redis-cli
cluster nodes
2、 使用 redis-trib.rb 删除节点
2.1、redis-trib.rb 语法命令
- del-node host:port node_id
del-node host:port node_id
2.2、删除节点
- ./redis-trib.rb del-node 192.168.3.15:6382 a3c45f11019e14bfabe47e7c4060772c473e86b3
./redis-trib.rb del-node 192.168.3.15:6382 a3c45f11019e14bfabe47e7c4060772c473e86b3
2.3、查看集群
执行命令:
- /usr/local/bin/redis-cli
- cluster nodes
/usr/local/bin/redis-cli
cluster nodes
可以看到集群中已经没有了6382 这个节点了。