Installation steps

Gluesync SQL to NoSQL for Aerospike

Prerequisites

To have Gluesync working on your Aerospike instance you will need to have:

  • valid user credentials with permission to write to the target database

Basic configuration example

This module can be customized by using a configuration file, in JSON format. The file name to use must be specified as a parameter when launching the app, with the -f or --file tokens. The file should be composed of the union of the common configuration file (see here Installation steps) and source/destination specific configuration:

{
  ...
  "aerospike": {
    "trustStorePath": "/path/to/certs/dir/cert.p12",
    "trustStorePassword": "change_me",
    "keyStorePath": "/path/to/certs/dir/cert.jks",
    "keyStorePassword": "change_me",
    "timeoutSeconds": 60,
    "indexReplicaCount": 0,
    "disableAuth": false,
    "additionalHosts": ["IP_ADDRESS_HOST#1", "IP_ADDRESS_HOST#2", ...]
  },
}

Aerospike-specific configurations are listed under the aerospike property:

  • timeoutSeconds (optional): number of seconds to set as timeout for operations involving communication with Aerospike. The default value is 60 seconds.;

  • disableAuth (optional), defaults to false: you can set that parameter to true to disable the authentication mechanism (as per the Aerospike docs) when you’re connecting to a development instance of Aerospike.

  • additionalHosts (optional), defaults to null: tells Aerospike target connector to make use of a cluster map of additional hosts available at the bootstrap time by feeding those to the Aerospike client SDK. If you don’t provide additional hosts at the bootstrap time they will be then retrieved anyway when the connection to targetHost is established. This comes to help in case the targetHost is down at the bootstrap time;

  • enableTls (optional): defaults to false, enable or disable usage of TLS encryption;

  • tlsName (optional): defaults to null, TLS certificate name used for secure connections. Set null or remove the key entry if TLS is disabled;

  • trustStorePath (optional): the path to the trustStore certificate;

  • trustStorePassword (optional): if a certificate path is specified, then this value is passed as a trustStore password;

  • keyStorePath (optional): the path to the keystore certificate;

  • keyStorePassword (optional): if a certificate path is specified, then this value is passed as a keystore password;

Aerospike bin names and entity names

Aerospike identifies the bin object with a key name that uniquely identifies an object stored in the database.

Since each bin key has a maximum length of 14 characters Gluesync will throw an exception in case you accidentally have placed a longer entity name inside the sourceEntities list.

Generating valid TLS certificates for your Aerospike database

To create certificates for connection to the Aerospike Server you need:

  • CA Certificate: example.ca.crt

  • Client Certificate: example.client.crt

  • Client Private Key: example.client.key

First, install the CA certificate into a new Java TrustStore with the following command:

keytool -importcert -storetype jks -alias example.ca -keystore example.ca.jks -file example.ca.crt -storepass changeit

Then use the following command to create a single chain certificate file named example.client.chain.crt:

cat example.ca.crt example.client.crt example.client.key > example.client.chain.crt

Finally, create a keystore in PKCS #12 format to pass to Gluesync with the following command:

openssl pkcs12 -export -in example.client.chain.crt -out example.client.chain.p12 -password pass:"changeit" -name example.client -noiter -nomaciter

In the Aerospike-specific configuration section it will now be possible to use certificates as follows:

  "aerospike": {
    ...
    "trustStore": "/opt/app/config/example.ca.jks",
    "keyStorePath": "/opt/app/config/example.client.chain.p12",
    "keyStorePassword": "changeit",
    "enableTls": true,
    "tlsName": "TLS_NAME",
    ...
  }

For further details, please refer to the official Aerospike documentation at this link: aerospike.com/docs/server/operations/configure/network/tls/mtls_java#java-application

Looking for data modeling features or other options?

For more detailed configuration options, including the ability to perform data modeling, please have a look at the dedicated Data modeling section when sourcing from an RDBMS.