Docker Compose一键部署Redis Cluster集群

Docker Compose搭建Redis Cluster集群环境

1.环境

​ 可以参考上一篇文章Docker搭建Redis-Cluster的环境

2.搭建

2.1.编写Redis配置文件

2.1.1.创建目录及文件
2.1.2.编写配置文件

2.2.编写Docker Compose模板文件

​ 在 192.168.31.138 机器的 /usr/local/docker-redis 目录下创建 docker-compose.yml 文件并编辑

# 描述 Compose 文件的版本信息
version: "3.8"

# 定义服务,可以多个
services:
  redis-6371: #服务名称
    image: redis #创建容器时所需的镜像
    container_name: redis-6371 #容器名称
    restart: always #容器总是重新启动
    network_mode: "host" #host网络模式
    volumes: #数据卷,目录挂载
      - /usr/local/docker-redis/redis-cluster/6371/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /usr/local/docker-redis/6371/data:/data	  
    command: redis-server /usr/local/etc/redis/redis.conf #覆盖容器启动后默认执行的命令	
  redis-6372: 
    image: redis 
    container_name: redis-6372
    network_mode: "host" 
    volumes: 
      - /usr/local/docker-redis/redis-cluster/6372/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /usr/local/docker-redis/6372/data:/data	  
    command: redis-server /usr/local/etc/redis/redis.conf 

  redis-6373: 
    image: redis 
    container_name: redis-6373
    network_mode: "host" 
    volumes: 
      - /usr/local/docker-redis/redis-cluster/6373/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /usr/local/docker-redis/6373/data:/data	  
    command: redis-server /usr/local/etc/redis/redis.conf 


​ 在 192.168.31.139 机器的 /usr/local/docker-redis 目录下创建 docker-compose.yml 文件并编辑

#描述 Compose 文件的版本信息
version: "3.8"

# 定义服务,可以多个
services:
  redis-6374: #服务名称
    image: redis #创建容器时所需的镜像
    container_name: redis-6374 #容器名称
    restart: always #容器总是重新启动
    network_mode: "host" #host网络模式
    volumes: #数据卷,目录挂载
      - /usr/local/docker-redis/redis-cluster/6374/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /usr/local/docker-redis/6374/data:/data           
    command: redis-server /usr/local/etc/redis/redis.conf #覆盖容器启动后默认执行的命令
        
  redis-6375: 
    image: redis 
    container_name: redis-6375
    network_mode: "host"
    volumes:
      - /usr/local/docker-redis/redis-cluster/6375/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /usr/local/docker-redis/6375/data:/data           
    command: redis-server /usr/local/etc/redis/redis.conf

  redis-6376: 
    image: redis 
    container_name: redis-6376
    network_mode: "host"
    volumes: 
      - /usr/local/docker-redis/redis-cluster/6376/conf/redis.conf:/usr/local/etc/redis/redis.conf 
      - /usr/local/docker-redis/6376/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf

2.3创建并启动所有服务容器

​ 分别在 192.168.31.138 和 192.168.31.139 机器的 /usr/local/docker-redis/redis-cluster 目录下执行以下命令:

docker-compose up -d

Docker Compose一键部署Redis Cluster集群_第1张图片
Docker Compose一键部署Redis Cluster集群_第2张图片

遇到的问题:

1.执行完docker-compose up -d 之后去查看docker ps,发现redis-6371和redis-6373的状态都不对,redis-6371的状态是Restarting,redis-6373的状态是Exited

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hudN5kt8-1652793088762)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517154143601.png)]

2.其次进入redis-6371容器报错,进入redis-6372容器没问题,重新启动redis-6371也没用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZuyWpVO-1652793088763)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517154500303.png)]

查看redis-6371的日志发现有问题,redis-6373也有同样的问题:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bbv4vXNf-1652793088763)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517154556756.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tUgjbla2-1652793088763)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517154743728.png)]

解决办法:

#先可以通过报错的地方在csdn上找答案,如果发现实在解决不了,可以把容器删掉,把文件删掉,再重启docker,重启可以解决90%的问题
#docker rm +container id -f # -f 强制删除
#docker rm /usr/local/docker-redis -rf
#systemctl restart docker
#再执行一遍前面的操作,就可以了

2.4.创建Redis Cluster集群

​ 先确保两台机器可以互相通信,然后随便进入一个容器节点,并进入 /usr/local/bin 目录:

#进入容器
docker exec -it redis-6371 bash
#切换至指定目录
cd /usr/local/bin/

​ 接下来可以通过以下命令实现Redis Cluster集群的创建

redis-cli -a 123456 --cluster create 192.168.31.138:6371 192.168.31.138:6372 192.168.31.138:6373 192.168.31.139:6374 192.168.31.139:6375 192.168.31.139:6376 --cluster-replicas 1

​ 创建成功最后部分截图如下:

Docker Compose一键部署Redis Cluster集群_第3张图片

2.5 删除集群

只需要一个命令,就可以停掉所有正在运行的容器

Docker Compose一键部署Redis Cluster集群_第4张图片
恢复集群,再输入 docker-compose up -d就可以了,这比之前需要手动停止容器运行的 要方便很多

你可能感兴趣的:(linux,docker-compose,redis集群,docker,redis,容器)