Redis5 集群扩容

一、环境准备

1、部署Redis5集群(见前一篇文章)

2、增加节点

master

172.16.254.121:7001

slave

172.16.254.122:7002

并启动redis进程

二、集群扩容

添加节点 172.16.254.121:7001到集群

redis-cli --cluster add-node 172.16.254.121:7001 172.16.254.124:7004
>>> Adding node 172.16.254.121:7001 to cluster 172.16.254.124:7004
>>> Performing Cluster Check (using node 172.16.254.124:7004)
M: dae116bae245c1d9b94643c627243f0122dec6ad 172.16.254.124:7004
   slots:[0-1499],[2999-5460] (3962 slots) master
   1 additional replica(s)
S: 0600bacf8e9be9572c780090cb242e1e1e0206a2 172.16.254.129:7009
   slots: (0 slots) slave
   replicates a489464dfd1321cdbe2a0f464856218a38127e19
M: a489464dfd1321cdbe2a0f464856218a38127e19 172.16.254.125:7005
   slots:[1500-2998],[5461-11423] (7462 slots) master
   1 additional replica(s)
S: 8205aa9f24882516bb8bbe0fb7d2c593271de152 172.16.254.127:7007
   slots: (0 slots) slave
   replicates 5aa077444a506afad1ff796616124a0b7298c125
S: 804ecd22d3de6dc2080a8de572a320407596b6fb 172.16.254.128:7008
   slots: (0 slots) slave
   replicates dae116bae245c1d9b94643c627243f0122dec6ad
M: 5aa077444a506afad1ff796616124a0b7298c125 172.16.254.126:7006
   slots:[11424-16383] (4960 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.
>>> Send CLUSTER MEET to node 172.16.254.121:7001 to make it join the cluster.
[OK] New node added correctly.

添加 172.16.254.122:7002到集群

redis-cli --cluster add-node 172.16.254.122:7002 172.16.254.124:7004
>>> Adding node 172.16.254.122:7002 to cluster 172.16.254.124:7004
>>> Performing Cluster Check (using node 172.16.254.124:7004)
M: dae116bae245c1d9b94643c627243f0122dec6ad 172.16.254.124:7004
   slots:[0-1499],[2999-5460] (3962 slots) master
   1 additional replica(s)
S: 0600bacf8e9be9572c780090cb242e1e1e0206a2 172.16.254.129:7009
   slots: (0 slots) slave
   replicates a489464dfd1321cdbe2a0f464856218a38127e19
M: a489464dfd1321cdbe2a0f464856218a38127e19 172.16.254.125:7005
   slots:[1500-2998],[5461-11423] (7462 slots) master
   1 additional replica(s)
S: 8205aa9f24882516bb8bbe0fb7d2c593271de152 172.16.254.127:7007
   slots: (0 slots) slave
   replicates 5aa077444a506afad1ff796616124a0b7298c125
M: 57bfd28d400e95395b10fb62e77a2b9f9a05dddb 172.16.254.121:7001
   slots: (0 slots) master
S: 804ecd22d3de6dc2080a8de572a320407596b6fb 172.16.254.128:7008
   slots: (0 slots) slave
   replicates dae116bae245c1d9b94643c627243f0122dec6ad
M: 5aa077444a506afad1ff796616124a0b7298c125 172.16.254.126:7006
   slots:[11424-16383] (4960 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.
>>> Send CLUSTER MEET to node 172.16.254.122:7002 to make it join the cluster.
[OK] New node added correctly.

查看集群状态:

redis-cli -c -h 172.16.254.124 -p 7004 cluster nodes
01049b46ff785dbc99d26f628893ab6cb24f86a1 172.16.254.122:7002@17002 master - 0 1614780779000 11 connected
0600bacf8e9be9572c780090cb242e1e1e0206a2 172.16.254.129:7009@17009 slave a489464dfd1321cdbe2a0f464856218a38127e19 0 1614780776000 9 connected
a489464dfd1321cdbe2a0f464856218a38127e19 172.16.254.125:7005@17005 master - 0 1614780779056 9 connected 1500-2998 5461-11423
8205aa9f24882516bb8bbe0fb7d2c593271de152 172.16.254.127:7007@17007 slave 5aa077444a506afad1ff796616124a0b7298c125 0 1614780781164 10 connected
57bfd28d400e95395b10fb62e77a2b9f9a05dddb 172.16.254.121:7001@17001 master - 0 1614780779000 0 connected
dae116bae245c1d9b94643c627243f0122dec6ad 172.16.254.124:7004@17004 myself,master - 0 1614780777000 8 connected 0-1499 2999-5460
804ecd22d3de6dc2080a8de572a320407596b6fb 172.16.254.128:7008@17008 slave dae116bae245c1d9b94643c627243f0122dec6ad 0 1614780780104 8 connected
5aa077444a506afad1ff796616124a0b7298c125 172.16.254.126:7006@17006 master - 0 1614780776000 10 connected 11424-16383

可以看到此时 172.16.254.121:7001和 172.16.254.122:7002都认为自己是master,不要着急,往下做。

我们将 172.16.254.121:7001作为master节点,并对其分片。

redis-cli --cluster reshard 172.16.254.121:7001
>>> Performing Cluster Check (using node 172.16.254.121:7001)
M: 57bfd28d400e95395b10fb62e77a2b9f9a05dddb 172.16.254.121:7001
   slots: (0 slots) master
S: 8205aa9f24882516bb8bbe0fb7d2c593271de152 172.16.254.127:7007
   slots: (0 slots) slave
   replicates 5aa077444a506afad1ff796616124a0b7298c125
M: 01049b46ff785dbc99d26f628893ab6cb24f86a1 172.16.254.122:7002
   slots: (0 slots) master
M: a489464dfd1321cdbe2a0f464856218a38127e19 172.16.254.125:7005
   slots:[1500-2998],[5461-11423] (7462 slots) master
   1 additional replica(s)
M: 5aa077444a506afad1ff796616124a0b7298c125 172.16.254.126:7006
   slots:[11424-16383] (4960 slots) master
   1 additional replica(s)
S: 0600bacf8e9be9572c780090cb242e1e1e0206a2 172.16.254.129:7009
   slots: (0 slots) slave
   replicates a489464dfd1321cdbe2a0f464856218a38127e19
S: 804ecd22d3de6dc2080a8de572a320407596b6fb 172.16.254.128:7008
   slots: (0 slots) slave
   replicates dae116bae245c1d9b94643c627243f0122dec6ad
M: dae116bae245c1d9b94643c627243f0122dec6ad 172.16.254.124:7004
   slots:[0-1499],[2999-5460] (3962 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.
How many slots do you want to move (from 1 to 16384)? 2000
#分配多少个槽给172.16.254.121
What is the receiving node ID? 57bfd28d400e95395b10fb62e77a2b9f9a05dddb #接受节点的ID,这里我们写172.16.254.121:7001的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: 5aa077444a506afad1ff796616124a0b7298c125
#填写槽的来源,我们这里把172.16.254.126:7006分给172.16.254.121,所以填写5aa077444a506afad1ff796616124a0b7298c125

再次查看集群各个节点信息:

redis-cli -c -h 172.16.254.124 -p 7004 cluster nodes
01049b46ff785dbc99d26f628893ab6cb24f86a1 172.16.254.122:7002@17002 master - 0 1614781289324 11 connected
0600bacf8e9be9572c780090cb242e1e1e0206a2 172.16.254.129:7009@17009 slave a489464dfd1321cdbe2a0f464856218a38127e19 0 1614781292813 9 connected
a489464dfd1321cdbe2a0f464856218a38127e19 172.16.254.125:7005@17005 master - 0 1614781291000 9 connected 1500-2998 5461-11423
8205aa9f24882516bb8bbe0fb7d2c593271de152 172.16.254.127:7007@17007 slave 5aa077444a506afad1ff796616124a0b7298c125 0 1614781293000 10 connected
57bfd28d400e95395b10fb62e77a2b9f9a05dddb 172.16.254.121:7001@17001 master - 0 1614781295447 12 connected 11424-13423
dae116bae245c1d9b94643c627243f0122dec6ad 172.16.254.124:7004@17004 myself,master - 0 1614781294000 8 connected 0-1499 2999-5460
804ecd22d3de6dc2080a8de572a320407596b6fb 172.16.254.128:7008@17008 slave dae116bae245c1d9b94643c627243f0122dec6ad 0 1614781291000 8 connected
5aa077444a506afad1ff796616124a0b7298c125 172.16.254.126:7006@17006 master - 0 1614781294251 10 connected 13424-16383

可以看到172.16.254.121:7001已经分到了一些槽,而172.16.254.122:7002什么都没得到,还是一脸懵逼。我们把 172.16.254.122:7002设置为 172.16.254.121:7001的从节点。

redis-cli -c -h 172.16.254.122 -p 7002
172.16.254.122:7002> cluster replicate 57bfd28d400e95395b10fb62e77a2b9f9a05dddb
OK

查看集群状态:

172.16.254.122:7002> cluster nodes
5aa077444a506afad1ff796616124a0b7298c125 172.16.254.126:7006@17006 master - 0 1614781558502 10 connected 13424-16383
a489464dfd1321cdbe2a0f464856218a38127e19 172.16.254.125:7005@17005 master - 0 1614781557238 9 connected 1500-2998 5461-11423
8205aa9f24882516bb8bbe0fb7d2c593271de152 172.16.254.127:7007@17007 slave 5aa077444a506afad1ff796616124a0b7298c125 0 1614781555914 10 connected
dae116bae245c1d9b94643c627243f0122dec6ad 172.16.254.124:7004@17004 master - 0 1614781555000 8 connected 0-1499 2999-5460
804ecd22d3de6dc2080a8de572a320407596b6fb 172.16.254.128:7008@17008 slave dae116bae245c1d9b94643c627243f0122dec6ad 0 1614781556000 8 connected
57bfd28d400e95395b10fb62e77a2b9f9a05dddb 172.16.254.121:7001@17001 master - 0 1614781558641 12 connected 11424-13423
0600bacf8e9be9572c780090cb242e1e1e0206a2 172.16.254.129:7009@17009 slave a489464dfd1321cdbe2a0f464856218a38127e19 0 1614781555570 9 connected
01049b46ff785dbc99d26f628893ab6cb24f86a1 172.16.254.122:7002@17002 myself,slave 57bfd28d400e95395b10fb62e77a2b9f9a05dddb 0 1614781552000 11 connected

此时 172.16.254.122:7002终于意识到自己是slave了。

三、集群验证

在新加的主节点 172.16.254.121写入数据

redis-cli -c -h 172.16.254.121 -p 7001
172.16.254.121:7001> set city22 kunming
-> Redirected to slot [7075] located at 172.16.254.125:7005
OK

在老节点 172.16.254.124查询数据:

172.16.254.124:7004> get city22
-> Redirected to slot [7075] located at 172.16.254.125:7005
"kunming"

可以看到数据在老节点已经可以查到。

在老节点 172.16.254.126写入数据:

172.16.254.126:7006> set city23 luoyang
-> Redirected to slot [2946] located at 172.16.254.125:7005
OK

在新节点 172.16.254.122查询数据:

172.16.254.122:7002> get city23
-> Redirected to slot [2946] located at 172.16.254.125:7005
"luoyang"

在老节点插入数据,新节点也可以查到。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值