Start ArangoDB Cluster to Cluster Synchronization on Kubernetes
Datacenter to datacenter replication is only available in the Enterprise Edition.
- Both Kubernetes clusters are equipped with support for
Services
of typeLoadBalancer
. - You can create (global) DNS names for configured
Services
with low propagation times. E.g. use Cloudflare. - You have 4 DNS names available:
- One for the database in the source ArangoDB cluster. E.g.
src-db.mycompany.com
- One for the ArangoDB syncmasters in the source ArangoDB cluster. E.g.
src-sync.mycompany.com
- One for the database in the destination ArangoDB cluster. E.g.
dst-db.mycompany.com
- One for the ArangoDB syncmasters in the destination ArangoDB cluster. E.g.
dst-sync.mycompany.com
- One for the database in the source ArangoDB cluster. E.g.
Step 1: Enable Datacenter Replication Support on source ArangoDB cluster
Set your current Kubernetes context to the Kubernetes source cluster.
Edit the ArangoDeployment
of the source ArangoDB clusters.
Set:
spec.tls.altNames
to["src-db.mycompany.com"]
(can include more names / IP addresses)spec.sync.enabled
totrue
spec.sync.externalAccess.masterEndpoint
to["https://src-sync.mycompany.com:8629"]
Step 2: Extract access-package from source ArangoDB cluster
Run:
Run:
kubectl get service
Find the IP address contained in the LoadBalancer
column for the following Services
:
<deployment-name>-ea
Use this IP address for thesrc-db.mycompany.com
DNS name.<deployment-name>-sync
Use this IP address for thesrc-sync.mycompany.com
DNS name.
Step 4: Enable Datacenter Replication Support on destination ArangoDB cluster
Set your current Kubernetes context to the Kubernetes destination cluster.
Edit the ArangoDeployment
of the source ArangoDB clusters.
Set:
spec.tls.altNames
to["dst-db.mycompany.com"]
(can include more names / IP addresses)spec.sync.enabled
totrue
spec.sync.externalAccess.masterEndpoint
to
Step 5: Import access package in destination cluster
Run:
Note: This imports two Secrets
, containing TLS information about the source cluster, into the destination cluster
Run:
kubectl get service
Find the IP address contained in the LoadBalancer
column for the following Services
:
<deployment-name>-ea
Use this IP address for thedst-db.mycompany.com
DNS name.<deployment-name>-sync
Use this IP address for thedst-sync.mycompany.com
DNS name.
Step 7: Create an ArangoDeploymentReplication
resource
Create a yaml file (e.g. called src-to-dst-repl.yaml
) with the following content:
Step 8: Wait for DNS names to propagate
Wait until the DNS names configured in step 3 and 6 resolve to their configured IP addresses.
Depending on your DNS provides this can take a few minutes up to 24 hours.
Run:
kubectl apply -f src-to-dst-repl.yaml
Replication from the source cluster to the destination cluster will now be configured.
Check the status of the replication by inspecting the status of the ArangoDeploymentReplication
resource using:
As soon as the replication is configured, the Add collection
button in the Collections
page of the web UI (of the destination cluster) will be grayed out.