• Docker高级篇-Docker容器内Redis集群配置


    在这里插入图片描述

    1、三主三从集成配置

    1.1、关闭防火墙、启动docker服务

    systemcl start docker 
    
    • 1

    1.2、新建6个docker容器实例

    docker run -d --name redis-node-1 --net host --privileged=true -v /temp/redis/share/redis-node-1:/data redis --cluster-enabled yes --appendonly yes --port 6381
    
    docker run -d --name redis-node-2 --net host --privileged=true -v /temp/redis/share/redis-node-2:/data redis --cluster-enabled yes --appendonly yes --port 6382
    
    docker run -d --name redis-node-3 --net host --privileged=true -v /temp/redis/share/redis-node-3:/data redis --cluster-enabled yes --appendonly yes --port 6383
    
    docker run -d --name redis-node-4 --net host --privileged=true -v /temp/redis/share/redis-node-4:/data redis --cluster-enabled yes --appendonly yes --port 6384
    
    docker run -d --name redis-node-5 --net host --privileged=true -v /temp/redis/share/redis-node-5:/data redis --cluster-enabled yes --appendonly yes --port 6385
    
    docker run -d --name redis-node-6 --net host --privileged=true -v /temp/redis/share/redis-node-6:/data redis --cluster-enabled yes --appendonly yes --port 6386
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    1.3、进入容器redis-node-1,构建主从关系

    # 进入redis-node-1节点
    docker exec -it redis-node-1 /bin/bash
    
    # 构建主从关系,以下的ip可以在宿主主机上通过ifconfig查看(ens33)
    redis-cli --cluster create 192.168.126.129:6381 192.168.126.129:6382 192.168.126.129:6383 192.168.126.129:6384 192.168.126.129:6385 192.168.126.129:6386 --cluster-replicas 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 实际操作
      在这里插入图片描述
      在这里插入图片描述在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    1.4、以redis-node-1为切入点,查看节点状态

    redis-cli -p 6381
    
    cluster info
    
    cluster nodes
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述

    1.5、如果docker启动报错

    只需要重新启动即可。

    docker start 容器ID
    
    • 1

    在这里插入图片描述

    1.6、redis集群读写路由增强正确案例

    redis-cli -p 6381 -c
    
    FLUSHALL
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    1.7、查看集群信息

    redis-cli --cluster check 192.168.126.129:6381
    
    • 1

    在这里插入图片描述

    1.8、主从容错切换迁移

    在这里插入图片描述

    • 先停止集群1(redis-node-1)
      在这里插入图片描述- 再次查看集群信息,发现节点1(redis-node-1)已经停止

    在这里插入图片描述

    • 启动6382节点,我们发现此时6382变成了master,原来6381由master变成了salve

    在这里插入图片描述

    • 再次启动redis-node-1,我们发现启动后的redis-node-1依然是slave,而redis-node-2是master
    
    #启动redis-node-1
    docker start redis-node-1
    
    (
    #停止redis-node-1的命令
    docker stop redis-node-1
    )
    
    #查看集群状态
    cluster nodes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    在这里插入图片描述

    1.9、主从扩容

    在这里插入图片描述- 新建6387、6388两个节点+新建后启动+查看是否有8个节点

    docker run -d --name redis-node-7 --net host --privileged=true -v /temp/redis/share/redis-node-7:/data redis --cluster-enabled yes --appendonly yes --port 6387
    
    docker run -d --name redis-node-8 --net host --privileged=true -v /temp/redis/share/redis-node-8:/data redis --cluster-enabled yes --appendonly yes --port 6388
    
    docker ps
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    • 进入6387容器实例内部
    docker exec -it redis-node-7 /bin/bash
    
    • 1

    在这里插入图片描述

    • 将新增的6387节点作为master加入原集群
    # 6381相当于6387的引路人,将6387推荐进入集群
    redis-cli --cluster add-node 192.168.126.129:6387 192.168.126.129:6381
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    • 检查集群情况第1次
    redis-cli --cluster check 192.168.126.129:6387
    
    • 1

    在这里插入图片描述

    • 重新分派槽号
    redis-cli --cluster reshard 192.168.126.129:6381
    
    
    • 1
    • 2

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    • 检查集群情况第2次
    redis-cli --cluster check 192.168.126.129:6387
    
    • 1

    在这里插入图片描述

    • 原来的三个主机都分出来相同的槽点数给新的主节点,并不是全部洗牌,重新分配

    在这里插入图片描述

    • 为主节点6387分配从节点6388
    # redis-cli --cluster add-node 192.168.126.129:6388 192.168.126.129:6387 --cluster-slave --cluster-master-id 主节点7容器ID
    
    redis-cli --cluster add-node 192.168.126.129:6388 192.168.126.129:6387 --cluster-slave --cluster-master-id a7e68cb432df591df220ad76700ea6bb43093ddc
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述

    • 检查集群情况第3次
    redis-cli --cluster check 192.168.126.129:6388
    
    • 1

    在这里插入图片描述

    1.10、主从缩容

    在这里插入图片描述
    -获取redis-node-7的容器ID

    redis-cli --cluster check 192.168.126.129:6387
    
    • 1
    • 将6388删除
    
    # redis-cli --cluster del-node 192.168.126.129:6388 容器ID
    
    redis-cli --cluster del-node 192.168.126.129:6388 19ad55089a4443f5c17260311ab4ddc50d7981d2
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    在这里插入图片描述

    • 检查集群情况第一次:只剩下7个节点
      在这里插入图片描述
    • 重新分配槽点,本案例中时将空余出来的槽点全部分配给节点1
    redis-cli --cluster reshard 192.168.126.129:6381
    
    • 1

    • 检查集群情况第2次:6387的槽点数已全部分出,目前6387槽点数为0

    在这里插入图片描述
    在这里插入图片描述

    • 将6387节点删除
    redis-cli --cluster del-node 192.168.126.129:6387 容器ID
    
    • 1

    在这里插入图片描述在这里插入图片描述

    • 第三次检查集群情况,又变回了三主三从

    在这里插入图片描述

  • 相关阅读:
    【混合编程】Matlab和C++混编
    Windows用户及组管理
    人工智能数学课高等数学线性微积分数学教程笔记(6. 概率论)
    银行分布式持久化存储系统方案设计
    算法题:203. 移除链表元素(递归法、设置虚拟头节点法等3种方法)Java实现创建链表与解析链表
    PHP学习笔记(一往无前)
    【面试题精讲】SpringTemplate使用
    西门子精彩触摸屏SMART V3组态用户管理的具体方法和步骤
    CLR via C#(三)垃圾回收
    alibaba fastjson的JsonObject有序的实现和源码分析
  • 原文地址:https://blog.csdn.net/qq_46112274/article/details/125965563