redis实战第十篇 集群收缩

时间:2022-07-23
本文章向大家介绍redis实战第十篇 集群收缩,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

集群收缩的过程和集群扩容的过程正好是反过来的 将207和207的从节点208从集群下线 1.迁移207上的4096个槽 使用redis-cli迁移槽,先将1365个槽迁移到31上

# redis-cli --cluster reshard 192.168.0.207:6380
...
How many slots do you want to move (from 1 to 16384)? 1365
What is the receiving node ID? 92fd7c2a7b7b8933d1019e72a852f621f6b4faff
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: b94828e8816574d66b413c6bfa6de130eb14ee66
Source node #2: done
...

再将1365个槽迁移到32上

# redis-cli --cluster reshard 192.168.0.207:6380
How many slots do you want to move (from 1 to 16384)? 1365                                    
What is the receiving node ID? ed93d5ea74751d7124a2d5830ce0806a0c962d43
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: b94828e8816574d66b413c6bfa6de130eb14ee66
Source node #2: done
...

再将1366个槽迁移到33上

# redis-cli --cluster reshard 192.168.0.207:6380
How many slots do you want to move (from 1 to 16384)? 1366
What is the receiving node ID? 3641ec8359d5400e5540d77600a2360de8ca367e
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: b94828e8816574d66b413c6bfa6de130eb14ee66
Source node #2: done
...

确认状态,207不再负责任何槽

127.0.0.1:6380> cluster nodes
3c1b16407c984f33b7c0ff06b8a7bbcc59c1d91b 192.168.0.208:6380@16380 slave 3641ec8359d5400e5540d77600a2360de8ca367e 0 1550231654002 15 connected
b94828e8816574d66b413c6bfa6de130eb14ee66 192.168.0.207:6380@16380 master - 0 1550231657009 12 connected

2.忘记节点 Redis提供了cluster forget {downNodeId}命令实现该功能,当节点收到cluster forget {downNodeId}该命令后会在60秒内将该节点加入到禁用列表,但是到了60秒后又会与节点进行Gossip通信。所以要在60秒内在所有节点上执行该操作,如果节点较多很明显执行起来不方便。好在redis还提供另一个更方便的命令 redis-cli --cluster del-node {host:port} {downNodeId}。显示建议使用redis-cli来做忘记节点操作。对于主从都下线的情况,先下线从节点,再下线主节点,避免不必要的全量复制。

[root@kafka31 data]# redis-cli --cluster del-node 192.168.0.31:6380 3c1b16407c984f33b7c0ff06b8a7bbcc59c1d91b
>>> Removing node 3c1b16407c984f33b7c0ff06b8a7bbcc59c1d91b from cluster 192.168.0.31:6380
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@kafka31 data]# redis-cli --cluster del-node 192.168.0.31:6380 b94828e8816574d66b413c6bfa6de130eb14ee66
>>> Removing node b94828e8816574d66b413c6bfa6de130eb14ee66 from cluster 192.168.0.31:6380
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

3.确认集群状态

[root@kafka31 data]# redis-cli -p 6380
127.0.0.1:6380> cluster nodes
ed93d5ea74751d7124a2d5830ce0806a0c962d43 192.168.0.32:6380@16380 master - 0 1550232273000 14 connected 5461-6825 6827-10922
3ba3e8323b7b637c958977335bf7f7213c009929 192.168.0.35:6380@16380 slave ed93d5ea74751d7124a2d5830ce0806a0c962d43 0 1550232273000 14 connected
7fbf45fdc4d0780074f8fe324aac28ae686eebaa 192.168.0.34:6380@16380 slave 92fd7c2a7b7b8933d1019e72a852f621f6b4faff 0 1550232273753 13 connected
3641ec8359d5400e5540d77600a2360de8ca367e 192.168.0.33:6380@16380 master - 0 1550232275759 15 connected 6826 10923-16383
a5ac7dfedd81f2ecd9dd101ef8d9d4f70f895bbf 192.168.0.36:6380@16380 slave 3641ec8359d5400e5540d77600a2360de8ca367e 0 1550232274757 15 connected
92fd7c2a7b7b8933d1019e72a852f621f6b4faff 192.168.0.31:6380@16380 myself,master - 0 1550232274000 13 connected 0-5460

至此,集群节点下线完成。