docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker-compose安装redis集群

docker-compose安装redis集群教程

作者:下一个明天_tgm

本文介绍了使用Docker Compose部署Redis集群的步骤:编写配置文件设置端口和密码,创建数据卷目录,启动容器并检查状态,若集群创建失败,需手动进入容器执行redis-cli命令,处理密码认证及数据清空问题以完成集群配置

docker-compose安装redis集群

1、安装docker-compose命令

此处略过

2、编写docker-compose.yml文件

version: '2.2'

services:
  redis-node1:
    image: redis:5.0
    ## --cluster-announce-ip 你的公网IP 这部分参数 

    command: redis-server --port 7000 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0  --cluster-announce-ip 192.168.1.10
    ports:
      - "7000:7000"
      - "17000:17000"
    volumes:
      - ./data/node1:/data
    networks:
      - redis-cluster

  redis-node2:
    image: redis:5.0
    command: redis-server --port 7001 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10
    ports:
      - "7001:7001"
      - "17001:17001"
    volumes:
      - ./data/node2:/data
    networks:
      - redis-cluster

  redis-node3:
    image: redis:5.0
    command: redis-server --port 7002 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10
    ports:
      - "7002:7002"
      - "17002:17002"
    volumes:
      - ./data/node3:/data
    networks:
      - redis-cluster

  redis-node4:
    image: redis:5.0
    command: redis-server --port 7003 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10
    ports:
      - "7003:7003"
      - "17003:17003"
    volumes:
      - ./data/node4:/data
    networks:
      - redis-cluster

  redis-node5:
    image: redis:5.0
    command: redis-server --port 7004 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10
    ports:
      - "7004:7004"
      - "17004:17004"
    volumes:
      - ./data/node5:/data
    networks:
      - redis-cluster

  redis-node6:
    image: redis:5.0
    command: redis-server --port 7005 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10
    ports:
      - "7005:7005"
      - "17005:17005"
    volumes:
      - ./data/node6:/data
    networks:
      - redis-cluster
  redis-init:
    image: redis:5.0
    command: >
      sh -c "redis-server --port 7000 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind $$(hostname -i)
      && sleep 5
      && redis-cli --cluster create redis-node1:7000 redis-node2:7001 redis-node3:7002 redis-node4:7003 redis-node5:7004 redis-node6:7005 --cluster-replicas 1"
    depends_on:
      - redis-node1
    networks:
      - redis-cluster
      
  redis-node7:
    image: redis:5.0
    command: redis-server --port 7006 --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10 --cluster-announce-port 7006 --cluster-announce-bus-port 17006
    ports:
      - "7006:7006"
      - "17006:17006"
    volumes:
      - ./data/node7:/data

networks:
  redis-cluster:

备注:端口7000-7005为集群,密码统一为 lingco,7006为单节点无密码;在同路径下创建 volumes配置的文件夹。

3、执行docker compose命令

在docker-compose.yml目录中执行命令 docker-compose up -d,如果需要在其它目录执行,则需要指定配置文件yml的路径。

4、查看执行结果

5、创建集群

如果docker-compose.yml中command未执行成功或是集群未创建,则需要手动执行,如下:

redis-cli --cluster create 192.168.1.10:7000 192.168.1.10:7001 192.168.1.10:7002 192.168.1.10:7003 192.168.1.10:7004 192.168.1.10:7005 --cluster-replicas 1 -a lingco

备注:如果集群设置有密码,则需要 -a 密码(lingco),需要确认 输入 yes

集群创建成功,可以通过redis管理工具连接

6、问题排查

采用docker compose安装redis集群,端口正常启动,无法连接

测试连接可以使用,使用库号无法连接,出现如上问题可能是 集群未创建成功,需要手动执行创建集群

通过上面 5 中的 步骤1,步骤2,步骤3,来执行。

如果执行 “步骤3” 时出现提示:

“[ERR] Node xxx is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.” 

则需要清空集群中所有节点的数据 data,重新执行命令进行集群创建。

如果执行 “步骤3” 时出现提示:

“[ERR] Node 192.168.1.10:7001 NOAUTH Authentication required.” 

则需要在命令中增加 -a参数来指定密码,

如:

redis-cli --cluster create 192.168.1.10:7000 192.168.1.10:7001 192.168.1.10:7002 192.168.1.10:7003 192.168.1.10:7004 192.168.1.10:7005 --cluster-replicas 1 -a lingco

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文