文档章节

Redis应用学习——Redis Cluster的集群伸缩

江左煤郎
 江左煤郎
发布于 2018/11/05 23:36
字数 1093
阅读 18
收藏 1

1. 集群伸缩原理

    1. 集群伸缩:即集群中节点的增加和减少,在集群伸缩的同时,也伴随着槽位及槽位中数据在节点之间的移动

    2. 集群扩容原理:

  • 首先要准备好新的节点:依据上一篇博客中的集群节点的配置文件模板,然后启动该节点,此时该节点是一个单独的集群节点
  • 将该节点加入集群:
    • 通过集群中任意一个节点的客户端执行cluster meet命令将这两个单独的节点添加进入集群,添加后再执行cluster nodes命令查看集群中所有的节点的相关信息,查看是否有新添加的两个节点;添加的节点如果为主节点就是用于集群扩容,要进行槽位和数据迁移(执行第三步),如果为从节点则用于负责自动故障转移,不会发生数据迁移
    • 通过redis-trib.rb的添加节点的命令:add-node  new_host:new_port existing_host:existing_port  --slave  --master-id   <arg>,使用该命令时,会先检测new_host:new_port所代表的节点是否是一个孤立的节点(即是否处于另一个集群中),existing_host:existing_port该参数就表示目标集群中以存在的节点,new_host:new_portexisting_host:existing_port两个节点会进行一个meet操作来将新节点添加到集群中,而--slave --master-id <arg>这两个参数表示新添加进入的节点是一个从节点,而其主节点就为<arg>参数处所写的集群中存在的主节点的node-id,如果添加的是一个主节点则不需要--slave --master-id <arg>两个命令参数
  • 迁移槽位和槽位中的数据(该操作只针对添加主节点,而添加从节点则无此操作):
    • 在迁移槽位时,要保证各个主节点的槽位数量均衡
    • 迁移数据,当在迁移槽位时,也要讲槽位中的每个数据全部迁移,迁移数据完成后,会将新的槽位所在的节点信息广播到集群中的每一个节点中
    • 使用Redis中的集群原生命令过于复杂,推荐使用redis-trib.rb的命令来执行更为方便,命令为 reshard  host:porthost:port可以是集群中任意一个节点的IP地址和端口号,回车执行该命令后会提示下一个要输入的参数是要转移的槽位个数slots(比如下图中的1000),输入后回车执行,又会提示写一个参数就是接受这些槽位的主节点的node-id,回车执行提示输入这些槽位的来源节点,可以写一个具体的节点id,可以写多个,最后输入一个done来表示输入结束,也可以写一个all,表示从所有其他主节点中的所有槽位中均匀分配出slots个槽位,再按下回车执行直到提示输入yes表示确认执行操作。

    3. 集群缩容原理:

  • 首先检查即将下线的节点中是否有槽位,如果有则说明当前节点为主节点,首先应下线其从节点,然后要将槽位及数据迁移到其他节点,然后再下线主节点
    • 槽位迁移:首先迁移节点中的所有槽位到另一个主节点中,使用redis-trib.rb的命令 reshard  host:port,注意尽量将被删除节点中的槽位平均分配到其他主节点中
    • 节点下线:使用redis-trib.rb中的命令del-node  host:port  node_idhost:port可以是集群中任意一个节点的IP地址和端口,而node_id则是要被删除的节点id
  • 将该节点的下线信息告诉其他节点,在执行redis-trib.rb中的del-node命令后会自动通知,并自动关闭该节点
  • 关闭该节点,

© 著作权归作者所有

共有 人打赏支持
江左煤郎
粉丝 26
博文 86
码字总数 220642
作品 0
西安
后端工程师
私信 提问
Java开发——Redis云管理平台 实现方案CacheCloud 扫盲

本文简述一个redis云平台解决方案,该方案是搜狐TV云平台管理的解决方案CacheCloud ,感兴趣的可以持续关注我的发布。 一、CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多...

欧阳愠斐
2018/07/25
0
0
Redis应用学习——Redis Cluster部署

认识Redis Cluster 1. 集群所解决的问题: 提供极高的并发量,即使单个Redis的并发处理量已经很多,但是在大型应用系统中,仍然远远不足,集群提高了并发处理量 能存储更多的数据,单台Redis...

江左煤郎
2018/11/04
0
0
5.2 Redis商业版

Redis作者Salvatore Sanfilippo所在公司RedisLab提供了企业版的Redis产品——Redis Labs Enterprise Cluster (RLEC)——几乎解决了我们上述的所有问题:对客户端完全透明化,自动集群管理(伸...

玄学酱
2018/02/27
0
0
搜狐视频Redis私有云平台CacheCloud

一、CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运...

linuxprobe
2016/06/06
247
0
搜狐视频Redis私有云平台CacheCloud

一、CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运...

linuxprobe16
2016/12/06
51
0

没有更多内容

加载失败,请刷新页面

加载更多

dubbo常用功能总结

准备工作: (1)启动zookeeper作为dubbo的注册中心 (2)新建一个maven的生产者web工程dubbo-provider-web和一个maven的消费者web工程dubbo-consumer-web (3)在pom.xml文件里面引入如下依...

呵呵哒灬
11分钟前
0
0
数据库技术-Mysql主从复制与数据备份

数据库技术-Mysql 主从复制的原理: MySQL中数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”...

须臾之余
昨天
13
0
Git远程仓库——GitHub的使用(一)

Git远程仓库——GitHub的使用(一) 一 、 Git远程仓库 由于你的本地仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一下设置: 步骤一、 创建SSH key 在用户主目录下,看看有没有.ss...

lwenhao
昨天
4
0
SpringBoot 整合

springBoot 整合模板引擎 SpringBoot 整合Mybatis SpringBoot 整合redis SpringBoot 整合定时任务 SpringBoot 整合拦截器...

细节探索者
昨天
1
0
第二个JAVA应用

第二个JAVA应用 方法一:配置文件: # cd /usr/local/tomcat/conf/# vim server.xml</Host> <Host name="www.wangzb.cc" appBase="/data/wwwroot/www.wangzb.cc" //引用所......

wzb88
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部