Redis Cluster 集群扩容 & 缩容步骤
redis 扩容、缩容、节点平衡
本文目录
前提:新加的机器节点,Redis 服务已启动
版本:6.x
原集群节点:192.168.204.203:6300(master)
192.168.204.203:6301(master)
192.168.204.203:6302(master)
192.168.204.203:6303(slave)
192.168.204.203:6304(slave)
192.168.204.203:6305(slave)
新加节点:192.168.204.203:6306(master)
192.168.204.203:6307(slave)
官网文档:https://redis.io/topics/cluster-tutorial
1.扩容
第一步:启动 两台 redis 新节点机器
第二步:添加 master 节点
命令:
redis-cli --cluster add-node 192.168.204.203:6306 192.168.204.203:6300
说明:
192.168.204.203:6306 新节点
192.168.204.203:6300 集群中已有的任意一个节点(官网原话:the address of a random existing node in the cluster as second argument.)
第三步:分配 slot
命令:
redis-cli --cluster reshard 192.168.204.203:6300 该命令需要交互实现,也可以使用脚本命令,继续往下看。
交互内容:
#第一次交互:需要迁移多少个槽
How many slots do you want to move (from 1 to 16384)?
需要迁移槽个数计算规则: 一般是:16384 / master个数,满足平均分配
#第二次交互:接受 slot 槽的节点ID
What is the receiving node 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.
all 为自动分配,第二种方式为手动分配。
在扩容时,采用 all 即可,官网也是使用 all。
#第四次交互:确认信息
Do you want to proceed with the proposed reshard plan (yes/no)?
输入 yes 即可
脚本命令:
redis-cli --cluster reshard 192.168.204.203:6300 --cluster-from 717515586b39bf639e689486f762d8846e06d20c,8318dc7379ce818bbae16eba5fc028a96a37d258,8e55d0fc53c2eb79e995138c7bdfa74169dc8db9 --cluster-to 73254af4b47aa0403e606a14f8a796b3247a9c6a --cluster-slots 2000 --cluster-yes
说明:
--cluster 后的host:port 指定集群的任意一节点进行迁移slot,重新分slots
--cluster-from:表示slot目前所在的节点的node ID,多个ID用逗号分隔(nodeId通过 clusters nodes 查看,第一列为nodeId)
--cluster-to:表示需要新分配节点的node ID(貌似每次只能分配一个)
--cluster-slots:分配的 slot 数量
--cluster-yes:指示群集管理器对命令的提示自动回答“是”,允许它以非交互模式运行
第四步:添加 slave 节点
命令:redis-cli --cluster add-node 192.168.204.203:6307 192.168.204.203:6306 --cluster-slave --cluster-master-id 73254af4b47aa0403e606a14f8a796b3247a9c6a
说明:
add-node: 后面的分别跟着新加入的 slave 和 slave 对应的 master
--cluster-slave:表示加入的是 slave 节点
--cluster-master-id:表示 slave 对应的 master 的 node ID
2.缩容
下线机器:192.168.204.203:6306(master)
192.168.204.203:6307(slave)
第一步:清空 master 的 slot 槽
命令:
redis-cli --cluster reshard 192.168.204.203:6300
说明:
reshard 后跟的是集群的任意一个 host:port 地址
该命令,可参考《扩容》第三步:分配 slot
在第三次交互阶段,可以选择 all,也可以选择另一种方式,手动对 hash slot 进行分配。
1.选择 all,slot 会自动分配(插槽分配可能会不连续,比较乱,不影响使用)
2.也可以手动分配,先输入:
Source node #1: 要导出的 master 节点的 node ID
Source node #2: done 再输入 done
第二步:下线 master 和 slave 节点
下线 master 命令:(这俩命令一样)
redis-cli --cluster del-node 192.168.204.203:6306 73254af4b47aa0403e606a14f8a796b3247a9c6a
下线 slave 命令:(这俩命令一样)
redis-cli --cluster del-node 192.168.204.203:6307 3d53ce910a17651913afa24a675640ecaeaa0367
说明:
del-node 后面跟着 master 或者 slave 节点的 ip:port 和node ID
3.check、rebalance 命令
1.检查当前集群节点情况
命令:
redis-cli --cluster check 192.168.204.203:6300
说明:
check 后面跟的是集群中任意一个节点即可
2.平衡节点
命令:
redis-cli --cluster rebalance 192.168.204.203:6300
说明:
rebalance 后面跟的是集群中任意一个节点即可
当集群每个节点的 slot 槽为不均衡后,使用 rebalance 重新平衡。
使用后每个 master 的 slot 数量就会再次平衡
在 2% 阈值范围内,使用命令也不会平衡,会进行如下提示:
*** No rebalancing needed! All nodes are within the 2.00% threshold.
redis-cli --cluster 命令说明:
参考:http://t.zoukankan.com/zhoujinyi-p-11606935.html
博主写作不易,加个关注呗
求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙
我不能保证所写的内容都正确,但是可以保证不复制、不粘贴。保证每一句话、每一行代码都是亲手敲过的,错误也请指出,望轻喷 Thanks♪(・ω・)ノ
更多推荐



所有评论(0)