资讯专栏INFORMATION COLUMN

redis集群节点缩容

IT那活儿 / 2959人阅读
redis集群节点缩容

一. 结构及详细说明

Redis集群大致架构图:

一组RedisCluster是由多个Redis实例组成,官方推荐使用6实例,其中3个为主节点,3个为从结点。一旦有主节点发生故障的时候,RedisCluster可以选举出对应的从结点成为新的主节点,继续对外服务,从而保证服务的高可用性。那么对于客户端来说,知道对应的key是要路由到哪一个节点呢?原来,RedisCluster把所有的数据划分为16384个不同的槽位,可以根据机器的性能把不同的槽位分配给不同的Redis实例,对于Redis实例来说,他们只会存储部门的Redis数据,当然,槽的数据是可以迁移的,不同的实例之间,可以通过一定的协议,进行数据迁移。

缩容节点就是通过槽的迁移来实现。



二. 操作过程

1、槽迁移

收缩集群意味着缩小规模,需要从现有集群中安全下线部分节点。流程说明:
确认下线节点是否有负责的槽,如果有,需要把槽迁移到其他节点,保证节点下线后整个集群槽节点映射的完整性。
当下线节点不在负责槽或本身是从节点时,可以通知其他节点忘记下线节点,当所有节点忘记下线节点后该节点可以正常关闭。
例:下线6381和6384节点
6381节点负责槽位12288-16383,下线之前需要迁移槽位,源节点需要把自身负责的槽位均匀的迁移到其他主节点上,直接使用redis-trib.tbreshard命令完成槽迁移,每次迁移只能有一个目标节点。

./redis-trib.rbreshard 192.168.100.77:6381

输入迁移目的节点6379ID

输入迁移源节点6381ID,输入done确认

确认无误后输入yes开始迁移

clusternodes可以看到6379接管了1365个槽12288-13652

把槽迁移到6380,重复上述过程

把槽迁移到6385,重复上述过程

可以看到,6381不在负责槽

2、忘记节点

使用redis-trib.rb+ del-node + 集群ip:port+ 下线节点ID命令忘记节点 63816384节点进行下线操作

192.168.100.77:6379>cluster nodes查看节点已下线



三.  总结
  1. redis缩容一般有两种方法,一种是在线缩容,一种是离线缩容,从业务的角度来说,在线缩容是最方便的方法,但在线缩容有个问题是,过程中如果某个槽正在操作会导致迁移槽是发送错误,需要人工干预。

  2. 离线缩容是比较快速的方法,人工干预比较少由集群自动分配哈希槽,缺点是需停掉业务。

END


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129949.html

相关文章

  • 宜信开源|详解PaaS平台LAIN的功能和架构

    摘要:是宜信公司大数据创新中心开发的开源平台。为宜信大数据创新中心各个团队提供了统一的测试和生产环境,简化了服务的部署与上线流程,也降低了运维人员对系统管理的复杂度。基于容器技术,面向多样化的技术栈,并且天然隔离系统和应用的依赖。 LAIN是宜信公司大数据创新中心开发的开源PaaS平台。在金融的场景下,LAIN 是为解放各个团队和业务线的生产力而设计的一个云平台。LAIN 为宜信大数据创新中...

    mist14 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<