redis 集群扩容

#目录
1、集群扩容
2、添加集群主节点
3、添加集群从节点
4、扩容集群问题

#详细过程

###1、集群扩容
添加一个新节点的过程基本上就是,添加一个空节点,然后,如果是作为主节点则移动一些哈希槽进去, 如果是从节点则设置其作为某个节点的副本即可。
添加空节点方式参考《Redis环境搭建说明》里提到的方式即可。
添加完空节点,并启动,然后我们先来添加这个空节点作为主节点加入集群。

参考:

http://www.ttlsa.com/redis/redis-cluster-theoretical-knowledge/

###2、添加集群主节点
(1)进入Redis 源码目录src下,使用redis-trib.rb add-node命令添加:

./redis-trib.rb  add-node  192.168.1.184:7006  192.168.1.184:7000 

其中第一参数“192.168.1.184:7006”代表要添加的新的空节点,“192.168.1.184:7000”代表集群中已存在的一个节点

命令执行返回:

>>> Adding node 192.168.1.184:7006 to cluster 192.168.1.184:7000
>>> Performing Cluster Check (using node 192.168.1.184:7000)
S: a87b0bd7d01184260ebb79f01ebc8c60108c3786 192.168.1.184:7000
   slots: (0 slots) slave
   replicates 0ed40b206f5da1a1caf0c8e90917efeba4074594
M: 0ed40b206f5da1a1caf0c8e90917efeba4074594 192.168.1.208:7003
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755 192.168.1.208:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 57f9d16a2d50c55440d47202a2fbfe2901c9f044 192.168.1.203:7005
   slots: (0 slots) slave
   replicates f16d03c9afa777c0aca78867f81c0da155c21ffa
M: f16d03c9afa777c0aca78867f81c0da155c21ffa 192.168.1.203:7004
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 9623c893341929d1693674ae74c1c76d5d4e58c5 192.168.1.184:7001
   slots: (0 slots) slave
   replicates 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.1.184:7006 to make it join the cluster.
[OK] New node added correctly.

(2)使用集群查看命令,查看当前的集群状态:

./redis-trib.rb check  192.168.1.184:7000

命令执行返回:

>>> Performing Cluster Check (using node 192.168.1.184:7000)
S: a87b0bd7d01184260ebb79f01ebc8c60108c3786 192.168.1.184:7000
   slots: (0 slots) slave
   replicates 0ed40b206f5da1a1caf0c8e90917efeba4074594
M: d3770d78d4a356e05dcc9c6aed68cd4a316c796f 192.168.1.184:7006
   slots: (0 slots) master
   0 additional replica(s)
M: 0ed40b206f5da1a1caf0c8e90917efeba4074594 192.168.1.208:7003
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755 192.168.1.208:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 57f9d16a2d50c55440d47202a2fbfe2901c9f044 192.168.1.203:7005
   slots: (0 slots) slave
   replicates f16d03c9afa777c0aca78867f81c0da155c21ffa
M: f16d03c9afa777c0aca78867f81c0da155c21ffa 192.168.1.203:7004
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 9623c893341929d1693674ae74c1c76d5d4e58c5 192.168.1.184:7001
   slots: (0 slots) slave
   replicates 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

其中红色自体为,新加入集群的新主节点,其对应的哈希槽个数为0,副本数也为0。

(3)使用redis-trib.rb reshard命令来移动哈希槽到新主节点,命令:

./redis-trib.rb reshard 192.168.1.184:7000

命令执行返回:

>>> Performing Cluster Check (using node 192.168.1.184:7000)
S: a87b0bd7d01184260ebb79f01ebc8c60108c3786 192.168.1.184:7000
   slots: (0 slots) slave
   replicates 0ed40b206f5da1a1caf0c8e90917efeba4074594
M: d3770d78d4a356e05dcc9c6aed68cd4a316c796f 192.168.1.184:7006
   slots: (0 slots) master
   0 additional replica(s)
M: 0ed40b206f5da1a1caf0c8e90917efeba4074594 192.168.1.208:7003
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755 192.168.1.208:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 57f9d16a2d50c55440d47202a2fbfe2901c9f044 192.168.1.203:7005
   slots: (0 slots) slave
   replicates f16d03c9afa777c0aca78867f81c0da155c21ffa
M: f16d03c9afa777c0aca78867f81c0da155c21ffa 192.168.1.203:7004
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 9623c893341929d1693674ae74c1c76d5d4e58c5 192.168.1.184:7001
   slots: (0 slots) slave
   replicates 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)?1000

当前提示要移动的哈希槽个数,这里输入1000,回车,命令继续执行:

What is the receiving node ID? d3770d78d4a356e05dcc9c6aed68cd4a316c796f

这里询问,要接收哈希槽的节点id,输入我们新加入的主节点id,回车,命令继续执行:

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:all

这里询问,要从哪些已有的主节点中移除哈希槽,如果从所有的节点移除,直接填all即可,如果不想从所有节点移除,添加要移除的主节点id即可,我们这里填all来执行,命令返回:

    Moving slot 5950 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5951 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5952 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5953 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5954 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5955 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5956 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5957 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5958 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5959 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5960 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    Moving slot 5961 from 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
    ...
    Moving slot 11574 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11575 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11576 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11577 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11578 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11579 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11580 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11581 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11582 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11583 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11584 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11585 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11586 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11587 from f16d03c9afa777c0aca78867f81c0da155c21ffa
    Moving slot 11588 from f16d03c9afa777c0aca78867f81c0da155c21ffa
Do you want to proceed with the proposed reshard plan (yes/no)?Yes

这里询问是否确定移动的操作,填yes,回车,命令继续执行:

Moving slot 5950 from 192.168.1.208:7002 to 192.168.1.184:7006: 
Moving slot 5951 from 192.168.1.208:7002 to 192.168.1.184:7006: 
Moving slot 5952 from 192.168.1.208:7002 to 192.168.1.184:7006: 
Moving slot 5953 from 192.168.1.208:7002 to 192.168.1.184:7006: 
Moving slot 5954 from 192.168.1.208:7002 to 192.168.1.184:7006: 
Moving slot 5955 from 192.168.1.208:7002 to 192.168.1.184:7006: 
Moving slot 5956 from 192.168.1.208:7002 to 192.168.1.184:7006: 
Moving slot 5957 from 192.168.1.208:7002 to 192.168.1.184:7006: 
...
Moving slot 11576 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11577 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11578 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11579 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11580 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11581 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11582 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11583 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11584 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11585 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11586 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11587 from 192.168.1.203:7004 to 192.168.1.184:7006: 
Moving slot 11588 from 192.168.1.203:7004 to 192.168.1.184:7006:

(4)到此移动哈希槽的动作完成,再重复执行上面过程,移动数量也是1000,然后我们使用集群查看命令查看下当前集群状态:

./redis-trib.rb check  192.168.1.184:7000

命令执行返回:

>>> Performing Cluster Check (using node 192.168.1.184:7000)
S: a87b0bd7d01184260ebb79f01ebc8c60108c3786 192.168.1.184:7000
   slots: (0 slots) slave
   replicates 0ed40b206f5da1a1caf0c8e90917efeba4074594
M: d3770d78d4a356e05dcc9c6aed68cd4a316c796f 192.168.1.184:7006
   slots:0-666,5461-6127,10923-11588 (2000 slots) master
   0 additional replica(s)
M: 0ed40b206f5da1a1caf0c8e90917efeba4074594 192.168.1.208:7003
   slots:667-5460 (4794 slots) master
   1 additional replica(s)
M: 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755 192.168.1.208:7002
   slots:6128-10922 (4795 slots) master
   1 additional replica(s)
S: 57f9d16a2d50c55440d47202a2fbfe2901c9f044 192.168.1.203:7005
   slots: (0 slots) slave
   replicates f16d03c9afa777c0aca78867f81c0da155c21ffa
M: f16d03c9afa777c0aca78867f81c0da155c21ffa 192.168.1.203:7004
   slots:11589-16383 (4795 slots) master
   1 additional replica(s)
S: 9623c893341929d1693674ae74c1c76d5d4e58c5 192.168.1.184:7001
   slots: (0 slots) slave
   replicates 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

其中,红色自体可以看到已移动入新节点的哈希槽为2000,其他主节点中的哈希槽都有减少。到此主节点的添加即完成。接下来添加从节点,首先使用同样的方式添加一个空白节点,并启动,然后进行集群添加操作,见下节。

参考文档:

http://blog.csdn.net/xu470438000/article/details/42972123

###3、添加集群从节点
(1)使用redis-trib.rb add-node添加新节点到集群:

./redis-trib.rb add-node --slave 192.168.1.184:7007 192.168.1.184:7006

命令执行返回:

>>> Adding node 192.168.1.184:7007 to cluster 192.168.1.184:7006
>>> Performing Cluster Check (using node 192.168.1.184:7006)
M: d3770d78d4a356e05dcc9c6aed68cd4a316c796f 192.168.1.184:7006
   slots:0-666,5461-6127,10923-11588 (2000 slots) master
   0 additional replica(s)
M: 0ed40b206f5da1a1caf0c8e90917efeba4074594 192.168.1.208:7003
   slots:667-5460 (4794 slots) master
   1 additional replica(s)
S: 57f9d16a2d50c55440d47202a2fbfe2901c9f044 192.168.1.203:7005
   slots: (0 slots) slave
   replicates f16d03c9afa777c0aca78867f81c0da155c21ffa
M: f16d03c9afa777c0aca78867f81c0da155c21ffa 192.168.1.203:7004
   slots:11589-16383 (4795 slots) master
   1 additional replica(s)
S: 9623c893341929d1693674ae74c1c76d5d4e58c5 192.168.1.184:7001
   slots: (0 slots) slave
   replicates 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
S: a87b0bd7d01184260ebb79f01ebc8c60108c3786 192.168.1.184:7000
   slots: (0 slots) slave
   replicates 0ed40b206f5da1a1caf0c8e90917efeba4074594
M: 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755 192.168.1.208:7002
   slots:6128-10922 (4795 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
Automatically selected master 192.168.1.184:7006
>>> Send CLUSTER MEET to node 192.168.1.184:7007 to make it join the cluster.
Waiting for the cluster to join...
>>> Configure node as replica of 192.168.1.184:7006.
[OK] New node added correctly.

(2)然后我们使用集群查看命令查看下当前集群状态:

./redis-trib.rb check  192.168.1.184:7000

命令执行返回:

>>> Performing Cluster Check (using node 192.168.1.184:7000)
S: a87b0bd7d01184260ebb79f01ebc8c60108c3786 192.168.1.184:7000
   slots: (0 slots) slave
   replicates 0ed40b206f5da1a1caf0c8e90917efeba4074594
M: d3770d78d4a356e05dcc9c6aed68cd4a316c796f 192.168.1.184:7006
   slots:0-666,5461-6127,10923-11588 (2000 slots) master
   1 additional replica(s)
M: 0ed40b206f5da1a1caf0c8e90917efeba4074594 192.168.1.208:7003
   slots:667-5460 (4794 slots) master
   1 additional replica(s)
M: 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755 192.168.1.208:7002
   slots:6128-10922 (4795 slots) master
   1 additional replica(s)
S: 9e927a76b02ba287017a06937b1f64d96ce90bb7 192.168.1.184:7007
   slots: (0 slots) slave
   replicates d3770d78d4a356e05dcc9c6aed68cd4a316c796f
S: 57f9d16a2d50c55440d47202a2fbfe2901c9f044 192.168.1.203:7005
   slots: (0 slots) slave
   replicates f16d03c9afa777c0aca78867f81c0da155c21ffa
M: f16d03c9afa777c0aca78867f81c0da155c21ffa 192.168.1.203:7004
   slots:11589-16383 (4795 slots) master
   1 additional replica(s)
S: 9623c893341929d1693674ae74c1c76d5d4e58c5 192.168.1.184:7001
   slots: (0 slots) slave
   replicates 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

以上记录的红色自体,我们可以看出,192.168.1.184:7006 主节点的从节点数已经由0变为1了。到此从节点的添加即完成。

###4、扩容集群问题
(1)从节点添加异常的问题,问题提示如下所示:

>>> Adding node 192.168.1.184:7007 to cluster 192.168.1.184:7006
>>> Performing Cluster Check (using node 192.168.1.184:7006)
M: d3770d78d4a356e05dcc9c6aed68cd4a316c796f 192.168.1.184:7006
   slots:0-666,5461-6127,10923-11588 (2000 slots) master
   0 additional replica(s)
M: 0ed40b206f5da1a1caf0c8e90917efeba4074594 192.168.1.208:7003
   slots:667-5460 (4794 slots) master
   1 additional replica(s)
S: 57f9d16a2d50c55440d47202a2fbfe2901c9f044 192.168.1.203:7005
   slots: (0 slots) slave
   replicates f16d03c9afa777c0aca78867f81c0da155c21ffa
M: f16d03c9afa777c0aca78867f81c0da155c21ffa 192.168.1.203:7004
   slots:11589-16383 (4795 slots) master
   1 additional replica(s)
S: 9623c893341929d1693674ae74c1c76d5d4e58c5 192.168.1.184:7001
   slots: (0 slots) slave
   replicates 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755
S: a87b0bd7d01184260ebb79f01ebc8c60108c3786 192.168.1.184:7000
   slots: (0 slots) slave
   replicates 0ed40b206f5da1a1caf0c8e90917efeba4074594
M: 8b8c315d4cf7a1ba3d68586c9fdbefac6e58d755 192.168.1.208:7002
   slots:6128-10922 (4795 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
Automatically selected master 192.168.1.184:7006
[ERR] Node 192.168.1.184:7007 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解决:
这是因为添加的从节点曾经在该集群存在,删除该节点文件夹里的appendonly.aof、 dump.rdb 、nodes.conf三个文件,作为一个新节点加入则不会有该问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值