-
Notifications
You must be signed in to change notification settings - Fork 471
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* 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
1 parent
f5f3548
commit 2481aac
Showing
10 changed files
with
131 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
92
content/rc/subscriptions/create-active-active-subscription.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
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.