本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 RabbitMQ 经纪商的 Amazon MQ 部署选项
可以单实例代理或集群部署方式创建 RabbitMQ 代理。对于这两种部署模式,Amazon MQ 通过冗余存储其数据来提供高持久性。
您可以使用 RabbitMQ 支持的任何编程语言并启用以下协议来访问您的 RabbitMQ
选项 1:适用于 RabbitMQ 的亚马逊 MQ 单实例代理
单实例代理由 Network Load Balancer (NLB) 后面一个可用区域中的一个代理组成。代理与您的应用程序和 Amazon EBS 存储卷进行通信。Amazon EBS 提供针对低延迟和高吞吐量进行了优化的块级存储。
使用 Network Load Balancer 可确保在维护窗口期间或由于底层亚马逊硬件故障而更换代理实例时,您的 Amazon MQ for RabbitMQ 代理终端节点保持不变。EC2网络负载均衡器允许您的应用程序和用户继续使用相同的终端节点连接到代理。
下图说明了 Amazon MQ for RabbitMQ 单实例代理。
选项 2:适用于 RabbitMQ 集群部署的亚马逊 MQ
集群部署是网络负载均衡器后面的三个 RabbitMQ 代理节点的逻辑分组,每个节点共享用户、队列和跨多个可用区(AZ)的分布式状态。
在集群部署中,Amazon MQ 会自动管理代理策略,以在所有节点上启用经典镜像,从而确保高可用性(HA)。每个镜像队列由一个主节点和一个或多个镜像组成。每个队列都有自己的主节点。给定队列的所有操作首先应用于队列的主节点,然后传输到镜像。Amazon MQ 可创建默认系统策略,该策略将 ha-mode
设置为 all
,将 ha-sync-mode
设置为 automatic
。这可确保数据跨不同可用区复制到集群中的所有节点,以获得更好的持久性。
注意
在维护时段,对集群的所有维护都一次执行一个节点,从而始终保持至少两个运行节点。每次关闭节点时,客户端与该节点的连接都会断开,需要重新建立。您必须确保您的客户端代码设计为自动重新连接到您的集群。有关连接恢复的更多信息,请参阅自动从网络故障中恢复。
因为 Amazon MQ 设置了 ha-sync-mode: automatic
,在维护时段期间,每当有个节点重新加入集群时,队列都将同步。队列同步会阻止所有其他队列操作。通过保持较短的队列,可以在维护时段期间减轻队列同步的影响。
默认策略不应删除。如果您确实删除了此政策,Amazon MQ 将自动重新创建该政策。Amazon MQ 还将确保 HA 属性应用于您在集群代理上创建的所有其他策略。如果您添加的策略没有 HA 属性,Amazon MQ 将为您添加这些属性。如果您添加具有不同高可用性属性的策略,Amazon MQ 将替换它们。有关传统镜像的更多信息,请参阅经典镜像队列
下图说明了 RabbitMQ 集群代理部署,在三个可用区 (AZ) 中有三个节点,每个节点都有自己的 Amazon EBS 卷和共享状态。Amazon EBS 提供针对低延迟和高吞吐量进行了优化的块级存储。