轉載:Docker Redis5.0集群
一、容器準備
? 從Docker Hub拉取Redis鏡像。
docker pull redis:tag #將tag換成具體的版本tag,本教程基于redis5以上版本
二、準備配置文件 redis-cluster.tmpl
? 在服務器創(chuàng)建redis-cluster目錄,在目錄下創(chuàng)建redis-cluster.tmpl文件,需要將cluster-announce-ip換成自己的公網(wǎng)IP,內(nèi)容如下。
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
至此已經(jīng)創(chuàng)建文件${your path}/redis-cluster/redis-cluster.tmpl
三、創(chuàng)建redis配置文件
? 在剛創(chuàng)建的redis-cluster目錄下執(zhí)行創(chuàng)建創(chuàng)建配置文件批處理命令。
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
四、創(chuàng)建集群的network
docker network create redis-net
五、啟動Redis容器
? 執(zhí)行命令啟動容器,需要將${your path}替換成你的真實路徑,將${tag}換成你的鏡像版本號。
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、得到集群網(wǎng)絡中的容器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、創(chuàng)建集群
Redis 5.0搭建集群已經(jīng)棄用了ruby,而是直接使用
redis-cli來創(chuàng)建集群。
? 進入其中一個Redis容器。
docker exec -it redis-7005 /bin/bash
? 執(zhí)行集群命令,注意需要用到上一步得到的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