docker中redis集群的主从容错切换迁移、主从扩容以及缩容

目录

一、主从容错切换迁移

1.数据读写存储

2.容错切换迁移

二、主从扩容

三、主从缩容


前提:

        我们在docker中配置了3主3从redis集群,集群中主机从机分布如下:

                master                slave

                 6381       ->        6386  

                 6382       ->        6384   

                 6383       ->        6385 
        配置可以参考:docker中3主3从redis集群配置_朂後 哋箹萣的博客-CSDN博客

一、主从容错切换迁移

1.数据读写存储

        使用单机版命令会使得有些数据存不进去,如下图所示:

docker exec -it redis-node-1 /bin/bash
redis-cli -p 6381

         使用集群版命令

docker exec -it redis-node-1 /bin/bash
redis-cli -p 6381 -c

 查看集群信息:

redis-cli --cluster check 192.168.10.102:6381

2.容错切换迁移

1.主6381和从机切换,先停止主机6381

docker stop redis-node-1

 使用主6382进入查看

docker exec -it redis-node-2 /bin/bash
redis-cli -p 6382 -c

 2. 还原之前的3主3从

        重新启动6381

docker start redis-node-1

         查看状态。

cluster nodes

         此时6381变为从机,并没有变为主机。此时我们还是想变为开始状态也就是6381为主机,6386为从机,可以先停掉6386,在启动6386即可。

docker stop redis-node-6
docker start redis-node-6

 查看集群状态

redis-cli --cluster check 192.168.10.102:6381

二、主从扩容

1.新建6387、6388两个节点+新建后启动+查看是否8节点

docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6387

docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6388

 2. 进入6387容器实例内部

docker exec -it redis-node-7 /bin/bash

redis-cli --cluster add-node 192.168.10.102:6387 192.168.10.102:6381

 3.检查集群情况第1次

redis-cli --cluster check 192.168.10.102:6381

 4. 重新分派槽号

redis-cli --cluster reshard 192.168.10.102:6381

 5. 检查集群情况第2次

 6.为主节点6387分配从节点6388

redis-cli --cluster add-node 192.168.10.102:6388 192.168.10.102:6387 --cluster-slave --cluster-master-id 44642055a3239feb92ac007e8a1faa3cb8e72140

 7. 检查集群情况第3次

三、主从缩容

目的:6387和6388下线。

1. 检查集群情况1获得6388的节点ID

redis-cli --cluster check 192.168.10.102:6382

 2. 从集群中将4号从节点6388删除

redis-cli --cluster del-node 192.168.10.102:6388 786a5d871fad669fa1df7a0adcb534c34a86faa2

redis-cli --cluster check 192.168.10.102:6382

 3.将6387的槽号清空,重新分配,本例将清出来的槽号都给6381

redis-cli --cluster reshard 192.168.10.102:6381

 4. 检查集群情况第二次

redis-cli --cluster check 192.168.10.102:6382

 5. 将6387删除

redis-cli --cluster del-node 192.168.10.102:6387 44642055a3239feb92ac007e8a1faa3cb8e72140

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Docker部署Redis集群的步骤: 1.拉取Redis官方镜像: ```shell docker pull redis ``` 2.创建一个自定义的网络: ```shell docker network create redis-net ``` 3.创建6个Redis容器,3个作为主节点,3个作为从节点: ```shell docker run -d --name redis-1 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-2 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-3 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-4 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-5 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-6 --net redis-net redis redis-server --appendonly yes ``` 4.将容器分配到不同的主节点和从节点: ```shell docker exec -it redis-1 redis-cli cluster meet <ip-address-of-redis-2> 6379 docker exec -it redis-1 redis-cli cluster meet <ip-address-of-redis-3> 6379 docker exec -it redis-4 redis-cli cluster meet <ip-address-of-redis-5> 6379 docker exec -it redis-4 redis-cli cluster meet <ip-address-of-redis-6> 6379 docker exec -it redis-1 redis-cli cluster replicate <node-id-of-redis-2> docker exec -it redis-1 redis-cli cluster replicate <node-id-of-redis-3> docker exec -it redis-4 redis-cli cluster replicate <node-id-of-redis-5> docker exec -it redis-4 redis-cli cluster replicate <node-id-of-redis-6> ``` 5.检查集群状态: ```shell docker exec -it redis-1 redis-cli cluster info ``` 6.在集群添加键值对: ```shell docker exec -it redis-1 redis-cli set mykey "Hello World" docker exec -it redis-4 redis-cli get mykey ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值