All Projects → arangodb-helper → arangodb

arangodb-helper / arangodb

Licence: Apache-2.0, Unknown licenses found Licenses found Apache-2.0 LICENSE Unknown LICENSE.BOILERPLATE
ArangoDB Starter - starts ArangoDB clusters & single servers with ease.

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to arangodb

Python Arango
Python Driver for ArangoDB
Stars: ✭ 349 (+353.25%)
Mutual labels:  arangodb
Orango
ArangoDB Object Modeling for Node.js, Foxx and Modern Web Browsers
Stars: ✭ 103 (+33.77%)
Mutual labels:  arangodb
Pyarango
Python Driver for ArangoDB with built-in validation
Stars: ✭ 183 (+137.66%)
Mutual labels:  arangodb
Arangodb View
🥑 fast, simple, easy, 'reduced to the max' alternative webinterface / interface for the web / frontend for ArangoDB
Stars: ✭ 18 (-76.62%)
Mutual labels:  arangodb
Arangoclient.net
ArangoDB .NET Client with LINQ support
Stars: ✭ 94 (+22.08%)
Mutual labels:  arangodb
Arangodb
🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
Stars: ✭ 11,880 (+15328.57%)
Mutual labels:  arangodb
Recallgraph
A versioning data store for time-variant graph data.
Stars: ✭ 277 (+259.74%)
Mutual labels:  arangodb
docs
Source code of the ArangoDB online documentation
Stars: ✭ 18 (-76.62%)
Mutual labels:  arangodb
Cruddl
Create a GraphQL API for your database, using the GraphQL SDL to model your schema.
Stars: ✭ 98 (+27.27%)
Mutual labels:  arangodb
Arangodb Php
PHP ODM for ArangoDB
Stars: ✭ 178 (+131.17%)
Mutual labels:  arangodb
Pims
An ORM for document-oriented database systems, written in and for TypeScript.
Stars: ✭ 9 (-88.31%)
Mutual labels:  arangodb
Arangochair
🥑 arangochair is a Node.js module that adds changefeed capability to ArangoDB and make it realtime push ready
Stars: ✭ 85 (+10.39%)
Mutual labels:  arangodb
Kube Arangodb
ArangoDB Kubernetes Operator - Start ArangoDB on Kubernetes in 5min
Stars: ✭ 150 (+94.81%)
Mutual labels:  arangodb
Arangojs
The official ArangoDB JavaScript driver.
Stars: ✭ 503 (+553.25%)
Mutual labels:  arangodb
arangors
Easy to use rust driver for arangoDB
Stars: ✭ 120 (+55.84%)
Mutual labels:  arangodb
Velocypack
A fast and compact format for serialization and storage
Stars: ✭ 347 (+350.65%)
Mutual labels:  arangodb
Arango
Golang driver for ArangoDB
Stars: ✭ 125 (+62.34%)
Mutual labels:  arangodb
PasteServer
PasteServer to upload text or code
Stars: ✭ 29 (-62.34%)
Mutual labels:  arangodb
java-velocypack
No description or website provided.
Stars: ✭ 17 (-77.92%)
Mutual labels:  arangodb
Arangodb Java Driver
The official ArangoDB Java driver.
Stars: ✭ 174 (+125.97%)
Mutual labels:  arangodb

Starting an ArangoDB cluster or database the easy way

Docker Pulls GoDoc

Downloading Releases

You can download precompiled arangodb binaries via the github releases page.

Note: arangodb is also included in all current distributions of ArangoDB.

Building

If you want to compile arangodb yourselves just do:

go get -u github.com/arangodb-helper/arangodb

This will result in a binary at $GOPATH/bin/arangodb.

For more advanced build options, clone this repository and do:

make local

and the executable is in ./bin named after the current OS & architecture (e.g. linux/amd64/arangodb). You can copy the binary anywhere in your PATH. A link to the binary for the local OS & architecture is made to ./arangodb. This program will run on Linux, OSX or Windows.

Note: The standard build uses a docker container to run the build. If docker is not available make local runs the go compiler directly and places the binary directly in the project directory. In this case you need to install the golang package on your system (version 1.7 or higher).

Building docker image

If you want to create the arangodb/arangodb-starter docker container yourselves you can build it using:

make docker

Starting a cluster

Install ArangoDB in the usual way as binary package. Then:

On host A:

arangodb

This will use port 8528 to wait for colleagues (3 are needed for a resilient agency). On host B: (can be the same as A):

arangodb --starter.join A

This will contact A on port 8528 and register. On host C: (can be same as A or B):

arangodb --starter.join A

This will contact A on port 8528 and register.

From the moment on when 3 have joined, each will fire up an Agent, a Coordinator and a DB-Server and the cluster is up. Ports are shown on the console, the starter uses the next few ports above the starter port. That is, if one uses port 8528 for the starter, the Coordinator will use 8529 (=8528+1), the DB-Server 8530 (=8528+2), and the Agent 8531 (=8528+3). See below under --starter.port for how to change the starter default port.

Additional servers can be added in the same way.

Using the config file to provide CLI options

Starter looks for arangodb-starter.conf in working directory by default. You can specify the config file path using --configuration (-c) CLI option:

arangodb --configuration=/etc/arangodb-starter.conf

.conf files for ArangoDB Starter are in a simple key-value pair format. Each option is specified on a separate line in the form:

key = value

It may look like this:

starter.id = my-starter-1
starter.endpoint = http://127.0.0.1:8528

Alternatively, a header section can be specified and options pertaining to that section can be specified in a shorter form:

[starter]
id = my-starter-1
endpoint = http://127.0.0.1:8528
sync = true

[sync]
start-master = true
start-worker = true
monitoring.token = 8cd07f3a5ff98f2a78cfc366c13fb123eb8d29c1ca37c79df190425d5b9e424d

So you see, a command line option ‑‑section.param value can be easily translated to an option in a configuration file:

[section]
param = value

You also can use the config file to provide passthrough options:

starter.mode = cluster

[args]
all.default-language = es_419
dbservers.rocksdb.enable-statistics = true

More usage info

See the ArangoDB Starter Tutorial.

HTTP API

See HTTP API.

Future plans

  • Allow starter with Agent to be removed from cluster
  • Enable cluster to be updated in a controlled manner.

Technical explanation as to what happens

The procedure is essentially that the first instance of arangodb (aka the "master") offers an HTTP service on port 8528 for peers to register. Every instance that registers becomes a slave. As soon as there are cluster-agency-size peers, every instance of arangodb starts up an Agent (if it is one of the first 3), a DB-Server, and a Coordinator. The necessary command line options to link the arangod instances up are generated automatically. The cluster bootstraps and can be used.

Whenever an arangodb instance shuts down, it shuts down the arangod instances under its control as well. When the arangodb is started again, it recalls the old configuration from the setup.json file in its data directory, starts up its arangod instances again (with their data) and they join the cluster.

All network addresses are discovered from the HTTP communication between the arangodb instances. The ports used 8529(/8539/8549) for the Coordinator, 8530(/8540/8550) for the DB-Server, 8531(/8541/8551) for the Agent) need to be free. If more than one instance of an arangodb are started on the same machine, the second will increase all these port numbers by 10 and so on.

In case the executable is running in Docker, it will use the Docker API to retrieve the port number of the Docker host to which the 8528 port number is mapped. The containers started by the executable will all map the port they use to the exact same host port.

Feedback

Feedback is very welcome in the form of github issues, pull requests or an email to [email protected].

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].