1
0
Fork 0

Store parameters of startLocalCluster.sh (#3593)

Store parameters of startLocalCluster.sh

This should help you to bring the cluster up again when you
continue to work after some time without investigating the
port numbers.

Restore parameters if no arguments are given
This commit is contained in:
Jan Christoph Uhde 2017-11-08 11:26:54 +01:00 committed by Max Neunhöffer
parent e13ebbb128
commit 27460a92e1
3 changed files with 78 additions and 24 deletions

View File

@ -47,7 +47,8 @@ JWT_SECRET=""
PORT_OFFSET=0 PORT_OFFSET=0
SRC_DIR="." SRC_DIR="."
while [[ ${1} ]]; do parse_args(){
while [[ -n "$1" ]]; do
case "${1}" in case "${1}" in
-a|--agency-size) -a|--agency-size)
NRAGENTS=${2} NRAGENTS=${2}
@ -125,3 +126,4 @@ while [[ ${1} ]]; do
return 1 return 1
fi fi
done done
}

View File

@ -1,21 +1,37 @@
#!/bin/bash #!/bin/bash
params=("$@")
. `dirname $0`/cluster-run-common.sh lib="$(dirname $(readlink -f ${BASH_SOURCE[0]}))/cluster-run-common.sh"
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 Agents: $NRAGENTS
echo Number of DBServers: $NRDBSERVERS echo Number of DBServers: $NRDBSERVERS
echo Number of Coordinators: $NRCOORDINATORS echo Number of Coordinators: $NRCOORDINATORS
if [ -z "$ONGOING_PORTS" ] ; then if [ -z "$ONGOING_PORTS" ] ; then
CO_BASE=$(( $PORT_OFFSET + 8530 )) CO_BASE=$(( PORT_OFFSET + 8530 ))
DB_BASE=$(( $PORT_OFFSET + 8629 )) DB_BASE=$(( PORT_OFFSET + 8629 ))
AG_BASE=$(( $PORT_OFFSET + 4001 )) AG_BASE=$(( PORT_OFFSET + 4001 ))
SE_BASE=$(( $PORT_OFFSET + 8729 )) SE_BASE=$(( PORT_OFFSET + 8729 ))
else else
CO_BASE=$(( $PORT_OFFSET + 8530 )) CO_BASE=$(( PORT_OFFSET + 8530 ))
DB_BASE=$(( $PORT_OFFSET + 8530 + $NRCOORDINATORS )) DB_BASE=$(( PORT_OFFSET + 8530 + NRCOORDINATORS ))
AG_BASE=$(( $PORT_OFFSET + 8530 + $NRCOORDINATORS + $NRDBSERVERS )) AG_BASE=$(( PORT_OFFSET + 8530 + NRCOORDINATORS + NRDBSERVERS ))
SE_BASE=$(( $PORT_OFFSET + 8530 + $NRCOORDINATORS + $NRDBSERVERS + $NRAGENTS )) SE_BASE=$(( PORT_OFFSET + 8530 + NRCOORDINATORS + NRDBSERVERS + NRAGENTS ))
fi fi
LOCALHOST="[::1]" LOCALHOST="[::1]"
@ -72,7 +88,7 @@ testServerDown() {
$CURL GET $PROT://$LOCALHOST:$PORT/_api/version >/dev/null 2>/dev/null $CURL GET $PROT://$LOCALHOST:$PORT/_api/version >/dev/null 2>/dev/null
if [ "$?" != "0" ] ; then if [ "$?" != "0" ] ; then
pid=$(ps -eaf|grep data$PORT|grep -v grep|awk '{print $2}') pid=$(ps -eaf|grep data$PORT|grep -v grep|awk '{print $2}')
if [ -z $pid ]; then if [ -z "$pid" ]; then
break break
fi fi
fi fi

View File

@ -1,6 +1,44 @@
#!/bin/bash #!/bin/bash
params=("$@")
. `dirname $0`/cluster-run-common.sh rm -rf cluster
if [ -d cluster-init ];then
echo "== creating cluster directory from existing cluster-init directory"
cp -a cluster-init cluster
else
echo "== creating fresh directory"
mkdir -p cluster || { echo "failed to create cluster directory"; exit 1; }
#if we want to restart we should probably store the parameters line wise
fi
lib="$(dirname $(readlink -f ${BASH_SOURCE[0]}))/cluster-run-common.sh"
if [[ -f "$lib" ]]; then
. "$lib"
else
echo "could not source $lib"
exit 1
fi
if [[ -f cluster/startup_parameters ]];then
string="$(< cluster/startup_parameters)"
if [[ -z "${params[@]}" ]]; then
params=( $string )
else
if ! [[ "$*" == "$string" ]]; then
echo "stored and given params do not match:"
echo "given: ${params[@]}"
echo "stored: $string"
fi
fi
else
#store parmeters
if [[ -n "${params[@]}" ]]; then
echo "${params[@]}" > cluster/startup_parameters
fi
fi
parse_args "${params[@]}"
if [ "$POOLSZ" == "" ] ; then if [ "$POOLSZ" == "" ] ; then
POOLSZ=$NRAGENTS POOLSZ=$NRAGENTS
@ -13,14 +51,18 @@ else
fi fi
DEFAULT_REPLICATION="" DEFAULT_REPLICATION=""
if [[ $NRAGENTS -le 0 ]]; then
echo "you need as least one agent currently you have $NRAGENTS"
exit 1
fi
printf "Starting agency ... \n" printf "== Starting agency ... \n"
printf " # agents: %s," "$NRAGENTS" printf " # agents: %s," "$NRAGENTS"
printf " # db servers: %s," "$NRDBSERVERS" printf " # db servers: %s," "$NRDBSERVERS"
printf " # coordinators: %s," "$NRCOORDINATORS" printf " # coordinators: %s," "$NRCOORDINATORS"
printf " transport: %s\n" "$TRANSPORT" printf " transport: %s\n" "$TRANSPORT"
if [[ $(( $NRAGENTS % 2 )) == 0 ]]; then if (( $NRAGENTS % 2 == 0)) ; then
echo "**ERROR: Number of agents must be odd! Bailing out." echo "**ERROR: Number of agents must be odd! Bailing out."
exit 1 exit 1
fi fi
@ -43,12 +85,6 @@ NATH=$(( $NRDBSERVERS + $NRCOORDINATORS + $NRAGENTS ))
ENDPOINT=[::] ENDPOINT=[::]
ADDRESS=${ADDRESS:-[::1]} ADDRESS=${ADDRESS:-[::1]}
rm -rf cluster
if [ -d cluster-init ];then
cp -a cluster-init cluster
fi
mkdir -p cluster
if [ -z "$JWT_SECRET" ];then if [ -z "$JWT_SECRET" ];then
AUTHENTICATION="--server.authentication false" AUTHENTICATION="--server.authentication false"
AUTHORIZATION_HEADER="" AUTHORIZATION_HEADER=""
@ -80,7 +116,7 @@ else
CO_ARANGOD=$ARANGOD CO_ARANGOD=$ARANGOD
fi fi
echo Starting agency ... echo == Starting agency ...
for aid in `seq 0 $(( $NRAGENTS - 1 ))`; do for aid in `seq 0 $(( $NRAGENTS - 1 ))`; do
port=$(( $AG_BASE + $aid )) port=$(( $AG_BASE + $aid ))
AGENCY_ENDPOINTS+="--cluster.agency-endpoint $TRANSPORT://$ADDRESS:$port " AGENCY_ENDPOINTS+="--cluster.agency-endpoint $TRANSPORT://$ADDRESS:$port "
@ -131,7 +167,7 @@ start() {
TYPE=$1 TYPE=$1
PORT=$2 PORT=$2
mkdir cluster/data$PORT cluster/apps$PORT mkdir cluster/data$PORT cluster/apps$PORT
echo Starting $TYPE on port $PORT echo == Starting $TYPE on port $PORT
$CMD \ $CMD \
-c none \ -c none \
--database.directory cluster/data$PORT \ --database.directory cluster/data$PORT \
@ -189,7 +225,7 @@ for p in `seq $CO_BASE $PORTTOPCO` ; do
testServer $p testServer $p
done done
echo Done, your cluster is ready at echo == Done, your cluster is ready at
for p in `seq $CO_BASE $PORTTOPCO` ; do for p in `seq $CO_BASE $PORTTOPCO` ; do
echo " ${BUILD}/bin/arangosh --server.endpoint $TRANSPORT://[::1]:$p" echo " ${BUILD}/bin/arangosh --server.endpoint $TRANSPORT://[::1]:$p"
done done