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 totrue
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.