前言
本文主要记录redis 5.0版本之后的集群快速搭建脚本create-cluster相关细节说明。
shell脚本说明
#!/bin/bash
PORT
=30000
TIMEOUT
=2000
NODES
=6
REPLICAS
=1
if [ -a config.sh
]
then
source "config.sh"
fi
ENDPORT
=$((PORT+NODES))
if [ "$1" == "start" ]
then
while [ $((PORT < ENDPORT)) != "0" ]; do
PORT
=$((PORT+1))
echo "Starting $PORT"
../
../src/redis-server --port
$PORT --cluster-enabled
yes --cluster-config-file nodes-
${PORT}.conf --cluster-node-timeout
$TIMEOUT --appendonly
yes --appendfilename appendonly-
${PORT}.aof --dbfilename dump-
${PORT}.rdb --logfile
${PORT}.log --daemonize
yes
done
exit 0
fi
if [ "$1" == "create" ]
then
HOSTS
=""
while [ $((PORT < ENDPORT)) != "0" ]; do
PORT
=$((PORT+1))
HOSTS
="$HOSTS 127.0.0.1:$PORT"
done
../
../src/redis-cli --cluster create
$HOSTS --cluster-replicas
$REPLICAS
exit 0
fi
if [ "$1" == "stop" ]
then
while [ $((PORT < ENDPORT)) != "0" ]; do
PORT
=$((PORT+1))
echo "Stopping $PORT"
../
../src/redis-cli -p
$PORT shutdown nosave
done
exit 0
fi
if [ "$1" == "watch" ]
then
PORT
=$((PORT+1))
while [ 1
]; do
clear
date
../
../src/redis-cli -p
$PORT cluster nodes
| head -30
sleep 1
done
exit 0
fi
if [ "$1" == "tail" ]
then
INSTANCE
=$2
PORT
=$((PORT+INSTANCE))
tail -f
${PORT}.log
exit 0
fi
if [ "$1" == "call" ]
then
while [ $((PORT < ENDPORT)) != "0" ]; do
PORT
=$((PORT+1))
../
../src/redis-cli -p
$PORT $2 $3 $4 $5 $6 $7 $8 $9
done
exit 0
fi
if [ "$1" == "clean" ]
then
rm -rf *.log
rm -rf appendonly*.aof
rm -rf dump*.rdb
rm -rf nodes*.conf
exit 0
fi
if [ "$1" == "clean-logs" ]
then
rm -rf *.log
exit 0
fi
echo "Usage: $0 [start|create|stop|watch|tail|clean]"
echo "start -- Launch Redis Cluster instances."
echo "create -- Create a cluster using redis-cli --cluster create."
echo "stop -- Stop Redis Cluster instances."
echo "watch -- Show CLUSTER NODES output (first 30 lines) of first node."
echo "tail <id> -- Run tail -f of instance at base port + ID."
echo "clean -- Remove all instances data, logs, configs."
echo "clean-logs -- Remove just instances logs."