dockerワンタッチでredisクラスタ、shellスクリプトを配置
8821 ワード
docker 。redis 。
初心者のパートナーがクラスタ作成の難しさに悩むために、shellスクリプトをわざわざ書いた.自分の腕でも料理は上手ですが、私と同じ料理の仲間もいると信じています...ははははは多くなく直接シナリオに行って大神がもっと最適化することを望んで、最適化したバージョンは分かち合うことができます.わあ、あなたの大神を待っていて、一緒に技術を交流します.
#!/bin/bash
docker rm -f `docker ps --filter name=.*redis-700.* -aq`
echo "1. "
gml=""
while :
do
read path
if [[ "$path" =~ ^([\/]{1}[a-zA-Z]{1,9}){1,5}$ ]];then
gml=$path
break
else
echo "$path linux "
echo " 《/path/path1...》"
fi
done
rm -rf $path/redis
mkdir $path
cd $gml
echo "2. redis "
mkdir redis
cd redis
docker pull redis:5.0.4
echo "3. redis "
touch redis-cluster.tmpl
echo -e "port \${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.2.103
cluster-announce-port \${PORT}
cluster-announce-bus-port 1\${PORT}
appendonly yes">>redis-cluster.tmpl
docker network create redis-net
echo "4. "
echo "5. redis "
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
echo "6.redis "
ips=""
for port in `seq 7000 7005`
do
docker run --privileged=true -m 200m -d -p ${port}:${port} -p 1${port}:1${port} -v /${gml}/redis/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /${gml}/redis/${port}/data:/d
ata --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis:5.0.4 redis-server /usr/local/etc/redis/redis.conf
echo "7. redis-$port "
ips="$ips`docker inspect redis-${port} --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}'`:${port} "
done
echo " "
docker exec -it redis-7000 bash -c "echo yes | redis-cli --cluster create $ips --cluster-replicas 1 && exit"
echo " !!!"
コンテンツをshellの最後にコピーしてlinuxスクリプトを直接実行すればいいです.