【问题标题】:How to create redis-cluster in docker based environment如何在基于 docker 的环境中创建 redis-cluster
【发布时间】:2020-03-25 02:17:06
【问题描述】:

我想在基于 docker 的环境中创建 Redis 集群,任何支持复制并允许我使用 docker-compose 创建集群的 docker 基础镜像都会有所帮助。

【问题讨论】:

    标签: docker redis-cluster


    【解决方案1】:

    这是我的工作 .yml 文件

    version: '3.7'
    
    services:
      fix-redis-volume-ownership: # This service is to authorise redis-master with ownership permissions
        image: 'bitnami/redis:latest'
        user: root
        command: chown -R 1001:1001 /bitnami
        volumes:
          - ./data/redis:/bitnami
          - ./data/redis/conf/redis.conf:/opt/bitnami/redis/conf/redis.conf
    
      redis-master: # Setting up master node
        image: 'bitnami/redis:latest'
        ports:
          - '6329:6379' # Port 6329 will be exposed to handle connections from outside server 
        environment:
          - REDIS_REPLICATION_MODE=master # Assigning the node as a master
          - ALLOW_EMPTY_PASSWORD=yes # No password authentication required/ provide password if needed
        volumes:
          - ./data/redis:/bitnami # Redis master data volume
          - ./data/redis/conf/redis.conf:/opt/bitnami/redis/conf/redis.conf # Redis master configuration volume
    
    
      redis-replica: # Setting up slave node
        image: 'bitnami/redis:latest'
        ports:
          - '6379' # No port is exposed 
        depends_on:
          - redis-master # will only start after the master has booted completely
        environment:
          - REDIS_REPLICATION_MODE=slave # Assigning the node as slave
          - REDIS_MASTER_HOST=redis-master # Host for the slave node is the redis-master node
          - REDIS_MASTER_PORT_NUMBER=6379 # Port number for local 
          - ALLOW_EMPTY_PASSWORD=yes # No password required to connect to node
    
    

    【讨论】:

    • 嗨,我可以使用 Bitnami Image 在 Docker 中创建一个 Redis 集群。我想通过 IntelliJ 从我的 Spring Boot 项目连接到集群,可以这样做吗?我正在使用 Windows 机器。提前致谢。
    • 我认为“只有在主服务器完全启动后才会启动”的评论具有误导性。在 Docker Compose 中,依赖仅表示依赖的服务启动,不涉及等待或健康检查。
    【解决方案2】:

    您可以使用bitnami-docker-redis

    使用 Docker Compose,可以使用以下方式设置主/副本模式:

    version: '2'
    
    services:
      redis-master:
        image: 'bitnami/redis:latest'
        ports:
          - '6379'
        environment:
          - REDIS_REPLICATION_MODE=master
          - REDIS_PASSWORD=my_master_password
        volumes:
          - '/path/to/redis-persistence:/bitnami'
    
      redis-replica:
        image: 'bitnami/redis:latest'
        ports:
          - '6379'
        depends_on:
          - redis-master
        environment:
          - REDIS_REPLICATION_MODE=slave
          - REDIS_MASTER_HOST=redis-master
          - REDIS_MASTER_PORT_NUMBER=6379
          - REDIS_MASTER_PASSWORD=my_master_password
          - REDIS_PASSWORD=my_replica_password
    

    使用以下方法缩放副本数量:

    $ docker-compose up --detach --scale redis-master=1 --scale redis-secondary=3
    
    

    上面的命令将副本数扩容到3个。你可以扩容 以同样的方式向下。

    注意:您不应增加/减少主节点的数量。总是 只有一个主节点在运行。

    bitnami-docker-redis-cluster

    【讨论】:

    • $ docker-compose up --detach --scale redis-master=1 --scale redis-secondary=3 命令只创建1个从节点,尝试增加从节点但没有成功,1。你能给我一个命令来检查或验证它们是否连接吗? 2.执行上述命令每次都会改变端口号
    • 在缩放中你不能使用静态端口,如果你想在master中添加ports: - '6379:6379'
    • 容器已创建,但自动关闭... 08:01:46.50 INFO ==> ** 开始 Redis 设置 ** 08:01:46.62 INFO ==> 正在初始化 Redis... mkdir:无法创建目录'/bitnami/redis':权限被拒绝尝试授予权限但没有运气
    【解决方案3】:

    您可以使用它来创建具有主节点和从节点的副本

    version: '3'
    
    services:
      redis:
        image: redis:5.0.0
        container_name: master
        ports:
          - "6379:6379"
        networks:
          - redis-replication
    
      redis-slave:
        image: redis:5.0.0
        container_name: slave
        ports:
          - "6380:6379"
        command: redis-server --slaveof master 6379
        depends_on:
          - redis
        networks:
          - redis-replication
    
    networks:
      redis-replication:
        driver: bridge
    

    或者你可以将它与 redislabs/redismod 一起使用:

    redis:
      image: redislabs/redismod:latest
    ports:
      - "6329:6329"
    command:
      [
        "--loadmodule",
        "/usr/lib/redis/modules/redisai.so",
        "--loadmodule",
        "/usr/lib/redis/modules/redisearch.so",
        "--loadmodule",
        "/usr/lib/redis/modules/redisgraph.so",
        "--loadmodule",
        "/usr/lib/redis/modules/redistimeseries.so",
        "--loadmodule",
        "/usr/lib/redis/modules/rejson.so",
        "--loadmodule",
        "/usr/lib/redis/modules/redisbloom.so",
        "--loadmodule",
        "/usr/lib/redis/modules/redisgears.so",
        "Plugin",
        "/var/opt/redislabs/modules/rg/plugin/gears_python.so",
        --port 6329,
      ]
    redis-slave:
      image: redislabs/redismod:latest
      ports:
        - "6380:6379"
      command:
        [
          "--loadmodule",
          "/usr/lib/redis/modules/redisai.so",
          "--loadmodule",
          "/usr/lib/redis/modules/redisearch.so",
          "--loadmodule",
          "/usr/lib/redis/modules/redisgraph.so",
          "--loadmodule",
          "/usr/lib/redis/modules/redistimeseries.so",
          "--loadmodule",
          "/usr/lib/redis/modules/rejson.so",
          "--loadmodule",
          "/usr/lib/redis/modules/redisbloom.so",
          "--loadmodule",
          "/usr/lib/redis/modules/redisgears.so",
          "Plugin",
          "/var/opt/redislabs/modules/rg/plugin/gears_python.so",
          --REPLICAOF redis 6329,
      ]
    depends_on:
      - redis
    

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 2014-07-28
      • 2017-11-28
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      相关资源
      最近更新 更多