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
遇到的问题:
1.执行完docker-compose up -d 之后去查看docker ps,发现redis-6371和redis-6373的状态都不对,redis-6371的状态是Restarting,redis-6373的状态是Exited
2.其次进入redis-6371容器报错,进入redis-6372容器没问题,重新启动redis-6371也没用
查看redis-6371的日志发现有问题,redis-6373也有同样的问题:
解决办法:
#先可以通过报错的地方在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
创建成功最后部分截图如下:
2.5 删除集群
只需要一个命令,就可以停掉所有正在运行的容器
恢复集群,再输入 docker-compose up -d就可以了,这比之前需要手动停止容器运行的 <Docker搭建Redis-cluster>要方便很多
版权声明:本文为weixin_54441446原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。