Skip to content

Commit

Permalink
RC - Active-Active GA (#2105)
Browse files Browse the repository at this point in the history
* DOC-1128: RC - Doc Active-Active workflow changes (#1763)

* Initial draft

* Tpyo fix

* Another tpyo

* AA overview DOC-1198 (#1813)

* Small typo fix

* Updated explanation on CIDR ranges

* DOC-1367: RC - Clarify Active-Active CIDR block rules for VPC Peering (#1915)

* Initial draft

* Editorial feedback.

* Updating broken link

* Editorial feedback

Co-authored-by: kaitlynmichael <kaitlyn.michael@redis.com>
Co-authored-by: Kaitlyn Michael <76962844+kaitlynmichael@users.noreply.github.com>
Co-authored-by: Jonathan Salomon <56251201+joniredis@users.noreply.github.com>
  • Loading branch information
4 people committed Aug 30, 2022
1 parent f5f3548 commit 2481aac
Show file tree
Hide file tree
Showing 10 changed files with 131 additions and 0 deletions.
39 changes: 39 additions & 0 deletions content/rc/databases/active-active-redis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
Title: Active-Active Redis
description: Overview of the Active-Active feature for Redis Cloud.
weight: 05
alwaysopen: false
categories: ["RC"]
aliases: [
"/rc/subscriptions/active-active-redis/",
"/rc/subscriptions/active-active-redis.md"
]

---

Active-Active databases store data across multiple regions and availability zones. This improves scalability, performance, and availability, especially when compared to standalone databases.
To create Active-Active databases, you need a Flexible (or Annual) [Redis Enterprise Cloud]({{<relref "/rc/subscriptions/">}}) subscription that enables Active-Active Redis and defines the regions for each copy of your databases. This is defined when you [create a new subscription]({{<relref "rc/subscriptions/create-flexible-subscription">}}).

Active-Active databases are distributed across multiple regions (geo-distribution). This improves performance by reducing latency for nearby users and improves availability by protecting against data loss in case of network or resource failure.

Active-Active databases allow read and write operations in each copy. Each copy eventually reflects changes made in other copies ([eventual consistency]({{<relref "/glossary#eventual-consistency">}})). Conflict-free data types (CRDTs) synchronize read and write operations between copies. CRDTs ensure consistency and resolve conflicts.

## Active-Active geo-distributed replication

Active-Active databases use both clustering and replication to strengthen your database. Active-Active Redis has additional features like geo-distribution, multiple active proxies, conflict resolution, and automatic failover to provide you with a more durable and scalable database.

### Multi-zone

Geo-distributed replication maintains copies of both primary and replica shards in multiple clusters. These clusters can be spread across multiple availability zones. Active-Active Redis uses zone awareness to spread your primary and replica shards across zones, which helps protect against data loss from regional outages.

### Multiple active proxies

Active-Active databases use a multi-primary architecture, which lets you read and write to a primary shard in any of your participating clusters. Having [multiple active proxies]({{<relref "/rs/databases/configure/proxy-policy#about-multiple-active-proxy-support">}}) allows users to connect to the cluster closest to them, reducing latency.

### Conflict resolution

Active-Active databases use special data types called conflict-free data types (CRDT). These automatically resolve conflicts that occur when writes are made to different clusters at the same time.

### Automatic failover

After a failure at any level (process, node, or zone), Active-Active databases automatically promote replica shards to replace failed primaries, copy data to new replica shards, and migrate shards to new nodes as needed. This reduces downtime and makes the most of your computing resources, even in the event of a failure.
92 changes: 92 additions & 0 deletions content/rc/subscriptions/create-active-active-subscription.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
Title: Create an Active-Active subscription
linkTitle: Create Active-Active subscription
description: Shows what changes when you create an Active-Active subscription (Flexible or Annual)
weight: 31
alwaysopen: false
categories: ["RC"]
aliases: /rc/subscriptions/create-active-active-subscription/
---

To deploy Active-Active databases in Redis Enterprise Cloud, you need to create a Flexible or Annual subscription with Active-Active enabled.

Overall, the process is similar to [creating a traditional subscription]({{<relref "/rc/subscriptions/create-flexible-subscription">}}). However, there are some differences; you need to:

- [Define the regions](#define-regions) for each database instance
- Define unique [CIDR addresses](#define-cidr-addresses) for each instance
- [Define throughput](#define-throughput) (read and write operations) for each region

Active-Active databases consist of multiple copies (also called _instances_) deployed to different regions throughout the world.

This reduces latency for local users and improves availability should a region fail.

Consistency between each instance is maintained in the background; that is, each copy eventually includes updates from every region. As a result, [memory size]({{<relref "/rc/databases/create-database#memory-size">}}) and throughput increase.


## Define regions

When you create a new Flexible subscription, the Active-Active Redis option appears to the right of the cloud providers.

{{<image filename="images/rc/create-flexible-sub-active-active-on.png" width="75%" alt="When you enable Active-Actve, you need to specify the regions for each database instance." >}}{{< /image >}}


When you enable Active-Active Redis, the region control changes to a default showing two regions. Select the drop-down arrow to display a list of provider regions that support Active-Active databases.

{{<image filename="images/rc/create-sub-active-active-regions.png" width="50%" alt="Use the Region drop-down to select the regions for your Active-Active database." >}}{{< /image >}}

Use the checkboxes in the list to select or remove regions. The Search box lets you locate specific regions.

You can use a region's Remove button to remove it from the list.

{{<image filename="images/rc/icon-region-delete.png" width="30px" alt="Select the Delete button to remove a region from the list." >}}{{< /image >}}


## Define CIDR addresses

To properly route network traffic between each Active-Active database instance and your consumer VPCs, use care to specify unique CIDR address blocks when using VPC peering. The block regions should _not_ overlap between the Redis server and your app consumer VPCs.

In addition, CIDR blocks should not overlap between cluster instances. Every CIDR block should be unique.

Use the **VPC configuration** section of the **Advanced options** to define unique address blocks for each region.

{{<image filename="images/rc/create-sub-active-active-cidr.png" width="75%" alt="Each region needs a unique CIDR address block to communicate securely with other instances." >}}{{< /image >}}

When all **Deployment CIDR** regions display a green checkmark, you're ready to continue.

{{<image filename="images/rc/icon-cidr-address-ok.png" width="30px" alt="Greem chackmarks indicate valid CIDR address values." >}}{{< /image >}}

Red exclamation marks indicate error conditions; the tooltip provides additional details.

{{<image filename="images/rc/icon-cidr-address-error.png" width="30px" alt="Red exclamation points indicate CIDR address problems." >}}{{< /image >}}


## Define throughput

Each Active-Active instance coordinates changes with every other instance, which increases memory use and throughput.

When you create an Active-Active database, you define the throughput for each instance.

{{<image filename="images/rc/create-database-active-active.png" width="75%" alt="When you create an Active-Active database, you define throughput for each region." >}}{{< /image >}}

Read and write operations are factored into the total throughput. Because each instance needs the ability to write to every other instance, write operations significantly affect the total, as shown in the following table:

| Number of regions | Read operations | Write operations | Total operations |
|:-----------------:|:---------------:|:----------------:|:----------------:|
| Two | 1,000 each | 1,000 each | 6,000<br/>(2,000 reads; 4,000 writes) |
| Two | 1,500 each | 1,000 each | 7,000<br/>(3,000 reads; 4,000 writes) |
| Two | 1,000 each | 1,500 each | 8,000<br/>(2,000 reads; 6,000 writes) |
| Three | 1,000 each | 1,000 each | 12,000<br/>(3,000 reads; 9,000 writes) |

The total operations per second:

- Combines the total read ops/sec for each region
- Applies the write ops/sec for each region across every region.

Throughput requirements grow dramatically as regions increase. As a result, consider your requirements carefully.

## More info

- [Create a Flexible subscription]({{<relref "/rc/subscriptions/create-flexible-subscription">}})
- Database [memory size]({{<relref "/rc/databases/create-database#memory-size">}})
- Redis Enterprise Cloud [subscription plans]({{<relref "/rc/subscriptions/">}})
- [Redis Enterprise Cloud pricing](https://redis.com/redis-enterprise-cloud/pricing/)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/rc/icon-cidr-address-error.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/rc/icon-cidr-address-ok.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/rc/icon-region-delete.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 2481aac

Please sign in to comment.