redis 集群_Redis集群(cluster)-中:Redis集群重新分片(3)

Redis重分片介绍

Redis集群重分片:重分片意味着我们需要将节点的部分或者全部哈希槽转移到其他节点上,当我们需要对节点进行硬件维护或者扩容收缩Redis集群时可以使用.

例如,在如下的集群环境中,Redis架构为三主四从.

23044f791dd9414997d6653dbb1d3ff7

Redis集群节点信息

Redis通过重分片从集群中移除节点

集群需要缩小规模,将主节点ec2-redis-03(172.16.101.56)和它的从节点ec2-redis-06(172.16.101.60)从集群剔除,这就需要首先将主节点ec2-redis-03(172.16.101.56)的哈希槽转移到其他主节点,比如主节点ec2-redis-02(172.16.101.55).

转移哈希槽的命令语法为,该命令可以在任意集群中的节点上执行.

redis-cli --cluster reshard : --cluster-from  --cluster-to  --cluster-slots  --cluster-yes

例如将主节点ec2-redis-03(172.16.101.56)的哈希槽转移到主节点ec2-redis-02(172.16.101.55)上,移除的哈希槽数可以通过cluster nodes命令或者cluster slots命令查看.

$ redis-cli --cluster reshard 172.16.101.56:6379 --cluster-from 9dc64e2b206979b811bd81984d3d94ec154a9335 --cluster-to 6b5c74706f418b0c5f97614781f0e1b7e4bdc90d --cluster-slots 5383 --cluster-yes

命令执行过程中会伴随着哈希槽移动的log滚动日志

oving slot 16376 from 172.16.101.56:6379 to 172.16.101.55:6379: ...............Moving slot 16377 from 172.16.101.56:6379 to 172.16.101.55:6379: ............Moving slot 16378 from 172.16.101.56:6379 to 172.16.101.55:6379: ............Moving slot 16379 from 172.16.101.56:6379 to 172.16.101.55:6379: ..............Moving slot 16380 from 172.16.101.56:6379 to 172.16.101.55:6379: ...........Moving slot 16381 from 172.16.101.56:6379 to 172.16.101.55:6379: ............Moving slot 16382 from 172.16.101.56:6379 to 172.16.101.55:6379: .............Moving slot 16383 from 172.16.101.56:6379 to 172.16.101.55:6379: ...............

等哈希槽移动完成之后,再次查看集群节点信息

c9025c4251254e17a2a5e4e3bebb5581

重新分片结束后

可以看到主节点ec2-redis-03(172.16.101.56)的哈希槽已经转移到其他主节点ec2-redis-02(172.16.101.55)

此时我们可以将从节点和主节点从集群中移除,

移除从节点ec2-redis-06(172.16.101.60)

$ redis-cli --cluster del-node 172.16.101.54:6379 c66d4098f962c5cf1834491874d8f1ff9800d796 //参数1位集群中任意节点,参数2位要移除的节点node-id>>> Removing node c66d4098f962c5cf1834491874d8f1ff9800d796 from cluster 172.16.101.54:6379>>> Sending CLUSTER FORGET messages to the cluster...>>> SHUTDOWN the node.

移除主节点ec2-redis-03(172.16.101.56)

$ redis-cli --cluster del-node 172.16.101.54:6379 9dc64e2b206979b811bd81984d3d94ec154a9335>>> Removing node 9dc64e2b206979b811bd81984d3d94ec154a9335 from cluster 172.16.101.54:6379>>> Sending CLUSTER FORGET messages to the cluster...>>> SHUTDOWN the node.

注意:该命令可以在任意节点上执行,第一个参数指定集群中一个节点的连接信息,第二个参数是真正要删除的节点的node-id,移除之后我们再次查看集群.

d02a7a565233413ca6cf45ab0637fbc1

移除节点之后的集群

Redis集群添加节点

Redis向现有集群添加节点之前,必须先清除该节点保留的集群残留信息,如果是全新的节点,则不需要,否则可能报错如下,残留信息是指的redis集群自动维护的文件nodes.conf或者数据文件dump.rdb,如果是要加入集群,这两个文件可以先删除,Redis会自动新建空文件.

c724cc90e568494e9922c47afb1ec4d0

报错信息

如果需要将节点ec2-redis-03(172.16.101.56)加入到现有集群,在该节点执行

$ redis-cli --cluster add-node 172.16.101.56:6379 172.16.101.54:6379 //第一个参数是新加入的节点信息,第二个参数随机填写当前集群中一个节点信息

出现如下信息说明加到集群成功

d5da1210b9ed43af97fa8a929e015efe

添加节点到集群成功

查看集群节点信息,可以看到节点ec2-redis-03(172.16.101.56)已经加入到节点,并且是主节点角色.

755687124e2943d6b146abfee71dde1f

新节点已加入到集群

现在将另外一个节点ec2-redis-06(172.16.101.60)加入到节点,并指定它为刚才的节点ec2-redis-03的从节点

$ redis-cli --cluster add-node 172.16.101.60:6379 172.16.101.54:6379 --cluster-slave --cluster-master-id 3b234165c1a221916797154fe885527d747750d0

出现如下信息说明添加成功

e8017b8681f646adb680d5e144ead73e

从节点添加完成

添加完成后,我们再次查看集群节点信息,主节点ec2-redis-03(172.16.101.56)已经有了从节点ec2-redis-06(172.16.101.60)

b78066110cc842e8a5e1efec4cd9f5d4

主从节点添加完成后,还不能开始工作,因为它还不负责任何哈希槽的处理,现在将指定的哈希槽分配到刚添加的主节点中.

$ redis-cli --cluster reshard 172.16.101.54:6379 --cluster-from 6b5c74706f418b0c5f97614781f0e1b7e4bdc90d --cluster-to 3b234165c1a221916797154fe885527d747750d0 5383 --cluster-yes

再次查看集群节点信息,如下,说明我们完成了节点的哈希槽分配.

54df01fb10bb4989ad4188abb0ae4ad5

redis哈希槽转移

这里提一点,在我们将剔除集群的节点重新加入集群后,通过cluster nodes可能会看到有过期节点信息,如下.

c66d4098f962c5cf1834491874d8f1ff9800d796 :0@0 slave,fail,noaddr 6b5c74706f418b0c5f97614781f0e1b7e4bdc90d 1595925533044 1595925530639 10 disconnected

此时可以进入到redis中将该信息手动清除一下.

127.0.0.1:6379> CLUSTER FORGET c66d4098f962c5cf1834491874d8f1ff9800d796OK
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值