Start ArangoDB Cluster to Cluster Synchronization on Kubernetes

    Datacenter to datacenter replication is only available in the Enterprise Edition.

    1. Both Kubernetes clusters are equipped with support for Services of type LoadBalancer.
    2. You can create (global) DNS names for configured Services with low propagation times. E.g. use Cloudflare.
    3. 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

    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 to true
    • spec.sync.externalAccess.masterEndpoint to ["https://src-sync.mycompany.com:8629"]

    Step 2: Extract access-package from source ArangoDB cluster

    Run:

    Run:

    1. kubectl get service

    Find the IP address contained in the LoadBalancer column for the following Services:

    • <deployment-name>-ea Use this IP address for the src-db.mycompany.com DNS name.
    • <deployment-name>-sync Use this IP address for the src-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 to true
    • 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:

    1. kubectl get service

    Find the IP address contained in the LoadBalancer column for the following Services:

    • <deployment-name>-ea Use this IP address for the dst-db.mycompany.com DNS name.
    • <deployment-name>-sync Use this IP address for the dst-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:

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