mirror of
https://gitee.com/dgiiot/dgiot.git
synced 2024-12-03 20:59:41 +08:00
126 lines
4.4 KiB
Bash
126 lines
4.4 KiB
Bash
#!/bin/bash
|
|
|
|
set -x
|
|
|
|
LOCAL_IP=$(hostname -i | grep -oE '((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])\.){3}(25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])' | head -n 1)
|
|
|
|
node=single
|
|
tls=false
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
key="$1"
|
|
|
|
case $key in
|
|
-n|--node)
|
|
node="$2"
|
|
shift # past argument
|
|
shift # past value
|
|
;;
|
|
-t|--tls-enabled)
|
|
tls="$2"
|
|
shift # past argument
|
|
shift # past value
|
|
;;
|
|
*)
|
|
shift # past argument
|
|
;;
|
|
esac
|
|
done
|
|
|
|
rm -f \
|
|
/data/conf/r7000i.log \
|
|
/data/conf/r7001i.log \
|
|
/data/conf/r7002i.log \
|
|
/data/conf/nodes.7000.conf \
|
|
/data/conf/nodes.7001.conf \
|
|
/data/conf/nodes.7002.conf ;
|
|
|
|
if [ "${node}" = "cluster" ] ; then
|
|
if $tls ; then
|
|
redis-server /data/conf/redis-tls.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf \
|
|
--tls-port 8000 --cluster-enabled yes ;
|
|
redis-server /data/conf/redis-tls.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf \
|
|
--tls-port 8001 --cluster-enabled yes;
|
|
redis-server /data/conf/redis-tls.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf \
|
|
--tls-port 8002 --cluster-enabled yes;
|
|
else
|
|
redis-server /data/conf/redis.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf --cluster-enabled yes;
|
|
redis-server /data/conf/redis.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf --cluster-enabled yes;
|
|
redis-server /data/conf/redis.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf --cluster-enabled yes;
|
|
fi
|
|
elif [ "${node}" = "sentinel" ] ; then
|
|
if $tls ; then
|
|
redis-server /data/conf/redis-tls.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf \
|
|
--tls-port 8000 --cluster-enabled no;
|
|
redis-server /data/conf/redis-tls.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf \
|
|
--tls-port 8001 --cluster-enabled no --slaveof "$LOCAL_IP" 8000;
|
|
redis-server /data/conf/redis-tls.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf \
|
|
--tls-port 8002 --cluster-enabled no --slaveof "$LOCAL_IP" 8000;
|
|
|
|
else
|
|
redis-server /data/conf/redis.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf \
|
|
--cluster-enabled no;
|
|
redis-server /data/conf/redis.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf \
|
|
--cluster-enabled no --slaveof "$LOCAL_IP" 7000;
|
|
redis-server /data/conf/redis.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf \
|
|
--cluster-enabled no --slaveof "$LOCAL_IP" 7000;
|
|
fi
|
|
fi
|
|
REDIS_LOAD_FLG=true;
|
|
|
|
while $REDIS_LOAD_FLG;
|
|
do
|
|
sleep 1;
|
|
redis-cli --pass public --no-auth-warning -p 7000 info 1> /data/conf/r7000i.log 2> /dev/null;
|
|
if [ -s /data/conf/r7000i.log ]; then
|
|
:
|
|
else
|
|
continue;
|
|
fi
|
|
redis-cli --pass public --no-auth-warning -p 7001 info 1> /data/conf/r7001i.log 2> /dev/null;
|
|
if [ -s /data/conf/r7001i.log ]; then
|
|
:
|
|
else
|
|
continue;
|
|
fi
|
|
redis-cli --pass public --no-auth-warning -p 7002 info 1> /data/conf/r7002i.log 2> /dev/null;
|
|
if [ -s /data/conf/r7002i.log ]; then
|
|
:
|
|
else
|
|
continue;
|
|
fi
|
|
if [ "${node}" = "cluster" ] ; then
|
|
if $tls ; then
|
|
yes "yes" | redis-cli --cluster create "$LOCAL_IP:8000" "$LOCAL_IP:8001" "$LOCAL_IP:8002" --pass public --no-auth-warning --tls true --cacert /tls/ca.crt --cert /tls/redis.crt --key /tls/redis.key;
|
|
else
|
|
yes "yes" | redis-cli --cluster create "$LOCAL_IP:7000" "$LOCAL_IP:7001" "$LOCAL_IP:7002" --pass public --no-auth-warning;
|
|
fi
|
|
elif [ "${node}" = "sentinel" ] ; then
|
|
tee /_sentinel.conf>/dev/null << EOF
|
|
port 26379
|
|
bind 0.0.0.0 ::
|
|
daemonize yes
|
|
logfile /var/log/redis-server.log
|
|
dir /tmp
|
|
EOF
|
|
if $tls ; then
|
|
cat >>/_sentinel.conf<<EOF
|
|
tls-port 26380
|
|
tls-replication yes
|
|
tls-cert-file /tls/redis.crt
|
|
tls-key-file /tls/redis.key
|
|
tls-ca-cert-file /tls/ca.crt
|
|
sentinel monitor mymaster $LOCAL_IP 8000 1
|
|
EOF
|
|
else
|
|
cat >>/_sentinel.conf<<EOF
|
|
sentinel monitor mymaster $LOCAL_IP 7000 1
|
|
EOF
|
|
fi
|
|
redis-server /_sentinel.conf --sentinel;
|
|
fi
|
|
REDIS_LOAD_FLG=false;
|
|
done
|
|
|
|
exit 0;
|