redis 流水笔记 十 集群缩容

什么是集群缩容

   说白了就是下线节点,判断该节点上是否有slot,有的进行迁移后并使集群忘记该节点,否则直接忘记该节点。

2、步骤如下

   1、找到需要下线的节点

   2、判断该节点是否有slot,有的进行slot迁移

   3、下线节点

3、做法?

[root@hadoop05 bin]# ./redis-cli -p 8000 cluster nodes
8c2846698b49aed95674ad2e4eef5d501563f874 127.0.0.1:8005@18005 slave 30309728ad48df61e40d6f476740579e66398b02 0 1576589597238 6 connected
a1021b42a93d35dbf75b5b515ea50e20515e92b6 127.0.0.1:8003@18003 slave ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 0 1576589598000 4 connected
5623991f7d23e0dc09f17e19688d3a65b91002f0 127.0.0.1:8007@18007 master - 0 1576589600261 8 connected 0-1364 5461-6826 10923-12287
432fd513c07235f74a31bed836f533bf4ecb3889 127.0.0.1:8000@18000 myself,slave d238b4d6c4c54a614a57f0c6f99d07c296f9ff1b 0 1576589598000 1 connected
30309728ad48df61e40d6f476740579e66398b02 127.0.0.1:8001@18001 master - 0 1576589599252 2 connected 6827-10922
cb38909023f6e152cb6d638f0c8e9957d17ce4fa 127.0.0.1:8006@18006 slave 5623991f7d23e0dc09f17e19688d3a65b91002f0 0 1576589598247 8 connected
ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 127.0.0.1:8002@18002 master - 0 1576589599000 3 connected 12288-16383
d238b4d6c4c54a614a57f0c6f99d07c296f9ff1b 127.0.0.1:8004@18004 master - 0 1576589597000 7 connected 1365-5460
[root@hadoop05 bin]# ./redis-cli -p 8000 cluster nodes |grep master
5623991f7d23e0dc09f17e19688d3a65b91002f0 127.0.0.1:8007@18007 master - 0 1576589606000 8 connected 0-1364 5461-6826 10923-12287
30309728ad48df61e40d6f476740579e66398b02 127.0.0.1:8001@18001 master - 0 1576589606307 2 connected 6827-10922
ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 127.0.0.1:8002@18002 master - 0 1576589606000 3 connected 12288-16383
d238b4d6c4c54a614a57f0c6f99d07c296f9ff1b 127.0.0.1:8004@18004 master - 0 1576589605000 7 connected 1365-5460

可以看到我们现在有4个master节点。假设我们需要把8007的node进行下线。可以发现这个上面确实有数据slot的。

所以必须先迁移slot。

使用cluster 命令,arg 指的是 id 值。

  reshard        host:port
                 --cluster-from <arg>
                 --cluster-to <arg>
                 --cluster-slots <arg>
                 --cluster-yes
                 --cluster-timeout <arg>
                 --cluster-pipeline <arg>
                 --cluster-replace

我们发现8007 有slots如下

5623991f7d23e0dc09f17e19688d3a65b91002f0 127.0.0.1:8007@18007 master - 0 1576589606000 8 connected 0-1364 5461-6826 10923-12287

我们现在把0-1364 slots 迁移到8001上面去。

8001 的slots 的个数为

30309728ad48df61e40d6f476740579e66398b02 127.0.0.1:8001@18001 master - 0 1576591005000 9 connected  6827-10922

执行命令:

[root@hadoop05 bin]# ./redis-cli --cluster reshard 127.0.0.1:8007 --cluster-from 5623991f7d23e0dc09f17e19688d3a65b91002f0 --cluster-to 30309728ad48df61e40d6f476740579e66398b02 --cluster-slots 1365

查看结果:

[root@hadoop05 bin]# ./redis-cli -p 8000 cluster nodes | grep master
5623991f7d23e0dc09f17e19688d3a65b91002f0 127.0.0.1:8007@18007 master - 0 1576591003000 8 connected 5461-6826 10923-12287
30309728ad48df61e40d6f476740579e66398b02 127.0.0.1:8001@18001 master - 0 1576591005000 9 connected 0-1364 6827-10922
ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 127.0.0.1:8002@18002 master - 0 1576591006695 3 connected 12288-16383

发现执行成功;一次进行把剩余的slot 进行迁移

[root@hadoop05 bin]# ./redis-cli -p 8000 cluster nodes | grep master
5623991f7d23e0dc09f17e19688d3a65b91002f0 127.0.0.1:8007@18007 master - 0 1576591504000 8 connected 10928-12287
30309728ad48df61e40d6f476740579e66398b02 127.0.0.1:8001@18001 master - 0 1576591503652 9 connected 0-1364 6827-10922
ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 127.0.0.1:8002@18002 master - 0 1576591503000 10 connected 5461-6826 10923-10927 12288-16383
d238b4d6c4c54a614a57f0c6f99d07c296f9ff1b 127.0.0.1:8004@18004 master - 0 1576591505679 7 connected 1365-5460
[root@hadoop05 bin]# ./redis-cli -p 8000 cluster nodes | grep master
5623991f7d23e0dc09f17e19688d3a65b91002f0 127.0.0.1:8007@18007 master - 0 1576591592000 8 connected
30309728ad48df61e40d6f476740579e66398b02 127.0.0.1:8001@18001 master - 0 1576591593000 9 connected 0-1364 6827-10922
ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 127.0.0.1:8002@18002 master - 0 1576591595740 10 connected 5461-6826 10923-10927 12288-16383
d238b4d6c4c54a614a57f0c6f99d07c296f9ff1b 127.0.0.1:8004@18004 master - 0 1576591594758 11 connected 1365-5460 10928-12287

发现slots都已经迁移完毕了。现在可以下线该节点了,

注意一个问题: 先下线slave节点还是 master节点?

我们知道 主从机制,如果master节点宕机,slave节点会成为主节点。

先下线master节点,在下线slave节点。

4、下线节点

  del-node       host:port node_id
[root@hadoop05 bin]# ./redis-cli  --cluster  del-node 127.0.0.1:8006 cb38909023f6e152cb6d638f0c8e9957d17ce4fa
>>> Removing node cb38909023f6e152cb6d638f0c8e9957d17ce4fa from cluster 127.0.0.1:8006
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@hadoop05 bin]# ./redis-cli -p 8000 cluster ndoes
(error) ERR Unknown subcommand or wrong number of arguments for 'ndoes'. Try CLUSTER HELP.
[root@hadoop05 bin]# ./redis-cli -p 8000 cluster nodes
8c2846698b49aed95674ad2e4eef5d501563f874 127.0.0.1:8005@18005 slave 30309728ad48df61e40d6f476740579e66398b02 0 1576591844000 9 connected
a1021b42a93d35dbf75b5b515ea50e20515e92b6 127.0.0.1:8003@18003 slave ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 0 1576591844000 10 connected
5623991f7d23e0dc09f17e19688d3a65b91002f0 127.0.0.1:8007@18007 master - 0 1576591844000 8 connected
432fd513c07235f74a31bed836f533bf4ecb3889 127.0.0.1:8000@18000 myself,slave d238b4d6c4c54a614a57f0c6f99d07c296f9ff1b 0 1576591840000 1 connected
30309728ad48df61e40d6f476740579e66398b02 127.0.0.1:8001@18001 master - 0 1576591845769 9 connected 0-1364 6827-10922
ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 127.0.0.1:8002@18002 master - 0 1576591846783 10 connected 5461-6826 10923-10927 12288-16383
d238b4d6c4c54a614a57f0c6f99d07c296f9ff1b 127.0.0.1:8004@18004 master - 0 1576591846000 11 connected 1365-5460 10928-12287
[root@hadoop05 bin]# 

发现8006 节点确实离开了集群。node-id 是关键。

同理下线8007

[root@hadoop05 bin]# ./redis-cli  --cluster  del-node 127.0.0.1:8000 5623991f7d23e0dc09f17e19688d3a65b91002f0
>>> Removing node 5623991f7d23e0dc09f17e19688d3a65b91002f0 from cluster 127.0.0.1:8000
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@hadoop05 bin]# ./redis-cli -p 8000 cluster nodes
8c2846698b49aed95674ad2e4eef5d501563f874 127.0.0.1:8005@18005 slave 30309728ad48df61e40d6f476740579e66398b02 0 1576591967000 9 connected
a1021b42a93d35dbf75b5b515ea50e20515e92b6 127.0.0.1:8003@18003 slave ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 0 1576591965000 10 connected
432fd513c07235f74a31bed836f533bf4ecb3889 127.0.0.1:8000@18000 myself,slave d238b4d6c4c54a614a57f0c6f99d07c296f9ff1b 0 1576591964000 1 connected
30309728ad48df61e40d6f476740579e66398b02 127.0.0.1:8001@18001 master - 0 1576591967263 9 connected 0-1364 6827-10922
ba807182f5cc573fc100d4d64ef9a4b1ecf0419f 127.0.0.1:8002@18002 master - 0 1576591967000 10 connected 5461-6826 10923-10927 12288-16383
d238b4d6c4c54a614a57f0c6f99d07c296f9ff1b 127.0.0.1:8004@18004 master - 0 1576591968279 11 connected 1365-5460 10928-12287
[root@hadoop05 bin]# 

可以发现8007 也离开了集群。

发布了61 篇原创文章 · 获赞 1 · 访问量 655

猜你喜欢

转载自blog.csdn.net/u012842247/article/details/103588280