77 lines
4.0 KiB
Markdown
77 lines
4.0 KiB
Markdown
# Aerospike
|
|
|
|
Aerospike is an open source distributed database. Aerospike is built on a "shared nothing" architecture designed to reliably store terabytes of data with automatic fail-over, replication and cross data-center synchronization.
|
|
|
|
%%LOGO%%
|
|
|
|
Documentation for Aerospike is available at [http://aerospike.com/docs](https://www.aerospike.com/docs).
|
|
|
|
# Using this Image
|
|
|
|
The following will run `asd` with all the exposed ports forwarded to the host machine.
|
|
|
|
```console
|
|
$ docker run -d --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 aerospike/aerospike-server
|
|
```
|
|
|
|
**NOTE** Although this is the simplest method to getting Aerospike up and running, but it is not the preferred method. To properly run the container, please specify a **custom configuration** with the **access-address** defined.
|
|
|
|
## Custom Aerospike Configuration
|
|
|
|
By default, `asd` will use the configuration file at `/etc/aerospike/aerospike.conf`, which is added to the directory by the Dockerfile. To provide a custom configuration, you should first mount a directory containing the custom aerospike.conf file using the `-v` option for `docker`:
|
|
|
|
-v <DIRECTORY>:/opt/aerospike/etc
|
|
|
|
Where `<DIRECTORY>` is the path to a directory containing your custom aerospike.conf file. Next, you will want to tell `asd` to use the configuration file that was just mounted by using the `--config-file` option for `aerospike/aerospike-server`:
|
|
|
|
--config-file /opt/aerospike/etc/aerospike.conf
|
|
|
|
This will tell `asd` to use the config file at `/opt/aerospike/etc/aerospike.conf`, which is mapped from `<DIRECTORY>/aerospike.conf`.
|
|
|
|
A full example:
|
|
|
|
```console
|
|
$ docker run -d -v <DIRECTORY>:/opt/aerospike/etc --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 aerospike/aerospike-server asd --foreground --config-file /opt/aerospike/etc/aerospike.conf
|
|
```
|
|
|
|
### access-address Configuration
|
|
|
|
In order for Aerospike to properly broadcast its address to the cluster or applications, the **access-address** needs to be set in the configuration file. If it is not set, then the IP address within the container will be used, which is not accessible to other nodes.
|
|
|
|
To specify **access-address** in aerospike.conf:
|
|
|
|
network {
|
|
service {
|
|
address any # Listening IP Address
|
|
port 3000 # Listening Port
|
|
access-address 192.168.1.100 # IP Address to be used by applications and other nodes in the cluster.
|
|
}
|
|
...
|
|
|
|
## Persistent Data Directory
|
|
|
|
With Docker, the files within the container are not persisted. To persist the data, you will want to mount a directory from the host to the guest's `/opt/aerospike/data` using the `-v` option:
|
|
|
|
-v <DIRECTORY>:/opt/aerospike/data
|
|
|
|
Where `<DIRECTORY>` is the path to a directory containing your data files.
|
|
|
|
A full example:
|
|
|
|
```console
|
|
$ docker run -d -v <DIRECTORY>:/opt/aerospike/data --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 aerospike/aerospike-server
|
|
```
|
|
|
|
## Clustering
|
|
|
|
Aerospike recommends using Mesh Clustering. Mesh uses TCP point to point connections for heartbeats. Each node in the cluster maintains a heartbeat connection to all other nodes. Please see [http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat](http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat)
|
|
|
|
### Mesh Clustering
|
|
|
|
Mesh networking requires setting up links between each node in the cluster. This can be achieved in two ways:
|
|
|
|
1. Define a configuration for each node in the cluster, as defined in [Network Heartbeat Configuration](http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat).
|
|
2. Use `asinfo` to send the `tip` command, to make the node aware of another node, as defined in [tip command in asinfo](http://www.aerospike.com/docs/tools/asinfo/#tip).
|
|
|
|
For more details and examples of clustering Aerospike in Docker, please see [Deploying Aerospike clusters with Docker](http://www.aerospike.com/docs/deploy_guides/docker/).
|