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
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TsZj4TbY-1652793088761)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517205244260.png)]](https://code84.com/wp-content/uploads/2022/09/be5e0afea1794b99a1a069b7611d26e2.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHcpHzt7-1652793088762)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517205304498.png)]](https://code84.com/wp-content/uploads/2022/09/a5079e15a71b46678378a4b9982862d1.png)
遇到的问题:
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)]](https://code84.com/wp-content/uploads/2022/09/b6ead9b2fbca4250b839de79b3b327e8.png)
2.其次进入redis-6371容器报错,进入redis-6372容器没问题,重新启动redis-6371也没用
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZuyWpVO-1652793088763)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517154500303.png)]](https://code84.com/wp-content/uploads/2022/09/06b78059cd2d4e2f98b86034291d6357.png)
查看redis-6371的日志发现有问题,redis-6373也有同样的问题:![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bbv4vXNf-1652793088763)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517154556756.png)]](https://code84.com/wp-content/uploads/2022/09/756ec51102ad4622999d46e3d341c9f4.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tUgjbla2-1652793088763)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517154743728.png)]](https://code84.com/wp-content/uploads/2022/09/e69d7ebdd3bd4c44a9d104ce8fbba59a.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
创建成功最后部分截图如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VuZ0Lxp1-1652793088764)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517210353129.png)]](https://code84.com/wp-content/uploads/2022/09/33cdec36792349bc9c0be4a52f09f4ad.png)
2.5 删除集群
只需要一个命令,就可以停掉所有正在运行的容器
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UmfkWy7j-1652793088764)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220517210710230.png)]](https://code84.com/wp-content/uploads/2022/09/d85664c8910843bebe77a901101ff316.png)
恢复集群,再输入 docker-compose up -d就可以了,这比之前需要手动停止容器运行的 <Docker搭建Redis-cluster>要方便很多
版权声明:本文为weixin_54441446原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。