转载:Docker Redis5.0集群
一、容器准备
从Docker Hub拉取Redis镜像。
docker pull redis:tag #将tag换成具体的版本tag
二、准备配置文件 redis-cluster.tmpl
在服务器创建redis-cluster
目录,在目录下创建redis-cluster.tmpl
文件,需要将cluster-announce-ip
换成自己的公网IP,内容如下。
port ${PORT} protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 39.10X.XX.XX //自己服务器IP cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} appendonly yes
至此已经创建文件${your path}/redis-cluster/redis-cluster.tmpl
三、创建redis配置文件
在刚创建的redis-cluster
目录下执行创建创建配置文件批处理命令。
for port in `seq 7000 7005`; do \ mkdir -p ./${port}/conf \ && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \ && mkdir -p ./${port}/data; \ done
四、创建集群的network
docker network create redis-net
五、启动Redis容器
执行命令启动容器,需要将${your path}
替换成你的真实路径。
for port in `seq 7000 7005`; do \ docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \ -v ${your path}/redis_cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -v ${your path}/redis_cluster/${port}/data:/data \ --restart always --name redis-${port} --net redis-net \ --sysctl net.core.somaxconn=1024 redis:tag redis-server /usr/local/etc/redis/redis.conf; \ done
六、搭建集群
1、得到集群网络中的容器ip地址
for port in `seq 7000 7005`; do \ echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \ done
得到如:172.18.0.2:7000 172.18.0.3:7001 172.18.0.4:7002 172.18.0.5:7003 172.18.0.6:7004 172.18.0.7:7005
2、创建集群
Redis 5.0搭建集群已经弃用了ruby,而是直接使用
redis-cli
来创建集群。
进入其中一个Redis容器。
docker exec -it redis-7005 /bin/bash
执行集群命令,注意需要用到上一步得到的IP地址
。
redis-cli --cluster create 172.18.0.2:7000 172.18.0.3:7001 172.18.0.4:7002 172.18.0.5:7003 172.18.0.6:7004 172.18.0.7:7005 --cluster-replicas 1
作者:始终我是我
链接:https://www.jianshu.com/p/577460595c8c