Create a Geo-Replicated Conflict-free Replicated Database (CRDB)
- Two or more Redis Enterprise Pack clusters running version 5.0, each with minimum of two nodes
- Networking and cluster FQDN name resolution between all clusters
- Confirm that a network time service listener (e.g. ntpd) is configured and running on each node in all clusters. Please see “Network Time Service” for more information.
Creating a CRDB
CRDBs span multiple RP clusters. Overview of the steps to create a CRDB:
- Create a service account on each cluster as an admin
- Confirm network is setup
- Connect to one of your clusters and configure a new CRDB
- Test writing to one cluster
- Test reading from a different cluster
Create a Service Account
A local account with the Admin role is highly recommended on each cluster that will host a CRDB. While you could use a user account, it is recommended to have a separate admin account (known as a “service account”) that will only used by the clusters to connect between clusters when orchestration is necessary. To do this, go to settings -> team and click the plus icon on the lower left to add an account.
This service account will be used when the CRDB is created, but also on an ongoing basis by the clusters to help manage the CRDB.
Confirm network is setup
The CRDB creation process assumes the required secured network configurations are in place. If you have not already done so, please see Network Configurations. If the configurations are set up, let’s confirm the connectivity we need. First, we need to check that the necessary ports are open from each cluster node to the proxy and admin ports on the other clusters that are to host the CRDB. This test should be done from every node in each Participating Cluster to each node in the other Participating Clusters.
$ telnet <target FQDN> 8080
Create a CRDB
Direct your browser to the web UI of one of the RP clusters that will host the CRDB. Under the databases tab, choose the Redis database with Deployment type set to CRDB.
On the create database page, click the show advanced option link. There are some key differences in the creation process between CRDBs and standard Redis database creation.
- Intra-cluster Replication is required for each Participating Cluster to be included in a CRDB. This is due to how the intercluster replication process, called syncer, always reads off slaves and not masters. Therefore slaves must exist. In the interface, you will see that you cannot change this option and if not possible, the creation will error.
- The eviction policy can only be set to noeviction for CRDBs.
- Participating Clusters section is where you define the clusters that will host member CRDBs and the admin user account to connect to each cluster.
A CRDB is a global database made up of separate databases spanning multiple clusters, when creating a new CRDB you must configure which clusters are to host members of the CRDB. On the Participating Clusters list, add two or more clusters using the + icon. For each cluster, use the service account and password created earlier for the admin account. Make sure to use port 8080 for this configuration.
Then click Activate to create your new Conflict-Free Replicated Database.
Once activated, the Redis Enterprise Pack cluster will authenticate and communicate with each of the listed Participating Clusters on your behalf via Rest API and the service account. RP will create a member database on each cluster, join it to the CRDB, and commence replication. If you view any Participating Cluster individually, you should see the new database created as a member of the CRDB.
If you would like to a smoke test of connectivity and replication, see the connecting section of the CRDB Quick Start.