Using the ArangoDB Starter
This section describes how to start a Cluster using the tool Starter (the arangodb binary program).
As a precondition you should create a secret to activate authentication. The Starter provides a handy functionality to generate such a file:
arangodb create jwt-secret --secret=arangodb.secret
Set appropriate privilege on the generated secret file, e.g. on Linux:
chmod 400 arangodb.secret
Local Tests
If you only want a local test Cluster, you can run a single Starter with the
--starter.local
argument. It will start a 3 “machine” Cluster on your local PC:
arangodb --starter.local --starter.data-dir=./localdata --auth.jwt-secret=/etc/arangodb.secret
Please adapt the path to your secret file accordingly.
Note: a local Cluster is intended only for test purposes since a failure of a single PC will bring down the entire Cluster.
Multiple Machines
If you want to start a Cluster using the Starter, you need to copy the secret file to every machine and start the Cluster using the following command:
arangodb --server.storage-engine=rocksdb --auth.jwt-secret=/etc/arangodb.secret --starter.data-dir=./data --starter.join A,B,C
Please adapt the path to your secret file accordingly.
Run the above command on machine A, B & C.
Once all the processes started by the Starter are up and running, and joined the Cluster (this may take a while depending on your system), the Starter will inform you where to connect the Cluster from a Browser, shell or your program.
For a full list of options of the Starter please refer to this section.
Using the ArangoDB Starter in Docker
The Starter can also be used to launch Clusters based on Docker containers:
export IP=<IP of docker host>
docker volume create arangodb
docker run -it --name=adb --rm -p 8528:8528 \
-v arangodb:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
arangodb/arangodb-starter \
--starter.address=$IP \
--starter.join=A,B,C
Run the above command on machine A, B & C.
If you use an ArangoDB version of 3.4 or above and use the Enterprise
Edition Docker image, you have to set the license key in an environment
variable by adding this option to the above docker
command:
-e ARANGO_LICENSE_KEY=<thekey>
You can get a free evaluation license key by visiting:
www.arangodb.com/download-arangodb-enterprise/
Then replace <thekey>
above with the actual license key. The start
will then hand on the license key to the Docker containers it launches
for ArangoDB.
TLS verified Docker services
Oftentimes, one needs to harden Docker services using client certificate and TLS verification. The Docker API allows subsequently only certified access. As the ArangoDB starter starts the ArangoDB cluster instances using this Docker API, it is mandatory that the ArangoDB starter is deployed with the proper certificates handed to it, so that the above command is modified as follows:
export IP=<IP of docker host>
export DOCKER_CERT_PATH=/path/to/certificate
docker volume create arangodb
docker run -it --name=adb --rm -p 8528:8528 \
-v arangodb:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $DOCKER_CERT_PATH:$DOCKER_CERT_PATH \
-e DOCKER_TLS_VERIFY=1 \
-e DOCKER_CERT_PATH=$DOCKER_CERT_PATH \
arangodb/arangodb-starter \
--starter.address=$IP \
--starter.join=A,B,C
Note that the environment variables DOCKER_TLS_VERIFY
and DOCKER_CERT_PATH
as well as the additional mountpoint containing the certificate have been added above.
directory. The assignment of DOCKER_CERT_PATH
is optional, in which case it
is mandatory that the certificates are stored in $HOME/.docker
. So
the command would then be as follows
export IP=<IP of docker host>
docker volume create arangodb
docker run -it --name=adb --rm -p 8528:8528 \
-v arangodb:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /path/to/cert:/root/.docker \
-e DOCKER_TLS_VERIFY=1 \
arangodb/arangodb-starter \
--starter.address=$IP \
--starter.join=A,B,C
Under the Hood
The first arangodb
you ran will become the master of your Starter
setup, the other arangodb
instances will become the slaves of your Starter
setup. Please do not confuse the terms master and slave above with the Leader/Follower
(“master/slave”) technology of ArangoDB. The terms above refers to the Starter setup.
The Starter master determines which ArangoDB server processes to launch on which Starter slave, and how they should communicate.
It will then launch the server processes and monitor them. Once it has detected that the setup is complete you will get the prompt.
The Starter master will save the setup for subsequent starts.