Redis集群大致架构图:
一组RedisCluster是由多个Redis实例组成,官方推荐使用6实例,其中3个为主节点,3个为从结点。一旦有主节点发生故障的时候,RedisCluster可以选举出对应的从结点成为新的主节点,继续对外服务,从而保证服务的高可用性。那么对于客户端来说,知道对应的key是要路由到哪一个节点呢?原来,RedisCluster把所有的数据划分为16384个不同的槽位,可以根据机器的性能把不同的槽位分配给不同的Redis实例,对于Redis实例来说,他们只会存储部门的Redis数据,当然,槽的数据是可以迁移的,不同的实例之间,可以通过一定的协议,进行数据迁移。
缩容节点就是通过槽的迁移来实现。
收缩集群意味着缩小规模,需要从现有集群中安全下线部分节点。流程说明:
确认下线节点是否有负责的槽,如果有,需要把槽迁移到其他节点,保证节点下线后整个集群槽节点映射的完整性。
当下线节点不在负责槽或本身是从节点时,可以通知其他节点忘记下线节点,当所有节点忘记下线节点后该节点可以正常关闭。
例:下线6381和6384节点
6381节点负责槽位12288-16383,下线之前需要迁移槽位,源节点需要把自身负责的槽位均匀的迁移到其他主节点上,直接使用redis-trib.tbreshard命令完成槽迁移,每次迁移只能有一个目标节点。
./redis-trib.rbreshard 192.168.100.77:6381
输入迁移目的节点6379的ID
输入迁移源节点6381的ID,输入done确认
确认无误后输入yes开始迁移
clusternodes可以看到6379接管了1365个槽12288-13652
把槽迁移到6380,重复上述过程
把槽迁移到6385,重复上述过程
可以看到,6381不在负责槽
使用redis-trib.rb+ del-node + 集群ip:port+ 下线节点ID命令忘记节点 对6381和6384节点进行下线操作
192.168.100.77:6379>cluster nodes查看节点已下线
redis缩容一般有两种方法,一种是在线缩容,一种是离线缩容,从业务的角度来说,在线缩容是最方便的方法,但在线缩容有个问题是,过程中如果某个槽正在操作会导致迁移槽是发送错误,需要人工干预。
离线缩容是比较快速的方法,人工干预比较少由集群自动分配哈希槽,缺点是需停掉业务。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129949.html
摘要:是宜信公司大数据创新中心开发的开源平台。为宜信大数据创新中心各个团队提供了统一的测试和生产环境,简化了服务的部署与上线流程,也降低了运维人员对系统管理的复杂度。基于容器技术,面向多样化的技术栈,并且天然隔离系统和应用的依赖。 LAIN是宜信公司大数据创新中心开发的开源PaaS平台。在金融的场景下,LAIN 是为解放各个团队和业务线的生产力而设计的一个云平台。LAIN 为宜信大数据创新中...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1858·2023-01-11 13:20
阅读 4099·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3594·2023-01-11 13:20