redis 5.0中使用 redis-cli 添加cluster node 并 reshard

在redis-5中redis-trib.rb的功能被集成到了redis-cli中,大大简化了redis的集群部署,加快了进群部署的速度,也方便后期维护与扩容。

以下简要介绍一下redis-cli在集群中的操作:

环境:Ubuntu 18.04.2 LTS

redis版本:redis-5.0.5

集群架构:3master+3slave(后期添加1master+1slave)

创建集群:

1、新建所需目录,创建配置文件,启动6个redis实例进程(配置参数尽量保持一致)。在这里原始集群端口号为6379-6384,监听在127.0.0.1上。添加节点监听为127.0.0.1:6385(master),127.0.0.1:6386(slave)

2、创建集群:

命令 :redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1

--cluster-replicas 表示有一个主有几个slave

3、扩容:

(1)查看每个集群节点的node ID和身份

进入任意集群master节点:redis-cli -p 6379

查看节点ID:cluster nodes  

注意:以上我是在测试环境中,没有使用身份验证,在生产环境中,必须添加requirepass参数。

(2)添加master节点

redis-cli --cluster add-node 127.0.0.1:6385 127.0.0.1:6379

注意语法,一个新节点IP:端口 空格 一个旧节点IP:端口,注意点是:

1.不能多个新节点一次性添加

2.新节点后是旧节点

3.如果设置--cluster-slave,新节点挂在旧节点下的一个从节点

4.如果设置 --cluster-master-id <arg> ,arg设置旧节点的id,具体可以使用cluster nodes查看各个节点的id

add-node new_host:new_port existing_host:existing_port
--cluster-slave
--cluster-master-id <arg>

 

例子1:添加到从节点

./redis-cli --cluster add-node 192.168.1.136:7007 192.168.1.136:7001 --cluster-slave

 

 

例子2:添加到Master,192.168.1.143:7002是新节点,192.168.1.136:7001是已经存在的一个旧节点,

./redis-cli --cluster add-node 192.168.1.136:7007 192.168.1.136:7001 --cluster-master-id 49395c60c6e5215aaf52260a72100a7f076aab76

 

 

 

这里是将节点加入了集群中,但是并没有分配slot,所以这个节点并没有真正的开始分担集群工作。

(3)分配slot

redis-cli --cluster reshard 127.0.0.1:6379 --cluster-from 2846540d8284538096f111a8ce7cf01c50199237,e0a9c3e60eeb951a154d003b9b28bbdc0be67d5b,692dec0ccd6bdf68ef5d97f145ecfa6d6bca6132 --cluster-to 46f0b68b3f605b3369d3843a89a2b4a164ed21e8 --cluster-slots 1024

--cluster-from:表示slot目前所在的节点的node ID,多个ID用逗号分隔

--cluster-to:表示需要新分配节点的node ID(貌似每次只能分配一个)

--cluster-slots:分配的slot数量

(4)添加slave节点

redis-cli --cluster add-node 127.0.0.1:6386 127.0.0.1:6385 --cluster-slave --cluster-master-id 46f0b68b3f605b3369d3843a89a2b4a164ed21e8

add-node: 后面的分别跟着新加入的slave和slave对应的master

cluster-slave:表示加入的是slave节点

--cluster-master-id:表示slave对应的master的node ID

4、收缩集群

下线节点127.0.0.1:6385(master)/127.0.0.1:6386(slave)

(1)首先删除master对应的slave

redis-cli --cluster del-node 127.0.0.1:6386 530cf27337c1141ed12268f55ba06c15ca8494fc

del-node后面跟着slave节点的 ip:port 和node ID

(2)清空master的slot

redis-cli --cluster reshard 127.0.0.1:6385 --cluster-from 46f0b68b3f605b3369d3843a89a2b4a164ed21e8 --cluster-to 2846540d8284538096f111a8ce7cf01c50199237 --cluster-slots 1024 --cluster-yes

reshard子命令前面已经介绍过了,这里需要注意的一点是,由于我们的集群一共有四个主节点,而每次reshard只能写一个目的节点,因此以上命令需要执行三次(--cluster-to对应不同的目的节点)。

--cluster-yes:不回显需要迁移的slot,直接迁移。

(3)下线(删除)节点

redis-cli --cluster del-node 127.0.0.1:6385 46f0b68b3f605b3369d3843a89a2b4a164ed21e8

至此就是redis cluster 简单的操作过程

posted @ 2019-09-26 13:15  门罗的魔术师  阅读(3114)  评论(1编辑  收藏  举报