View a markdown version of this page

Amazon MQ for RabbitMQ 的私有聯網 - Amazon MQ

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon MQ for RabbitMQ 的私有聯網

私有聯網可讓 Amazon MQ for RabbitMQ 代理程式連線到 VPC 中的私有資源。這些資源可能包括私有身分提供者 (LDAP 或 OAuth2)、其他 Amazon MQ for RabbitMQ 代理程式或自我託管 RabbitMQ 代理程式。您可以私下連接到資源,而無需透過公有網際網路。

可用性
  • 私有聯網僅適用於 Amazon MQ for RabbitMQ 代理程式。不支援 ActiveMQ 代理程式。

  • 私有聯網不適用於 AWS GovCloud (US) 區域。

  • 私有聯網僅適用於可使用 Amazon VPC Lattice AWS 的區域。如需 VPC Lattice 可用區域的詳細資訊,請參閱《 AWS 一般參考》中的 Amazon VPC Lattice 端點和配額。

私有聯網的運作方式

私有聯網使用 Amazon VPC Lattice、 AWS Resource Access Manager (AWS RAM) 和 AWS PrivateLink 將代理程式連接到 VPC 中的私有目的地。

設定包含下列元件:

  1. VPC 中的 VPC Lattice 資源閘道可做為從代理程式到私有資源的流量進入點。

  2. 一或多個 VPC Lattice 資源組態定義可透過資源閘道連線的私有目的地 (IP 地址或 DNS 名稱)。

  3. AWS RAM 資源共享會封裝資源組態,並透過 UpdateBroker API 操作與代理程式建立關聯。

  4. 在代理程式重新啟動期間,Amazon MQ 會在代理程式的 VPC 中建立資源 VPC 端點。這些端點會透過您的資源閘道建立至已設定目的地的網路路徑。

先決條件

設定私有聯網之前,請確定下列事項:

  • 您的 Amazon MQ for RabbitMQ 代理程式處於 RUNNING 狀態。

  • 您有至少一個子網路的 VPC。此 VPC 託管資源閘道,且不需要與代理程式相同的 VPC。若要取得高可用性,請在多個可用區域中使用子網路。

  • VPC Lattice 資源閘道必須與代理程式共用至少一個可用區域。這僅適用於單一執行個體代理程式。叢集代理程式使用每個可用的可用區域。

注意

代理程式不需要是私有的。可公開存取的代理程式也可以使用私有聯網。

設定私有聯網

請依照下列步驟,為您的 Amazon MQ for RabbitMQ 代理程式設定私有聯網。

步驟 1:建立 VPC Lattice 資源閘道

在可連接私有資源的 VPC 中建立 VPC Lattice 資源閘道。資源閘道充當透明代理。它會將流量從代理程式路由到設定的目的地。

  1. 開啟 Amazon VPC 主控台。

  2. 在導覽窗格的 VPC Lattice 下,選擇資源閘道。

  3. 選擇建立資源閘道。

  4. 使用 VPC、子網路和安全群組設定資源閘道。確保至少一個子網路位於與您的代理程式共用的可用區域中。

如需詳細資訊,請參閱《Amazon VPC Lattice 使用者指南》中的資源閘道。

步驟 2:建立 VPC Lattice 資源組態

建立一或多個資源組態,以定義代理程式需要到達的私有目的地。每個資源組態都會指定 IP 地址或 DNS 名稱,該地址或 DNS 名稱可從您設定資源閘道的 VPC 內解析。

您可以選擇性地將自訂網域名稱新增至資源組態。只有經過驗證的網域名稱才能用於代理程式的 DNS 解析。如果您的資源組態沒有可用的網域名稱,Amazon MQ 會透過 DescribeSharedResources API 操作提供 DNS 名稱。您可以在代理程式組態中使用此 DNS 名稱。

如需詳細資訊,請參閱《Amazon VPC Lattice 使用者指南》中的資源組態。

步驟 3:建立 AWS RAM 資源共享

建立 AWS RAM 資源共享,並將 VPC Lattice 資源組態新增至其中。資源共用是您與 Amazon MQ 代理程式相關聯的資源共用。

重要

資源共用必須允許外部主體。僅限您組織 (allowExternalPrincipals=false) 的資源共用無法與 Amazon MQ 搭配使用。

如需詳細資訊,請參閱《Resource Access Manager 使用者指南》中的建立資源共享。 AWS

步驟 4:將資源共享與代理程式建立關聯

使用 UpdateBroker API 操作將 AWS RAM 資源共享與您的代理程式建立關聯。您可以透過提供資源共享 ARNs 清單來關聯多個資源共享。

範例使用 關聯資源共享 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 – RAM 資源共享的 Amazon Resource Name AWS (ARN) (arn:aws:ram:... 值)。

如需詳細資訊,請參閱《Amazon MQ REST API 參考》中的 UpdateBroker。

若要將多個資源共用建立關聯,請將 ARNs與空格分開:

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),而不是附加操作。您必須在每次呼叫 時,提供您要與代理程式建立關聯的資源共享 ARNs 完整清單UpdateBroker。

注意

資源共享關聯的變更需要重新啟動代理程式才能生效。呼叫會將資源共用與代理程式建立UpdateBroker關聯,但不會立即建立網路路徑。

步驟 5:重新啟動代理程式

重新啟動代理程式以套用待定資源共享變更。在重新啟動期間,Amazon MQ 會在代理程式的 VPC 中建立資源 VPC 端點。然後,它會建立私有資源的網路路徑。

範例使用 重新啟動代理程式 AWS CLI
aws mq reboot-broker --broker-id b-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

重新啟動會導致單一執行個體代理程式停機,以及叢集代理程式短暫無法使用 (容錯移轉)。等待代理程式返回 RUNNING 狀態再繼續。這通常需要 10 到 20 分鐘。

如需詳細資訊,請參閱《Amazon 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 名稱。

如需詳細資訊,請參閱《Amazon MQ REST API 參考》中的 DescribeSharedResources。

使用案例

下列各節說明私有聯網的常見使用案例。

連線至私有身分提供者

您可以使用私有聯網將代理程式連線至私有 LDAP 或 OAuth2 身分提供者,而不將其公開至公有網際網路。設定私有聯網之後,請使用代理程式身分驗證組態中 DescribeSharedResources API 回應的 DNS 名稱。

如需設定身分驗證的詳細資訊,請參閱 Amazon MQ for RabbitMQ 的 LDAP 身分驗證和授權和 Amazon MQ for RabbitMQ 的 OAuth 2.0 身分驗證和授權。

連線至另一個 Amazon MQ for RabbitMQ 代理程式

您可以使用私有聯網,使用 Shovel 或聯合外掛程式將代理程式連線至另一個 Amazon MQ for RabbitMQ 代理程式。這可啟用私有broker-to-broker的通訊,而不會讓任一代理程式暴露於公有網際網路。

為另一個 Amazon MQ 代理程式建立資源組態時,請提供代理程式端點 (例如 b-xxxx.mq.us-east-1.on.aws) 做為自訂網域名稱。這可確保 TLS 憑證驗證成功。RabbitMQ 4 和更新版本預設會針對 Shovel 和聯合連線強制執行此驗證。如需詳細資訊,請參閱AMQP 用戶端 SSL 組態。

使用來自 DescribeSharedResources API 回應的 DNS 名稱做為 Shovel 或聯合組態中的目的地。

注意

對於 4 之前的 RabbitMQ 版本,根據預設,Shovel 和 Federation 不會強制執行 TLS 憑證對等驗證。您可以將代理程式端點指定為自訂網域名稱,或透過組態關閉對等驗證。如需詳細資訊,請參閱AMQP 用戶端 SSL 組態。

連線至自我託管 RabbitMQ 代理程式

您可以使用私有聯網,使用 Shovel 或聯合外掛程式將 Amazon MQ 代理程式連接到 VPC 中的自我託管 RabbitMQ 代理程式。建立指向自我託管代理程式 IP 地址或 DNS 名稱的資源組態。在 Shovel 或聯合組態中使用來自 DescribeSharedResources API 回應的 DNS 名稱。

RabbitMQ 4 和更新版本預設會強制執行 TLS 憑證對等驗證。您必須使用已驗證的網域名稱,或透過組態關閉對等驗證。如需詳細資訊,請參閱AMQP 用戶端 SSL 組態。

修改共用資源

您可以隨時修改與代理程式相關聯的資源共用。使用更新的資源共用 ARNs 清單呼叫 UpdateBroker API 操作。變更會在下一次代理程式重新啟動後生效。

若要取消所有資源共用與代理程式的關聯,請使用資源共用 ARNs的UpdateBroker空清單呼叫 ,然後重新啟動代理程式。

重要

您可以隨時修改 AWS RAM 資源共用。您可以從資源共用新增或移除 VPC Lattice 資源組態。在您呼叫UpdateBroker並重新啟動代理程式之前,Amazon MQ 不會偵測到這些變更。不過,移除先前套用至代理程式的資源組態會立即撤銷代理程式對該資源的存取權。此撤銷不需要呼叫UpdateBroker或重新啟動,但 中的資源狀態DescribeSharedResources將不會更新,直到您呼叫 UpdateBroker 並重新啟動為止。

配額

下列配額適用於私有聯網:

資源 預設值限制 說明
AWS 每個代理程式的 RAM 資源共用 10 超過此限制會導致 UpdateBroker API 呼叫失敗。
每個代理程式的 VPC Lattice 資源組態 100 所有相關聯資源共用的總計。多餘的資源組態會在DescribeSharedResources回應ERROR中標示為 。

資源狀態

使用 DescribeSharedResources API 操作來檢查共用資源的狀態。下表說明可能的狀態:

State 說明
SETUP_IN_PROGRESS 正在設定資源。此狀態會在呼叫 後出現,UpdateBroker並持續到代理程式重新啟動完成為止。
AVAILABLE 資源處於作用中狀態,代理程式可以到達設定的目的地。
DELETION_IN_PROGRESS 正在從代理程式中移除資源。
PENDING_CREATE 資源會排入佇列以建立 VPC 端點。此狀態很短暫,且會在代理程式重新啟動工作流程期間顯示。
PENDING_DELETE 資源會排入佇列以刪除 VPC 端點。此狀態很短暫,且會在代理程式重新啟動工作流程期間顯示。
ERROR 無法設定資源。如需錯誤詳細資訊DescribeSharedResources,請呼叫 。UpdateBroker 再次呼叫 會將資源移回 SETUP_IN_PROGRESS。

疑難排解

資源組態在重新啟動後處於 ERROR 狀態

使用 DescribeSharedResources API 操作檢查錯誤詳細資訊。常見原因包括:

  • VPC Lattice 資源閘道不會與代理程式共用可用區域。

  • 所有資源共用的資源組態總數超過配額。

解決問題後,請UpdateBroker再次呼叫 (即使具有相同的資源共享 ARNs),將資源移回 SETUP_IN_PROGRESS,然後重新啟動代理程式。

UpdateBroker 失敗並出現驗證錯誤

請確認下列事項:

  • 資源共享 ARN 是有效的,並由您的帳戶擁有。

  • 資源共享與代理程式位於相同的區域。

  • 資源共用允許外部主體。

  • 您尚未超過每個代理程式的資源共用配額。

重新開機後,中介裝置無法連線到私有資源

請確認下列內容:

  • 資源狀態處於DescribeSharedResources回應AVAILABLE中。

  • 資源閘道上的安全群組允許傳出流量傳送至所需連接埠上的目的地。

  • 資源組態中的目的地 IP 或 DNS 名稱可從部署資源閘道的 VPC 存取。

  • 您在代理程式組態中使用來自DescribeSharedResources回應的正確 DNS 名稱。