• Centos Docker部署Redis集群三主三从


    一、安装Docker

    yum install docker-engine

    二、编辑节点配置文件

    1. 创建文件夹

      cd /home
      # 节点一:6370端口
      mkdir -p redis-cluster/redis-6370/conf
      mkdir -p redis-cluster/redis-6370/data
      # 节点二:6371端口
      mkdir -p redis-cluster/redis-6371/conf
      mkdir -p redis-cluster/redis-6371/data
      # 节点三:6372端口
      mkdir -p redis-cluster/redis-6372/conf
      mkdir -p redis-cluster/redis-6372/data
      # 节点四:6373端口
      mkdir -p redis-cluster/redis-6373/conf
      mkdir -p redis-cluster/redis-6373/data
      # 节点五:6374端口
      mkdir -p redis-cluster/redis-6374/conf
      mkdir -p redis-cluster/redis-6374/data
      # 节点六:6375端口
      mkdir -p redis-cluster/redis-6375/conf
      mkdir -p redis-cluster/redis-6375/data
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
    2. 编辑配置文件

    vim redis-cluster/redis-6370/conf/redis.conf

    配置文件内容(6个节点及目录内的配置文件,都可以下面配置为模板,更改端口号和集群通信端口号即可):

    # 端口号
    port 6370
    
    # 设置客户端连接后进行任何其他指定前需要使用的密码
    requirepass 123456
    ## 当master服务设置了密码保护时(用requirepass制定的密码)
    # slav服务连接master的密码
    masterauth 123456
    
    # daemonize no 将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败
    daemonize no
    
    # 任何主机都可以连接到redis
    bind 0.0.0.0
    
    # 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。
    protected-mode no
    
    # 开启AOF
    appendonly yes
    
    # 集群开关,如果配置yes则开启集群功能,此redis实例作为集群的一个节点,否则,它是一个普通的单一的redis实例。
    cluster-enabled yes
    
    # 集群配置文件的名称,此配置文件不能人工编辑,它是集群节点自动维护的文件,主要用于记录集群中有哪些节点、他们的状态以及一些持久化参数等,方便在重启时恢复这些状态。通常是在收到请求之后这个文件就会被更新。
    cluster-config-file nodes.conf
    
    # 节点互连超时的阀值。集群节点超时毫秒数
    cluster-node-timeout 15000
    
    # 以下三个配置参数静态设定节点的运行参数, 包括对外IP, 普通Redis命令端口和集群桥接端口
    
    # Redis Cluster 不支持NATted环境和IP地址或TCP端口被重映射(remapped)的环境。
    # Docker使用一种名叫port mapping的技术, 运行于Docker容器内的程序实际对外使用的端口和监听的端口可不相同. 为了让Docker 兼容Redis Cluster, 需要使用Docker的host network模式。
    #为了使Redis集群在这样的环境中工作,静态每个节点都知道需要其公共地址的配置
    cluster-announce-ip 192.168.3.111
    
    # 客户端连接端口
    cluster-announce-port 6370
    
    # 总线端口为普通端口port+10000,所谓Cluster bus, 即使用一种二进制协议(binary protocol)进行集群内点对点(node-to-node)通讯, 包括节点失效检测, 配置更新, 故障转移(failover)认证等
    cluster-announce-bus-port 6370
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    三、启动节点

    1. 启动节点一

      docker run -d --name redis-6370 \
      --net host --privileged=true \
      -v /home/redis-cluster/redis-6370/conf/redis.conf:/etc/redis/redis.conf \
      -v /home/redis-cluster/redis-6370/data:/data \
      redis redis-server /etc/redis/redis.conf
      
      • 1
      • 2
      • 3
      • 4
      • 5
    2. 启动节点二

      docker run -d --name redis-6371 \
      --net host --privileged=true \
      -v /home/redis-cluster/redis-6371/conf/redis.conf:/etc/redis/redis.conf \
      -v /home/redis-cluster/redis-6371/data:/data \
      redis redis-server /etc/redis/redis.conf
      
      • 1
      • 2
      • 3
      • 4
      • 5
    3. 启动节点三

      docker run -d --name redis-6372 \
      --net host --privileged=true \
      -v /home/redis-cluster/redis-6372/conf/redis.conf:/etc/redis/redis.conf \
      -v /home/redis-cluster/redis-6372/data:/data \
      redis redis-server /etc/redis/redis.conf
      
      • 1
      • 2
      • 3
      • 4
      • 5
    4. 启动节点四

      docker run -d --name redis-6373 \
      --net host --privileged=true \
      -v /home/redis-cluster/redis-6373/conf/redis.conf:/etc/redis/redis.conf \
      -v /home/redis-cluster/redis-6373/data:/data \
      redis redis-server /etc/redis/redis.conf
      
      • 1
      • 2
      • 3
      • 4
      • 5
    5. 启动节点五

      docker run -d --name redis-6374 \
      --net host --privileged=true \
      -v /home/redis-cluster/redis-6374/conf/redis.conf:/etc/redis/redis.conf \
      -v /home/redis-cluster/redis-6374/data:/data \
      redis redis-server /etc/redis/redis.conf
      
      • 1
      • 2
      • 3
      • 4
      • 5
    6. 启动节点六

      docker run -d --name redis-6375 \
      --net host --privileged=true \
      -v /home/redis-cluster/redis-6375/conf/redis.conf:/etc/redis/redis.conf \
      -v /home/redis-cluster/redis-6375/data:/data \
      redis redis-server /etc/redis/redis.conf
      
      • 1
      • 2
      • 3
      • 4
      • 5

    四、配置集群

    1. 进入一个节点容器

      docker exec -it redis-6370 bash

    2. 配置集群节点

      redis-cli -a 123456 --cluster create 192.168.3.111:6370 192.168.3.111:6371 192.168.3.111:6372 192.168.3.111:6373 192.168.3.111:6374 192.168.3.111:6375 --cluster-replicas 1
      
      • 1

    五、验证集群节点

    redis-cli -h 192.168.3.111 -p 6370 -a 123456
    cluster nodes
    
    • 1
    • 2
  • 相关阅读:
    面试-SpringCloud常见组件和注册表结构+nacos
    数据结构 | Python实现列表队列 | 源码和示例
    【每日两题】day 01 组队竞赛 & 删除公共字符
    linux中 删除指定行多行sed命令
    ES6基础知识
    一款.NET开源、免费、实用的多功能原神工具箱(改善桌面端玩家的游戏体验)
    java计算机毕业设计扶贫产品展销平台源码+数据库+系统+lw文档+mybatis+运行部署
    Java面试题--JVM大厂篇之深入探讨Serial GC的应用场景
    计算机毕业设计Java校园二手交易系统(源码+系统+mysql数据库+Lw文档)
    微服务治理新篇章:Eureka中细粒度策略管理实现
  • 原文地址:https://blog.csdn.net/yangxiao_hui/article/details/133775320