上文讲解过自动迁移槽实现集群扩容(传送门)
1.准备新节点
安装redis,参考传送门
节点配置,参考传送门

2.将节点加入集群
redis-cli --cluster add-node {new host}:{new port} {exist host}:{exist port} 加入集群

redis-cli --cluster add-node 192.168.0.207:6380 192.168.0.31:6380
redis-cli --cluster add-node 192.168.0.208:6380 192.168.0.31:6380

确认集群状态

[root@kafka31 data]# redis-cli -p 6380
127.0.0.1:6380> cluster nodes
3c1b16407c984f33b7c0ff06b8a7bbcc59c1d91b 192.168.0.208:6380@16380 master - 0 1550229198271 11 connected
ed93d5ea74751d7124a2d5830ce0806a0c962d43 192.168.0.32:6380@16380 master - 0 1550229196000 2 connected 5461-10922
3ba3e8323b7b637c958977335bf7f7213c009929 192.168.0.35:6380@16380 slave ed93d5ea74751d7124a2d5830ce0806a0c962d43 0 1550229197267 5 connected
7fbf45fdc4d0780074f8fe324aac28ae686eebaa 192.168.0.34:6380@16380 slave 92fd7c2a7b7b8933d1019e72a852f621f6b4faff 0 1550229196264 10 connected
b94828e8816574d66b413c6bfa6de130eb14ee66 192.168.0.207:6380@16380 master - 0 1550229194000 0 connected
3641ec8359d5400e5540d77600a2360de8ca367e 192.168.0.33:6380@16380 master - 0 1550229194258 3 connected 10923-16383
a5ac7dfedd81f2ecd9dd101ef8d9d4f70f895bbf 192.168.0.36:6380@16380 slave 3641ec8359d5400e5540d77600a2360de8ca367e 0 1550229193256 6 connected
92fd7c2a7b7b8933d1019e72a852f621f6b4faff 192.168.0.31:6380@16380 myself,master - 0 1550229194000 10 connected 0-5460

3.使用redis-cli自动迁移槽
前面有介绍过手动迁移槽的过程,但是过程繁琐,容易出错,这里使用redis-cli自动迁移槽。

redis-trib.rb reshard host:port --from <arg> --to <arg> --slots <arg> --yes --timeout <arg> --pipeline <arg>参数说明:
host:port:必传参数,集群内任意节点地址,用来获取整个集群信息。
--from:制定源节点的id,如果有多个源节点,使用逗号分隔,如果是all源节点变为集群内所有主节点,在迁移过程中提示用户输入。
--to:需要迁移的目标节点的id,目标节点只能填写一个,在迁移过程中提示用户输入。
--slots:需要迁移槽的总数量,在迁移过程中提示用户输入。
--yes:当打印出reshard执行计划时,是否需要用户输入yes确认后再执行reshard。
-timeout:控制每次migrate操作的超时时间,默认为60000毫秒。
--pipeline:控制每次批量迁移键的数量,默认为10。

使用redis-cli迁移4096个槽到207

redis-cli --cluster reshard 192.168.0.31:6380
...
How many slots do you want to move (from 1 to 16384)? 4096  #要迁移多少个槽
What is the receiving node ID? b94828e8816574d66b413c6bfa6de130eb14ee66  #迁移到哪个节点
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.
#要求输入源节点的id,这里输入31,32,33三个节点,输入done表示结束
Source node #1: 92fd7c2a7b7b8933d1019e72a852f621f6b4faff
Source node #2: ed93d5ea74751d7124a2d5830ce0806a0c962d43
Source node #3: 3641ec8359d5400e5540d77600a2360de8ca367e
Source node #4: done
最后会有一个迁移方案,输入yes表示同意,迁移开始。输入no表示不同意,重新设置迁移方案。

迁移完成后,确认集群状态,0-1364 5461-6826 10923-12287这些槽分配给了207节点

[root@kafka31 data]# redis-cli -p 6380
127.0.0.1:6380> cluster nodes
3c1b16407c984f33b7c0ff06b8a7bbcc59c1d91b 192.168.0.208:6380@16380 master - 0 1550230101738 11 connected
ed93d5ea74751d7124a2d5830ce0806a0c962d43 192.168.0.32:6380@16380 master - 0 1550230098728 2 connected 6827-10922
3ba3e8323b7b637c958977335bf7f7213c009929 192.168.0.35:6380@16380 slave ed93d5ea74751d7124a2d5830ce0806a0c962d43 0 1550230100000 5 connected
7fbf45fdc4d0780074f8fe324aac28ae686eebaa 192.168.0.34:6380@16380 slave 92fd7c2a7b7b8933d1019e72a852f621f6b4faff 0 1550230100734 10 connected
b94828e8816574d66b413c6bfa6de130eb14ee66 192.168.0.207:6380@16380 master - 0 1550230098000 12 connected 0-1364 5461-6826 10923-12287
3641ec8359d5400e5540d77600a2360de8ca367e 192.168.0.33:6380@16380 master - 0 1550230100000 3 connected 12288-16383
a5ac7dfedd81f2ecd9dd101ef8d9d4f70f895bbf 192.168.0.36:6380@16380 slave 3641ec8359d5400e5540d77600a2360de8ca367e 0 1550230099000 6 connected
92fd7c2a7b7b8933d1019e72a852f621f6b4faff 192.168.0.31:6380@16380 myself,master - 0 1550230097000 10 connected 1365-5460

4.检测节点之间槽的均衡性
使用redis-cli --cluster rebalance检测节点间槽的均衡性

[root@kafka31 data]# redis-cli --cluster rebalance 192.168.0.31:6380
>>> Performing Cluster Check (using node 192.168.0.31:6380)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
*** No rebalancing needed! All nodes are within the 2.00% threshold.

可以看出,节点负责的槽数据差异在2%以内,因此槽分配均衡。

5.添加从节点
将208添加为207的从节点

127.0.0.1:6380> cluster replicate b94828e8816574d66b413c6bfa6de130eb14ee66
OK

确认集群状态,208为207的从节点,207负责0-1364 5461-6826 10923-12287这4096个槽,至此使用redis-cli自动迁移槽完成。

127.0.0.1:6380> cluster nodes
3c1b16407c984f33b7c0ff06b8a7bbcc59c1d91b 192.168.0.208:6380@16380 myself,slave b94828e8816574d66b413c6bfa6de130eb14ee66 0 1550230723000 11 connected
...
b94828e8816574d66b413c6bfa6de130eb14ee66 192.168.0.207:6380@16380 master - 0 1550230720727 12 connected 0-1364 5461-6826 10923-12287

redis实战第九篇 集群扩容自动迁移槽(redis-cli)相关推荐

  1. 为什么集群要奇数_面试系列 redis数据删除amp;集群

    redis数据删除/内存淘汰 如果我们设置一批key只能存活1小时,那么1小时之后,redis是怎么对这批数据进行删除的? 答案:定期删数+惰性删除 (1)定期删除 指的是redis默认是每隔100m ...

  2. 【重难点】【Redis 02】Redis 的持久化、Redis 的主从复制和集群、哨兵

    [重难点][Redis 02]Redis 的持久化.Redis 的主从复制和集群.哨兵 文章目录 [重难点][Redis 02]Redis 的持久化.Redis 的主从复制和集群.哨兵 一.Redis ...

  3. Docker高级篇之Mysql主从复制、Redis集群扩容缩容配置案例详解

    Docker之Mysql主从复制.Redis集群扩容缩容配置案例 1. 安装mysql主从复制 1.1 新建主服务器容器实例3307 1.2 进入/mydata/mysql-master/conf目录 ...

  4. Docker下Redis Cluster分片集群的搭建、基本操作、集群扩容和集群故障转移(非关系型数据库技术课程 第九周)

    文章目录 Docker 下Redis Cluster 分片集群搭建 1. Cluster 分片集群 1.1 Cluster 集群的结构和作用 1.2 Cluster 分片集群 的作用 1.3哈希槽(h ...

  5. redis集群扩容和缩容_Full-Stack-Notes

    Redis Cluster 一.集群模式介绍 1.1 数据分区 1.2 节点通讯 1.3 请求路由 1.4 故障发现 1.5 故障恢复 二.集群模式搭建 2.1 节点配置 2.2 启动集群 2.3 集 ...

  6. Redis Cluster 集群扩容与收缩

    2019独角兽企业重金招聘Python工程师标准>>> Redis Cluster 集群伸缩 1. 伸缩原理 Redis提供了灵活的节点扩容和收缩方案.在不影响集群对外服务的情况下, ...

  7. Redis HA篇 +集群搭建

    说明:本文为面向Redis集群搭建的指导手册 标签:Redis集群.Redis高可用.Redis分布式.Redis 4.0.2 注意:文中删去了不需要的多余部分,让初学者一目了然一学就会 温馨提示:如 ...

  8. Redis 5 集群扩容、缩容详解

    前言 虽然自己已经使用redis已经很就了,自己搭建的3主3从redis集群也很稳定,没有出现过问题,但是考虑到服务器突发情况,还是简单研究研究redis几群的"扩容.缩容". 因 ...

  9. redis集群扩容和缩容_redis集群cluster搭建,扩容缩容

    1.    概要说明 1.1.    概述 本文旨在说明平台部署环境搭建的过程和详细步骤说明,为后面系统部署提供清晰的参考依照. 以下搭建部署的环境,为一个小型的分布式集群环境.满足负载均衡和单点故障 ...

最新文章

  1. github搜索技巧:快速搜到你想要的!
  2. python中的zip是什么意思_python中zip是什么函数
  3. 这就是为什么您的开源项目失败
  4. 博文视点读书节第五日丨IT大咖私房书单继续放送,超级会员返场来袭!
  5. 游戏开发之运算符重载(C++基础)
  6. paip.提升用户体验---防止windows假死之CPU 100%解决
  7. 手机端电子签名画板js插件
  8. EasyUI仓库管理系统
  9. kindle mobi词典格式分析及代码实现
  10. 算法的复杂度度量--时间复杂度以及空间复杂度
  11. app小程序手机端Python爬虫实战10xpath定位方式
  12. 一分钟学会接网线(网络传输介质详解及布线连接)
  13. 如何使用PPT制作风靡朋友圈的九宫格照片,两种方法供你选择
  14. 用python画一个简单卡通人物,Python绘制可爱的卡通人物 | 【turtle使用】
  15. 磁碟机变种简单分析(lsass.exe、smss.exe、dnsq.dll、NetApi000.sys)
  16. java使用爬虫工具jsoup实现抓取网页的内容及图片并写入到word文档中
  17. 【微信小程序】开发入门篇(一)
  18. Opencv各版本汇总下载
  19. “人生搜索引擎” # Rewind
  20. CISCO CPOS STM配置示例

热门文章

  1. 生物钟的研究、功能和机理——2017年度诺贝尔生理学或医学奖成果简析
  2. SolidWorks安装失败,怎么彻底删除SolidWorks?
  3. 代理IP的三个实际应用场景
  4. unity死者之书_死者之书:概念艺术
  5. 社区团购系统存在的意义_社区团购怎么做
  6. 计算机语音输入和存储,语音输入输出装置
  7. # 22.Flink-高级特性-新特性-异步IO\原理
  8. Java项目:SSM水果蔬菜商城批发网站
  9. b站设置3倍速播放步骤
  10. java获取时间戳有多少种方式,给我写出5种以上示例