Amazing Redisredis

Redis 集群扩容和缩容

2019-11-27  本文已影响0人  _str_

集群的伸缩

这里也是使用的docker部署的扩容就是在之前集群的compose中加入了两个容器作为一主和一从 下面是compose
中添加的容器信息 详细集群部署查看Redis集群部署-docker集群

   redis-clu-m4:
      image: redis-ruby:latest
      container_name: redis-clu-m4
      expose:
        - "6379"
      networks:
        - cmdb_jumpserver-test
      tty: true

  redis-clu-s4:
      image: redis-ruby:latest
      container_name: redis-clu-s4
      expose:
        - "6379"
      networks:
        - cmdb_jumpserver-test
      tty: true 

添加节点(扩容)

  1. 准备节点

    image

    添加一个新的节点为主节点

redis-trib.rb   add-node        new_host:new_port existing_host:existing_port

//     new_host:new_port 为新添加的节点信息
//    existing_host:existing_port 集群中任意节点的信息
添加一个新节点为主节点

再次检查节点信息找到添加的节点id


查找节点ID

添加一个新的从节点到之前的主节点下

redis-trib.rb   add-node     --slave  --master-id 主节点的 ID       new_host:new_port existing_host:existing_port

主节点 ID 可以使用如下命令查看,此命令还同时输出了各个节点的角色

redis-trib.rb    check           host:port

//  host:port 为集群中任意节点的信息
添加从节点

分配槽数

[root@3604a0ecd95c /]# redis-trib.rb reshard 172.29.0.3:6379

分配槽数 添加成功 查看信息

节点缩容

image.png
槽迁移
image.png
节点缩容算法思想

比如有12个槽数 删除节点前有四个master 平均分配槽数是3
现在删除一个master节点 需要吧一个槽分别给还存在的节点
计算方法为 要删除的节点槽数 除 还存在的节点数量

具体操作

redis-trib.rb  reshard --from   下线节点 ID  --to  集群中的任意主节点 ID  --slots   迁移到槽数   之前使用的主节点 IP:端口

操作实例

[root@3604a0ecd95c /]# redis-trib.rb reshard --from fab2f87703848c21fa08260095a33148af7c8864 --to 1c8055980ddfc89db5599dc6304d29315cdba6e7 --slots 4096 172.29.0.4:6379

检查节点信息


image.png

删除从节点


删除从节点

查看删除后的信息


image.png

删除主节点


image.png

注意,这里必须先删除从节点在删除主节点,不然会发生主节点移除后从节点代替主节点的情况 删除的时候会发生错误

使用rebalance来平均分配将槽数给到ip为4的主节点

[root@3604a0ecd95c /]# redis-trib.rb rebalance 172.29.0.4:6379

image.png
因为只需要给其他两个主节点均分两份就可以了 自己也有一份 这就有了上图只有两个出现
假如主节点服务停止后会发生如下情况

先来查看一下节点信息


image.png

将172.29.0.2的redis服务手动停止后会发生错误

image.png

再次开启服务

image.png
假如你还需要变成原来的 只需要将现在的主的服务给停掉在启动就会回到原来的状态
上一篇下一篇

猜你喜欢

热点阅读