redis 5 cluster集群增加节点动态扩容的步骤

redis 5的集群支持在有负载的情况下增加节点动态扩容。

已有集群为6个节点127.0.0.1:7000 - 127.0.0.1:7005,3组主从节点。现要增加第4组主从节点127.0.0.1:7006,127.0.0.1:7007.

步骤如下:

1.创建一个新的主节点127.0.0.1:7006。命令里需要指定一个已有节点以便于获取集群信息,本例是指定的127.0.0.1:7000。

redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000

注意已知节点一定要放到最后,不要写反了,否则会报如下错误:

>>> Check for open slots...
>>> Check slots coverage...
[ERR] Not all 16384 slots are covered by nodes.

2.将127.0.0.1:7007创建为127.0.0.1:7006的从节点。命令里需要指定一个已有节点以便于获取集群信息,本例是指定的127.0.0.1:7000。因为,集群会自动为从节点数最少的主节点创建从节点,所以这里不需要指定主节点。

redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7000 --cluster-slave

当然也可以指定主节点

redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7000 --cluster-slave --cluster-master-id e44678abed249e22482559136bf45280fd3ac281

7006的node ID可以由如下命令获取

[root@dev redis-cluster]# ./redis-cli -p 7006 cluster nodes | grep myself
e44678abed249e22482559136bf45280fd3ac281 127.0.0.1:7006@17006 myself,master - 0 1586936487000 0 connected

3. reshard slots. 因为redis 5现在还不支持自动平衡slot,所以需要自行计算需要移动的slot数量,并手动执行命令。这个例子,需要从3组已有的主节点上各移动1365个slot到新的主节点127.0.0.1:7006,以达到均衡。

redis-cli --cluster reshard 127.0.0.1:7000 --cluster-from e1a033e07f0064e6400825b4ddbcd6680c032d10 --cluster-to e44678abed249e22482559136bf45280fd3ac281 --cluster-slots 1365 --cluster-yes

redis-cli --cluster reshard 127.0.0.1:7000 --cluster-from ad2f42a9068b6b7d11174f6770ae4d51e4f536d6 --cluster-to e44678abed249e22482559136bf45280fd3ac281 --cluster-slots 1365 --cluster-yes

redis-cli --cluster reshard 127.0.0.1:7000 --cluster-from dbf8c247a5657b7a78890becb94a22f3482f5eca --cluster-to e44678abed249e22482559136bf45280fd3ac281 --cluster-slots 1365 --cluster-yes

需要指出的是上述3条命令不能放在一个脚本里连续执行,需要间隔一定时间,否则集群可能会报错:

[ERR] Nodes don't agree about configuration!

4.reshard完成后,查看集群状态,可以看到127.0.0.1:7006作为主节点存储了3段slot分别是 0-1364 5461-6825 10923-12287

127.0.0.1:7000> cluster nodes
5ca679d3fa5606d8c247595fc4eca622e6ec962c 127.0.0.1:7004@17004 slave e1a033e07f0064e6400825b4ddbcd6680c032d10 0 1586938032000 5 connected
ad2f42a9068b6b7d11174f6770ae4d51e4f536d6 127.0.0.1:7003@17003 master - 0 1586938031000 8 connected 6826-10922
620320cd85531d16f9508cf4c55c283186b3febb 127.0.0.1:7001@17001 slave ad2f42a9068b6b7d11174f6770ae4d51e4f536d6 0 1586938031875 8 connected
dbf8c247a5657b7a78890becb94a22f3482f5eca 127.0.0.1:7005@17005 master - 0 1586938032375 7 connected 1365-5460
cbb1740c5affb7e1d688d8433a9c7df70e87ecd7 127.0.0.1:7000@17000 myself,slave dbf8c247a5657b7a78890becb94a22f3482f5eca 0 1586938031000 1 connected
391d622c24df9121b3c712c0d8a97ca985783ac3 127.0.0.1:7007@17007 slave e44678abed249e22482559136bf45280fd3ac281 0 1586938031000 9 connected
e44678abed249e22482559136bf45280fd3ac281 127.0.0.1:7006@17006 master - 0 1586938031574 9 connected 0-1364 5461-6825 10923-12287
e1a033e07f0064e6400825b4ddbcd6680c032d10 127.0.0.1:7002@17002 master - 0 1586938032375 3 connected 12288-16383

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值