Start ArangoDB Cluster to Cluster Synchronization on Kubernetes
Datacenter to datacenter replication is only available in theEnterprise Edition,also available as .
- Both Kubernetes clusters are equipped with support for of type
LoadBalancer
. - 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[";]
Step 2: Extract access-package from source ArangoDB cluster
Run:
Run:
kubectl get service
<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.The process for configuring DNS names is specific to each DNS provider.
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
- to
["https://dst-sync.mycompany.com:8629"]
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
<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.The process for configuring DNS names is specific to each DNS provider.
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 configuredIP 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: