

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon MQ for ActiveMQ 的跨区域数据复制
<a name="crdr-for-active-mq"></a>

 Amazon MQ for ActiveMQ 提供跨区域数据复制（CRDR）功能，此功能允许将消息从主 AWS 区域中的主代理异步复制到副本区域中的副本代理。通过向 Amazon MQ API 发出失效转移请求，当前副本代理提升为主代理角色，而当前主代理降级为副本代理角色。

## 用于跨区域数据复制的主代理和副本代理
<a name="crdr-primary-replica-brokers"></a>

 您可以创建主代理和副本代理，以便将数据从主 AWS 区域中的主代理异步复制到副本区域中的副本代理。*主区域*由一对冗余的主动/备用代理（称为*主代理*）组成。*辅助区域*由一对冗余的主动/备用代理（称为*副本代理*）组成。

 下图说明了辅助区域中的副本代理从主区域中的主代理接收异步复制的数据的过程。

![\[Diagram showing primary and replica brokers in different AWS regions with replication traffic flow.\]](http://docs.aws.amazon.com/zh_cn/amazon-mq/latest/developer-guide/images/primary-replica-connection.png)


 主代理和副本代理充当跨区域数据恢复解决方案。如果主区域中的主代理出现故障，则可以通过启动切换或失效转移，将辅助区域中的副本代理提升为主代理。然后，以前的主代理成为副本代理，而以前的副本代理提升为主代理。有关创建主代理和副本代理的说明，请参阅[创建 Amazon MQ 跨区域数据复制代理](create-replica-broker.md)。

**注意**  
仅适用于主动/备用代理。  
不适用于镜像队列。

# 创建 Amazon MQ 跨区域数据复制代理
<a name="create-replica-broker"></a>

 使用跨区域数据复制（CRDR)，您可以根据需要，在两个 AWS 区域中的 Amazon MQ for ActiveMQ 消息代理之间切换。您可以将现有代理指定为主代理并为该代理创建副本，也可以同时创建新的主代理和副本代理。然后，您可以使用 Amazon MQ `Promote` API 操作将副本代理提升为主代理角色。有关主代理和副本代理的更多信息，请参阅[用于跨区域数据复制的主代理和副本代理](crdr-for-active-mq.md#crdr-primary-replica-brokers)。

 以下说明描述了如何使用 Amazon MQ 管理控制台创建和配置副本代理。

**Topics**
+ [先决条件](#create-crdr-broker-prerequisites)
+ [步骤 1（可选）：创建新的主代理](#create-new-primary-broker)
+ [Create a replica of an existing broker](#create-new-replica-broker)

## 先决条件
<a name="create-crdr-broker-prerequisites"></a>

要使用跨区域数据复制功能，您必须查看并遵守以下先决条件：
+  **版本**：跨区域数据复制功能仅适用于Amazon MQ for ActiveMQ 代理 5.17.6 及更高版本。
+  **区域**：以下区域支持跨区域数据复制：美国东部（俄亥俄州）、美国东部（弗吉尼亚州北部）、美国西部（俄勒冈州）、美国西部（北加利福尼亚）。
+  **实例类型**：跨区域数据复制仅适用于代理实例大小 `mq.m5.large` 及更大规模。
+  **部署类型**：跨区域数据复制仅适用于部署了多可用区的活动/备用代理。
+  **代理状态**：您只能为代理状态为 `Running` 的主代理创建副本代理。

## 步骤 1（可选）：创建新的主代理
<a name="create-new-primary-broker"></a>

### 创建新的主代理
<a name="create-new-primary-broker-procedure"></a>

1. 登录 [Amazon MQ 控制台](https://console.aws.amazon.com/amazon-mq/)。

1. 在 Amazon MQ 控制台的“代理”页面上，选择**创建代理**。

1.  在 **Select broker engine (选择代理引擎)** 页面上，选择 **Apache ActiveMQ**。

1.  在 **Select deployment and storage (选择部署和存储)** 页面的 **Deployment mode and storage type (部署模式和存储类型)** 部分，执行以下操作：

   1. 对于**部署模式**，选择**主动/备用代理**。**主动/备用代理**由两个不同可用区中配置为冗余对的两个代理组成。这些代理与您的应用程序以及 Amazon EFS 进行同步通信。有关更多信息，请参阅 [Amazon MQ for ActiveMQ 代理的部署选项](amazon-mq-broker-architecture.md)。

1.  选择**下一步**。

1. 在 **Configure settings (配置设置)** 页面的 **Details (详细信息)** 部分，执行以下操作：

   1. 输入 **Broker name (代理名称)**。
**重要**  
 请勿在代理名称中添加个人身份信息（PII）或其他机密或敏感信息。其他AWS服务（包括 CloudWatch Logs）可以访问代理名称。代理名称不适合用于私有或敏感数据。

   1. 选择 **Broker instance type (代理实例类型)**（例如 **mq.m5.large**）。有关更多信息，请参阅 [Amazon MQ for ActiveMQ 代理实例类型](broker-instance-types.md)。

1.  在 **ActiveMQ Web Console access (ActiveMQ Web 控制台访问)** 部分，提供 **Username (用户名)** 和 **Password (密码)**。以下限制适用于代理用户名和密码：
   +  用户名只能包含字母数字字符、短划线、句点、下划线和波浪线（- . \$1 \$1）。
   +  密码必须至少为 12 个字符，包含至少 4 个唯一字符，并且不得包含逗号、冒号或等号（,:=）。
**重要**  
请勿在代理用户名中添加个人身份信息（PII）或其他机密或敏感信息。其他AWS服务（包括 CloudWatch Logs）可以访问代理用户名。代理用户名不适合用于私有或敏感数据。

页面顶部的绿色闪存栏确认 Amazon MQ 正在恢复区域中创建副本代理。您还可以查看代理的 CRDR 角色和 RPO 状态。要关闭“CRDR 角色”和“RPO 状态”列，请选择**代理**表右上角的齿轮图标。然后，在**首选项**页面上，关闭 CRDR 角色或 RPO 状态。

## 步骤 2：创建现有代理的副本
<a name="create-new-replica-broker"></a>

1. 在 Amazon MQ 控制台的“代理”页面上，选择**创建副本代理**。

1. 在**选择主代理**页面上，选择要用作 CRDR 主代理的现有代理。然后选择**下一步**。

1. 在**配置副本代理**页面上，使用下拉菜单选择副本区域。

1. 在**副本代理的 ActiveMQ 控制台用户**部分中，提供副本代理控制台用户的**用户名**和**密码**。以下限制适用于代理用户名和密码：
   +  用户名只能包含字母数字字符、短划线、句点、下划线和波浪线（- . \$1 \$1）。
   +  密码必须至少为 12 个字符，包含至少 4 个唯一字符，并且不得包含逗号、冒号或等号（,:=）。
**重要**  
请勿在代理用户名中添加个人身份信息（PII）或其他机密或敏感信息。其他AWS服务（包括 CloudWatch Logs）可以访问代理用户名。代理用户名不适合用于私有或敏感数据。

1. 在**用于在代理之间桥接访问的数据复制用户**部分中，提供将访问主代理和副本代理的用户的**用户名**和**密码**。以下限制适用于代理用户名和密码：
   +  用户名只能包含字母数字字符、短划线、句点、下划线和波浪线（- . \$1 \$1）。
   +  密码必须至少为 12 个字符，包含至少 4 个唯一字符，并且不得包含逗号、冒号或等号（,:=）。
**重要**  
请勿在代理用户名中添加个人身份信息（PII）或其他机密或敏感信息。其他AWS服务（包括 CloudWatch Logs）可以访问代理用户名。代理用户名不适合用于私有或敏感数据。

   配置任何其他设置。然后选择**下一步**。

1. 在**查看并创建**页面上，查看副本代理的详细信息。然后，选择**创建副本代理**。

1.  接下来，重启主代理。这也将重启副本代理。有关重启代理的说明，请参阅[重启 Amazon MQ 代理](amazon-mq-rebooting-broker.md)。

有关为 ActiveMQ 代理配置其他设置的更多信息，请参阅[入门：创建并连接 ActiveMQ 代理](getting-started-activemq.md)

# 删除 Amazon MQ 跨区域数据复制代理
<a name="delete-crdr-broker"></a>

 要删除主跨区域数据复制（CRDR）代理或副本，必须先取消配对，然后重启代理。以下说明介绍如何使用 AWS 管理控制台取消配对和重启代理。

1.  在**代理**页面上，选择要取消配对的 CRDR 代理，然后选择**编辑**。

1.  在**数据复制**部分的代理**编辑**页面上，选择**取消配对代理**。

1.  在弹出窗口中输入“confirm”以确认您的选择。然后选择**取消配对代理**。

1.  接下来，重启取消配对的主代理。这也将重启副本代理。有关重启代理的说明，请参阅[重启 Amazon MQ 代理](amazon-mq-rebooting-broker.md)。主代理重启后，两个代理均为取消配对状态，可以单独删除。要删除您的代理，请参阅[删除 Amazon MQ 代理](amazon-mq-deleting-broker.md)。

# 启动切换或失效转移以将 Amazon MQ 副本代理提升为主代理角色
<a name="initate-failover"></a>

 当您想要将副本代理提升为主代理角色时，可以启动切换或失效转移。升级副本代理时，主代理会降级为副本代理角色。

 **切换**优先考虑一致性而不是可用性。当此失效转移操作完成时，可以保证代理处于相同的状态。通过切换，在建立代理间一致性的同时，可能会出现两个代理都无法进行客户端连接的时期。在提升副本的瞬间，这两个代理将处于相同的状态。切换是否成功取决于两个区域的运行状况和区域间网络。

 **失效转移**优先考虑可用性而不是一致性。当此操作完成时，不能保证代理处于相同的状态。通过失效转移，可以保证副本代理可以立即为客户端流量提供服务，无需等待任何复制数据进行同步或主代理收到关闭信号。失效转移的成功既不取决于原始主区域的运行状况，也不取决于区域间网络。

 下图说明了一种切换，在这种切换中，当复制队列耗尽且代理状态同步时，两个代理都不接受客户端连接。在此过程中，主代理的 VPC 中的客户端在操作正在进行期间无法发生进一步的状态变化，并且主代理降级为副本。当复制队列耗尽且两个代理达到相同状态时，副本代理的 VPC 中的客户端将无法连接到副本代理，直至失效转移操作完成，并且副本代理提升为主代理。

![\[Diagram showing broker switchover process between us-east-1 and us-west-2 regions with replication traffic.\]](http://docs.aws.amazon.com/zh_cn/amazon-mq/latest/developer-guide/images/planned-failover-process.png)


 下图说明了切换过程完成后的代理状态。原始副本代理现已提升为主代理角色并正在接受客户端连接。客户可以生成和使用来自代理的数据。

![\[Diagram showing broker status after switchover, with primary broker in us-west-2 and replica in us-east-1.\]](http://docs.aws.amazon.com/zh_cn/amazon-mq/latest/developer-guide/images/finished-failover-process.png)


## 使用控制台提升副本代理
<a name="initate-failover-procedure"></a>

要使用切换或失效转移来提升副本代理，请在 Amazon MQ 控制台中执行以下步骤。

**注意**  
 您无法在主代理上启动切换或失效转移。

1. 切换到副本代理所在区域。在“代理”表中，选择要提升为主代理的现有副本代理。

1.  在**代理详细信息页面**上，执行以下操作：

   1. 选择**提升副本**。

   1. 在弹出窗口中，选择*切换*或*失效转移*。

   1. 在文本框中输入“确认”以确认您的选择。

   1. 选择**确认**。

 启动失效转移后，代理状态更改为*正在进行失效转移*。失效转移完成后，“代理”页面顶部的蓝色进度条变为绿色。

**注意**  
 只在创建副本代理时复制配置。不会复制之后的任何更新。

# Amazon CloudWatch 中的跨区域数据复制指标
<a name="crdr-metrics"></a>

 Amazon MQ for ActiveMQ 跨区域数据复制功能提供了用于维护主代理和副本代理的可靠性、可用性和性能的指标。在复制过程中，辅助区域中的副本代理从主区域中的主代理接收异步复制的数据。如果主区域中的主代理出现故障，则可以通过启动切换或失效转移，将辅助区域中的副本代理提升为主代理。有关在 Amazon CloudWatch 中查看指标的说明，请参阅[访问亚马逊 MQ 的 CloudWatch 指标](amazon-mq-accessing-metrics.md)。

## CRDR 时间戳
<a name="crdr-metrics-timestamps"></a>

 以下时间戳描述如何计算在 Amazon CloudWatch 中找到的指标。数据复制过程中有五个时间戳：
+ 当前观测时间（TCO)：当前瞬间。
+ 创建时间（TC)：主代理在复制队列上创建事件的瞬间。在主代理和副本代理上均可用。
+ 交付时间（TD)：事件成功交付给副本代理的瞬间。仅在副本代理上可用。
+ 处理时间 (TP)：副本代理成功处理事件的瞬间。仅在副本代理上可用。
+ 确认时间（TA)：主代理成功确认事件的瞬间。仅在主代理上可用。

## 使用 CRDR CloudWatch 指标估算切换/失效转移性能
<a name="crdr-metrics-definitions"></a>

默认情况下，Amazon MQ 将会为您的代理启用指标。您可以通过访问 Amazon CloudWatch 控制台或者通过使用 CloudWatch API 查看您的代理指标。以下指标对于了解 CRDR 代理的复制和切换/失效转移性能很有用：


| Amazon MQ CloudWatch 指标 | 使用 CRDR 的原因 | 
| --- | --- | 
| TotalReplicationLag | 主代理上最后一个未确认事件的 TA 和 TC 之间的估计时间。 | 
| ReplicationLag | 副本代理上最后一个未确认事件的 TP 和 TC 之间的估计时间。 | 
| PrimaryWaitTime | 主代理上最后一个处理的事件的 TCO 和 TC 之间的估计时间。 | 
| ReplicaWaitTime | 副本代理上最后一个处理的事件的 TCO 和 TP 之间的估计时间。 | 
| QueueSize | 主代理上复制队列中未确认的事件总数。 | 

 `TotalReplicationLag` 和 `ReplicationLag` 描述主代理和副本代理之间的延迟复制。这两个指标还可用于估计完成正在进行的切换或失效转移操作所需的时间。

 `PrimaryWaitTime` 和 `ReplicaWaitTime` 可用于确定复制过程中正在发生的任何问题。如果此指标的值持续增长，则可能表明复制过程已降级或暂停。由于网络分区、代理启动和恢复时间长等问题，可能会导致复制缓慢。