by Pascal Vogel on 2023年12月19日 in ,
本文由高级软件开发工程师 Dominic Gagné 和高级解决方案架构师 Vinodh Kannan Sadayamuthu 撰写。
Amazon MQ 现在支持 broker的跨区域数据复制。此功能让您轻松构建区域冗余的消息传递应用,并简化了 ActiveMQ broker 之间的跨区域消息复制设置。本文将详细解释 AmazonMQ 中的跨区域数据复制如何运作,如何设置 ActiveMQ 的跨区域备份 broker,以及如何测试提升一个备份 broker。
Amazon MQ 是一项托管的消息代理服务,支持 和 ,旨在简化 AWS 上的消息代理设置和操作。
跨区域复制增强了您系统的弹性和灾难恢复能力。此新的 Amazon MQ 功能使得在 AWS 区域间提高 ActiveMQ 消息系统的冗余性变得更加简单。
Amazon MQ 的 ActiveMQ 跨区域数据复制功能能够将主 broker 的状态从一个 AWS 区域复制到另一个区域的备份 broker。broker 状态包含了由消息生产者发送到 broker 的消息。此外,消息确认和事务也会被复制。需要注意的是,计划消息和 broker 的 XML 配置不会从主 broker 复制到备份 broker。
状态复制是异步进行的,并在后台运行。当消息发送到启用了跨区域数据复制的 broker 时,数据会同时持久存储到主数据存储和用于复制数据的队列中。备份 broker 作为此队列的客户端,消费来自主 broker 的 broker 状态数据。
在任何时刻,只有主 broker 可用于客户端连接。备份 broker 处于热备状态,被动复制主 broker的状态,但不接受客户端连接。下图展示了一个简化版的跨区域数据复制 broker 对的架构。所有复制流量都使用 TLS 加密,并保持在 AWS 的专用网络中。
![Amazon MQ for ActiveMQ删除)
要设置一个跨区域备份 broker,您的 Amazon MQ ActiveMQ 主 broker 必须满足以下资格要求:
如果您没有满足这些条件的 ActiveMQ broker,请参见 获取创建主 broker 的说明。
配置跨区域复制的步骤
现在两个 broker 可以相互同步,建立跨区域的网络连接,通过该连接复制 broker 状态。一旦两个 broker 都处于 运行中 状态,主 broker 接受客户端连接,并将所有 broker 状态更改(消息、确认、事务等)传递给备份 broker。
备份 broker 现在异步地镜像主 broker 的状态,但在通过切换或故障转移进行提拔之前,它不会对客户端连接可用。接下来的部分将介绍这两种操作。
提拔备份 broker 有两种方式:发起切换或故障转移。
| 切换 | 故障转移 |
|---|---|
| - 优先保证 一致性 而非可用性。 | - 优先保证 可用性 而非一致性。 |
| - brokers 的状态 保证 相同。 | - brokers 的状态 不保证 相同。 |
| - brokers 可能 不可立即使用 来服务客户端流量。 | - 备份 broker 立即 可用 来服务客户端流量。 |
发起故障转移或切换的步骤
ActiveMQ.Plugin.Replication 队列。TestQueue 的 操作 下,选择 发送至 ,并执行以下步骤:Secondarybroker),并选择 提拔备份 。备份 Secondarybroker 状态 – 提拔中:
![备份 Secondarybroker 状态 -
删除)
主 broker 状态 – 降级中:
![主 broker 状态 -
删除)
Secondarybroker 状态 – 提升为新的主 broker:
![Secondarybroker 状态 – 提升为新的主
删除)
Secondarybroker 状态为 运行中 ,从 连接 面板中的 URL 登录到 ActiveMQ Web 控制台。在 TestQueue 中,您可以看到步骤 4 中从原主 broker 发送的复制消息。要监控跨区域数据复制进度,您可以使用 指标
和。
![Amazon CloudWatch 指标 TotalReplicationLag 和 删除)
您可以使用这两个指标来监控切换的进展。当它们的值达到零时,切换将完成,因为 broker 状态已经同步,备份 broker开始接受客户端连接。如果切换进展缓慢,或者您需要备份 broker 立即可用以接受客户端流量,您可以随时请求故障转移。
注意 :故障转移可能会中断进行中的切换,但切换无法中断进行中的故障转移。
发起故障转移请求会使备份 broker 立即可用,但无法保证已复制到备份 broker的数据。这意味着故障转移可能会使客户端应用的数据跟踪和对账变得比切换更加复杂。
因此,我们建议您始终优先尝试切换,必要时再通过故障转移进行中断。要中断正在进行的切换,按照提拔备份 broker 的步骤,选择故障转移选项并确认。
注意 :如果您故障回原主 broker,在故障转移期间未从主 broker 复制到备份 broker 的消息仍将保留在主 broker中。因此,消费者必须管理这些消息。我们建议将处理过的消息 ID 跟踪在诸如 之类的数据存储中,并与已处理的消息 ID进行比较。
若您不再需要跨区域复制 broker 数据,或者需要删除主 broker 或备份 broker,必须解除备份 broker 的配对并重启主 broker。您可以在 Amazon MQ 控制台中通过 following 来解除配对。
要使用 AWS 命令行界面 (AWS CLI)
解锁 broker,运行以下命令,替换
--broker-id 为您的主 broker ID:
shell aws mq update-broker --broker-id <primary broker ID> \ --data- replication-mode "NONE" \ --region us-east-1
利用 Amazon MQ的跨区域数据复制功能,提供了一种简便的方法来实现跨区域复制,从而提升您架构的冗余性,并满足业务连续性和灾难恢复需求。本文详细说明了跨区域数据复制在 Amazon MQ 中的工作原理,如何设置跨区域备份 broker,及如何测试和提拔备份 broker。
欲了解更多详细信息,请参阅 。
有关更多无服务器学习资源,请访问 。
标签: ,
Leave a Reply