mirror of https://gitee.com/bigwinds/arangodb
123 lines
3.1 KiB
Bash
Executable File
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
|
|
|