1
0
Fork 0
arangodb/scripts/startLocalDockerCluster.sh

123 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
DOCKERIMAGE=arangodb/arangodb:3.0.0-p4
if [ -z "$XTERM" ] ; then
XTERM=x-terminal-emulator
fi
if [ -z "$XTERMOPTIONS" ] ; then
XTERMOPTIONS="--geometry=80x43"
fi
NRDBSERVERS=$1
if [ "$NRDBSERVERS" == "" ] ; then
NRDBSERVERS=2
fi
echo Number of DBServers: $NRDBSERVERS
NRCOORDINATORS=$2
if [ "$NRCOORDINATORS" == "" ] ; then
NRCOORDINATORS=1
fi
echo Number of Coordinators: $NRCOORDINATORS
if [ ! -z "$3" ] ; then
if [ "$3" == "C" ] ; then
COORDINATORCONSOLE=1
echo Starting one coordinator in terminal with --console
fi
fi
SECONDARIES="$4"
echo Starting agency...
docker run -d --net=host -e ARANGO_NO_AUTH=1 --name=agency \
${DOCKERIMAGE} \
--agency.endpoint tcp://0.0.0.0:4001 \
--agency.id 0 \
--agency.size 1 \
--agency.wait-for-sync false \
--agency.supervision false \
--agency.supervision-frequency 5 \
--server.endpoint tcp://0.0.0.0:4001 \
--server.statistics false
sleep 1
start() {
if [ "$1" == "dbserver" ]; then
ROLE="DBSERVER"
elif [ "$1" == "coordinator" ]; then
ROLE="COORDINATOR"
fi
TYPE=$1
PORT=$2
echo Starting $TYPE on port $PORT
docker run -d --net=host -e ARANGO_NO_AUTH=1 --name="$TYPE_$PORT" \
${DOCKERIMAGE} \
--cluster.agency-endpoint tcp://127.0.0.1:4001 \
--cluster.my-address tcp://127.0.0.1:$PORT \
--server.endpoint tcp://127.0.0.1:$PORT \
--cluster.my-role $ROLE \
--log.level trace \
--server.statistics false
}
startTerminal() {
if [ "$1" == "dbserver" ]; then
ROLE="DBSERVER"
elif [ "$1" == "coordinator" ]; then
ROLE="COORDINATOR"
fi
TYPE=$1
PORT=$2
echo Starting $TYPE on port $PORT
$XTERM $XTERMOPTIONS -e docker run -it --net=host -e ARANGO_NO_AUTH=1 \
--name="$TYPE_$PORT" \
${DOCKERIMAGE} \
--cluster.agency-endpoint tcp://127.0.0.1:4001 \
--cluster.my-address tcp://127.0.0.1:$PORT \
--server.endpoint tcp://127.0.0.1:$PORT \
--cluster.my-role $ROLE \
--server.statistics false \
--console &
}
PORTTOPDB=`expr 8629 + $NRDBSERVERS - 1`
for p in `seq 8629 $PORTTOPDB` ; do
start dbserver $p
done
PORTTOPCO=`expr 8530 + $NRCOORDINATORS - 1`
for p in `seq 8530 $PORTTOPCO` ; do
if [ $p == "8530" -a ! -z "$COORDINATORCONSOLE" ] ; then
startTerminal coordinator $p
else
start coordinator $p
fi
done
echo Waiting for cluster to come up...
testServer() {
PORT=$1
while true ; do
curl -s -f -X GET "http://127.0.0.1:$PORT/_api/version" > /dev/null 2>&1
if [ "$?" != "0" ] ; then
echo Server on port $PORT does not answer yet.
else
echo Server on port $PORT is ready for business.
break
fi
sleep 1
done
}
for p in `seq 8629 $PORTTOPDB` ; do
testServer $p
done
for p in `seq 8530 $PORTTOPCO` ; do
testServer $p
done
echo Done, your cluster is ready at
for p in `seq 8530 $PORTTOPCO` ; do
echo " build/bin/arangosh --server.endpoint tcp://127.0.0.1:$p"
done