mirror of https://gitee.com/bigwinds/arangodb
134 lines
2.9 KiB
Bash
Executable File
134 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
params=("$@")
|
|
|
|
case $OSTYPE in
|
|
darwin*)
|
|
lib="$PWD/scripts/cluster-run-common.sh"
|
|
;;
|
|
*)
|
|
lib="$(dirname $(readlink -f ${BASH_SOURCE[0]}))/cluster-run-common.sh"
|
|
;;
|
|
esac
|
|
|
|
if [[ -f "$lib" ]]; then
|
|
. "$lib"
|
|
else
|
|
echo "could not source $lib"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -f cluster/startup_parameters ]];then
|
|
if [[ -z "${params[@]}" ]]; then
|
|
string="$(< cluster/startup_parameters)"
|
|
params=( $string )
|
|
fi
|
|
fi
|
|
|
|
parse_args "${params[@]}"
|
|
|
|
echo Number of Agents: $NRAGENTS
|
|
echo Number of DBServers: $NRDBSERVERS
|
|
echo Number of Coordinators: $NRCOORDINATORS
|
|
|
|
if [ -z "$ONGOING_PORTS" ] ; then
|
|
CO_BASE=$(( PORT_OFFSET + 8530 ))
|
|
DB_BASE=$(( PORT_OFFSET + 8629 ))
|
|
AG_BASE=$(( PORT_OFFSET + 4001 ))
|
|
SE_BASE=$(( PORT_OFFSET + 8729 ))
|
|
else
|
|
CO_BASE=$(( PORT_OFFSET + 8530 ))
|
|
DB_BASE=$(( PORT_OFFSET + 8530 + NRCOORDINATORS ))
|
|
AG_BASE=$(( PORT_OFFSET + 8530 + NRCOORDINATORS + NRDBSERVERS ))
|
|
SE_BASE=$(( PORT_OFFSET + 8530 + NRCOORDINATORS + NRDBSERVERS + NRAGENTS ))
|
|
fi
|
|
|
|
LOCALHOST="[::1]"
|
|
ANY="[::]"
|
|
|
|
if [ "$TRANSPORT" == "ssl" ]; then
|
|
CURL="curl -skfX"
|
|
PROT=https
|
|
else
|
|
CURL="curl -sfX"
|
|
PROT=http
|
|
fi
|
|
|
|
if [ -z "$JWT_SECRET" ];then
|
|
AUTHENTICATION="--server.authentication false"
|
|
AUTHORIZATION_HEADER=""
|
|
else
|
|
AUTHENTICATION="--server.jwt-secret $JWT_SECRET"
|
|
AUTHORIZATION_HEADER="Authorization: bearer $(jwtgen -a HS256 -s $JWT_SECRET -c 'iss=arangodb' -c 'server_id=setup')"
|
|
fi
|
|
|
|
echo $JWT_SECRET
|
|
|
|
shutdown() {
|
|
PORT=$1
|
|
echo -n "$PORT "
|
|
$CURL DELETE $PROT://$LOCALHOST:$PORT/_admin/shutdown -H "$AUTHORIZATION_HEADER" >/dev/null 2>/dev/null
|
|
}
|
|
|
|
if [ "$SECONDARIES" == "1" ]; then
|
|
echo Shutting down secondaries...
|
|
PORTHISE=$(expr $SE_BASE + $NRDBSERVERS - 1)
|
|
for p in $(seq $SE_BASE $PORTHISE) ; do
|
|
shutdown $PORT
|
|
done
|
|
fi
|
|
|
|
echo -n " Shutting down Coordinators... "
|
|
PORTHICO=$(expr $CO_BASE + $NRCOORDINATORS - 1)
|
|
for p in $(seq $CO_BASE $PORTHICO) ; do
|
|
shutdown $p
|
|
done
|
|
|
|
echo
|
|
echo -n " Shutting down DBServers... "
|
|
PORTHIDB=$(expr $DB_BASE + $NRDBSERVERS - 1)
|
|
for p in $(seq $DB_BASE $PORTHIDB) ; do
|
|
shutdown $p
|
|
done
|
|
|
|
testServerDown() {
|
|
PORT=$1
|
|
while true ; do
|
|
$CURL GET $PROT://$LOCALHOST:$PORT/_api/version >/dev/null 2>/dev/null
|
|
if [ "$?" != "0" ] ; then
|
|
pid=$(ps -eaf|grep data$PORT|grep -v grep|awk '{print $2}')
|
|
if [ -z "$pid" ]; then
|
|
break
|
|
fi
|
|
fi
|
|
sleep 1
|
|
done
|
|
}
|
|
|
|
for p in $(seq $CO_BASE $PORTHICO) ; do
|
|
testServerDown $p
|
|
done
|
|
|
|
for p in $(seq $DB_BASE $PORTHIDB) ; do
|
|
testServerDown $p
|
|
done
|
|
|
|
# Currently the agency does not wait for all servers to shutdown
|
|
# This causes a race condisiton where all servers wait to tell the agency
|
|
# they are shutting down
|
|
|
|
echo
|
|
echo -n " Shutting down agency ... "
|
|
|
|
PORTHIAG=$(expr $AG_BASE + $NRAGENTS - 1)
|
|
for p in $(seq $AG_BASE $PORTHIAG) ; do
|
|
shutdown $p
|
|
done
|
|
|
|
for p in $(seq $AG_BASE $PORTHIAG) ; do
|
|
testServerDown $p
|
|
done
|
|
|
|
echo
|
|
echo Done, your cluster is gone
|
|
|