View a markdown version of this page

适用于 RabbitMQ 的 Amazon MQ 的私有网络 - Amazon MQ

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

适用于 RabbitMQ 的 Amazon MQ 的私有网络

私有网络使适用于 RabbitMQ 代理的 Amazon MQ 能够连接到您的 VPC 中的私有资源。这些资源可能包括私有身份提供商(LDAP 或 OAuth2)、其他面向 RabbitMQ 经纪人的亚马逊 MQ 或自托管的 RabbitMQ 经纪商。您可以私下连接到您的资源,而无需通过公共互联网。

可用性
  • 私有网络仅适用于亚马逊 MQ for RabbitMQ 经纪商。不支持 ActiveMQ 代理。

  • 私有网络在 AWS GovCloud (美国)地区不可用。

  • 私有网络仅在可用 Amazon VPC Lattice 的 AWS 地区可用。有关 VPC Lattice 可用区域的更多信息,请参阅《AWS 一般参考》中的 Amazon VPC Lattice 终端节点和配额

私有网络的工作原理

私有网络使用 Amazon VPC Lattice、 AWS 资源访问管理器 (AWS RAM),并将您的代理 AWS PrivateLink 连接到您的 VPC 中的私有目的地。

该设置涉及以下组件:

  1. 您的 VPC 中的 VPC Lattice 资源网关充当从代理到您的私有资源的流量的入口点。

  2. 一个或多个 VPC Lattice 资源配置定义了可通过资源网关访问的私有目的地(IP 地址或 DNS 名称)。

  3. AWS RAM 资源共享将资源配置打包在一起,并通过 UpdateBroker API 操作与代理关联。

  4. 在代理重启期间,Amazon MQ 会在代理的 VPC 中创建资源 VPC 终端节点。这些终端节点建立了通过您的资源网关到达已配置目的地的网络路径。

先决条件

在设置私有网络之前,请确保以下几点:

  • 您在某个州有一个 RabbitMQ 的亚马逊 MQ 经纪商。RUNNING

  • 您有一个至少有一个子网的 VPC。此 VPC 托管资源网关,不必与代理相同 VPC。为了实现高可用性,请在多个可用区中使用子网。

  • VPC Lattice 资源网关必须与代理共享至少一个可用区。这仅是单实例经纪人关注的问题。集群代理使用所有可用的可用区域。

注意

经纪人不必是私人的。可公开访问的经纪人也可以使用私有网络。

设置私有网络

按照以下步骤为您的 Amazon MQ for RabbitMQ 经纪人设置私有网络。

第 1 步:创建 VPC 莱迪思资源网关

在 VPC 中创建可以访问您的私有资源的 VPC 莱迪思资源网关。资源网关充当透明代理。它将流量从代理路由到配置的目的地。

  1. 打开 Amazon VPC 控制台

  2. 在导航窗格的 VPC Lattice 下,选择资源网关

  3. 选择创建资源网关

  4. 使用 VPC、子网和安全组配置资源网关。确保在与您的经纪人共享的可用区内至少有一个子网。

有关更多信息,请参阅 Amazon VPC Lattice 用户指南中的资源网关。

第 2 步:创建 VPC 莱迪思资源配置

创建一个或多个资源配置,定义经纪人需要到达的私有目的地。每种资源配置都指定一个 IP 地址或 DNS 名称,该名称可在您设置资源网关的 VPC 内解析。

您可以选择将自定义域名添加到资源配置中。只有经过验证的域名才能用于经纪人的 DNS 解析。如果您的资源配置没有可用的域名,Amazon MQ 将通过 DescribeSharedResources API 操作提供 DNS 名称。您可以在经纪人配置中使用此 DNS 名称。

有关更多信息,请参阅《Amazon VPC Lattice User Guide》中的 Resource configurations

步骤 3:创建一个 AWS RAM 资源共享

创建 AWS RAM 资源共享并将您的 VPC Lattice 资源配置添加到其中。资源共享是您与 Amazon MQ 经纪人关联的资源。

重要

资源共享必须允许外部委托人。仅限于您的组织 (allowExternalPrincipals=false) 的资源共享不能与 Amazon MQ 一起使用。

有关更多信息,请参阅《资源访问管理器用户指南》中的创建AWS 资源共享

第 4 步:将资源共享与您的经纪人关联

使用 UpdateBroker API 操作将 AWS RAM 资源共享与您的代理关联。您可以通过提供资源共享 ARN 列表来关联多个资源共享。

例使用关联资源共享 AWS CLI
aws mq update-broker \ --broker-id b-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --resource-share-arns arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222

用你自己的值替换占位符:

  • --broker-id— 您的经纪人的唯一 ID(b-a1b2c3d4-...价值)。

  • --resource-share-arns— 您的 AWS RAM 资源共享的亚马逊资源名称 (ARN)(arn:aws:ram:...值)。

有关更多信息,请参阅亚马逊 MQ REST API 参考UpdateBroker中的内容。

要关联多个资源共享,请使用空格分隔 ARN:

aws mq update-broker \ --broker-id b-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --resource-share-arns arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333
注意

如果您在重启之前UpdateBroker多次通话,则只有最后一次调用才会生效。该resourceShareArns参数是完全替换(put),而不是加法运算。每次致电UpdateBroker时,您都必须提供希望与经纪人关联的资源共享 ARN 的完整列表。

注意

对资源共享关联的更改需要重启代理才能生效。调用会将资源共享与代理UpdateBroker关联起来,但不会立即建立网络路径。

第 5 步:重启经纪商

重启代理以应用待处理的资源份额更改。在重启期间,Amazon MQ 在代理的 VPC 中创建资源 VPC 终端节点。然后,它会建立您的私有资源的网络路径。

例使用重启代理 AWS CLI
aws mq reboot-broker --broker-id b-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

重启会导致单实例代理停机,并导致集群代理短暂不可用(故障转移)。等待经纪人返回RUNNING状态,然后再继续。这通常需要 10 到 20 分钟。

有关更多信息,请参阅亚马逊 MQ REST API 参考RebootBroker中的内容。

步骤 6:验证设置

使用 DescribeSharedResources API 操作来验证您的资源是否可用。您也可以使用它来检索 DNS 名称以用于您的经纪人配置。

例使用验证共享资源 AWS CLI
aws mq describe-shared-resources --broker-id b-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

安装完成后,资源共享将显示为AVAILABLE状态。每种资源配置都显示其关联的 DNS 名称。

有关更多信息,请参阅亚马逊 MQ REST API 参考DescribeSharedResources中的内容。

使用案例

以下各节描述了私有网络的常见用例。

连接到私人身份提供商

您可以使用私有网络将您的代理连接到私有 LDAP 或 OAuth2 身份提供商,而无需将其暴露给公共互联网。设置私有网络后,在经纪人的身份验证配置中使用 DescribeSharedResources API 响应中的 DNS 名称。

有关配置身份验证的更多信息,请参阅适用于 RabbitMQ 的 Amazon MQ 的 LDAP 身份验证和授权OAuth 适用于 RabbitMQ 的亚马逊 MQ 的 2.0 身份验证和授权

连接另一个 Amazon MQ for RabbitMQ 经纪商

您可以使用 Shovel 或 Federation 插件使用私有网络将您的经纪人连接到另一个 Amazon MQ for RabbitMQ 经纪商。这样可以实现经纪人之间的私人通信,而不会将任何一个经纪人暴露在公共互联网上。

为另一个 Amazon MQ 代理创建资源配置时,提供代理终端节点(例如b-xxxx.mq.us-east-1.on.aws)作为自定义域名。这可确保 TLS 证书验证成功。默认情况下,RabbitMQ 4 及更高版本会对 Shovel 和 Federation 连接强制执行此验证。有关更多信息,请参阅 AMQP 客户端 SSL 配置

使用 DescribeSharedResources API 响应中的 DNS 名称作为 Shovel 或 Federation 配置中的目的地。

注意

对于早于 4 的 RabbitMQ 版本,默认情况下不强制执行 Shovel 和 Federation 的 TLS 证书对等验证。您可以将代理端点指定为自定义域名,也可以通过配置关闭对等验证。有关更多信息,请参阅 AMQP 客户端 SSL 配置

连接到自托管的 RabbitMQ 经纪商

您可以使用私有网络将您的亚马逊 MQ 代理与 VPC 中的自托管 RabbitMQ 代理连接到 Shovel 或 Federation 插件中的自托管 RabbitMQ 代理。创建指向自托管经纪商的 IP 地址或 DNS 名称的资源配置。在 Shovel 或 Federation 配置中使用 DescribeSharedResources API 响应中的 DNS 名称。

默认情况下,RabbitMQ 4 及更高版本强制执行 TLS 证书对等验证。您必须使用经过验证的域名或通过配置关闭对等验证。有关更多信息,请参阅 AMQP 客户端 SSL 配置

修改共享资源

您可以随时修改与您的经纪人关联的资源共享。使用更新的资源共享 ARN 列表调用 UpdateBroker API 操作。更改将在下次代理重启后生效。

要取消所有资源共享UpdateBroker与代理的关联,请使用资源共享 ARN 的空列表进行调用,然后重启代理。

重要

您可以随时修改 AWS RAM 资源共享。您可以从资源共享中添加或删除 VPC Lattice 资源配置。在您致电UpdateBroker并重启代理之前,Amazon MQ 不会检测到这些更改。但是,删除先前应用于代理的资源配置会立即撤消代理对该资源的访问权限。此撤销不需要调用UpdateBroker或重新启动,但是在您调UpdateBroker用并重新启动之前,中的资源状态DescribeSharedResources不会更新。

配额

以下配额适用于私有网络:

资源 默认限制 说明
AWS 每个代理的 RAM 资源份额 10 超过此限制会导致 UpdateBroker API 调用失败。
每个代理的 VPC Lattice 资源配置 100 所有关联资源份额的总和。多余的资源配置在DescribeSharedResources响应ERROR中标记为。

资源状态

使用 DescribeSharedResources API 操作检查共享资源的状态。下表描述了可能的状态:

说明
SETUP_IN_PROGRESS 资源正在配置中。此状态在调用UpdateBroker后出现,一直持续到代理重启完成。
AVAILABLE 资源处于活动状态,代理可以到达配置的目的地。
DELETION_IN_PROGRESS 该资源正在从代理中移除。
PENDING_CREATE 资源已排队等待创建 VPC 终端节点。此状态很简短,出现在代理重启工作流程中。
PENDING_DELETE 该资源已排队等待删除 VPC 终端节点。此状态很简短,出现在代理重启工作流程中。
ERROR 资源配置失败。致DescribeSharedResources电了解错误详情。UpdateBroker再次调用会将资源移回SETUP_IN_PROGRESS

问题排查

重新启动后资源配置处于错误状态

使用 DescribeSharedResources API 操作检查错误详情。常见原因包括:

  • VPC Lattice 资源网关不与代理共享可用区。

  • 所有资源共享的资源配置总数超过配额。

解决问题后,UpdateBroker再次调用(即使使用相同的资源共享 ARN)将资源移回SETUP_IN_PROGRESS,然后重启代理。

UpdateBroker 因验证错误而失败

确保进行以下配置:

  • 资源共享 ARN 有效且归您的账户所有。

  • 资源份额与代理位于同一区域。

  • 资源共享允许外部委托人。

  • 您尚未超过每个代理商的资源份额配额。

重启后代理无法访问私有资源

请验证以下内容:

  • 资源状态AVAILABLEDescribeSharedResources响应中。

  • 资源网关上的安全组允许出站流量通过所需端口到达目的地。

  • 资源配置中的目标 IP 或 DNS 名称可从部署资源网关的 VPC 访问。

  • 您在代理配置中使用了DescribeSharedResources响应中的正确 DNS 名称。