参考 https://www.jianshu.com/p/577460595c8c
一镜像版本时redis:5.0.2
docker pull redis:5.0.2
二创建redis-cluster.tmpl,并将下面内容复制进去
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
三创建集群配置文件与数据卷
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容器
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
我在网上查到这里配置 ip的地址是打印出来的IP
for port in `seq 7000 7005`; do \
echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \
done
得到ip 并配置得到如下命令
docker run -it --link redis-7000:redis --net redis-net --rm redis redis-cli --cluster create 172.19.0.2:7000 172.19.0.3:7001 172.19.0.4:7002 172.19.0.5:7003 172.19.0.6:7004 172.19.0.7:7005 --cluster-replicas 1
在执行该命令的时候会卡住过段时间会报 连接超时
image.png
我的解决方法是将ip 换为你的公网IP就行
docker run -it --link redis-7000:redis --net redis-net --rm redis redis-cli --cluster create 公网IP:7000 公网IP:7001 公网IP:7002 公网IP:7003 公网IP:7004 公网IP:7005 --cluster-replicas 1
这样就不会在被卡住并且执行成功了
image.png
结束
网友评论