在 Amazon MQ 中自動化 RabbitMQ 組態 - AWS 方案指引

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

在 Amazon MQ 中自動化 RabbitMQ 組態

創建者:瑜伽什·巴蒂亞(AWS)和阿弗羅茲汗(AWS)

環境:PoC 或試點

技術:訊息與通訊 DevOps;基礎架構

AWS 服務:Amazon MQ;AWS CloudFormation

Summary

Amazon MQ 是受管訊息代理程式服務,可與許多熱門訊息代理程式提供相容性。將 Amazon MQ 與 RabbitMQ 搭配使用,可提供在亞 Amazon Web Services (AWS) 雲端中管理的強大 RabbitMQ 叢集,並提供多個代理程式和組態選項。Amazon MQ 提供高可用性、安全且可擴展的基礎設施,而且每秒可輕鬆處理大量訊息。多個應用程式可以將基礎結構與不同的虛擬主機、佇列和交換器搭配使用。不過,管理這些組態選項或手動建立基礎結構可能需要時間和精力。此模式描述了一種通過單個文件管理 RabbitMQ 配置的方法。您可以在任何持續集成(CI)工具(如詹金斯或 Bamboo)中嵌入此模式提供的代碼。 

您可以使用此模式來配置任何 RabbitMQ 叢集。它所需要的只是連線到叢集。雖然還有許多其他方法可以管理 RabbitMQ 配置,但此解決方案只需一個步驟即可創建整個應用程序配置,因此您可以輕鬆管理隊列和其他詳細信息。

先決條件和限制

先決條件

其他需求

  • 確保分別為虛擬主機和用戶創建配置,而不是 JSON 的一部分。

  • 請確定組態 JSON 是存放庫的一部分,並且是版本控制的。

  • 兔子管理員 CLI 的版本必須與 RabbitMQ 服務器的版本相同,因此最好的選擇是從 RabbitMQ 控制台下載 CLI。

  • 作為管道的一部分,請確保在每次運行之前驗證 JSON 語法。

產品版本

  • AWS CLI 2.0 版

  • 安智的版本

  • 兔子管理員版本 3.9.13 (必須與 RabbitMQ 伺服器版本相同)

架構

源, 技術, 堆棧

  • 在現有內部部署虛擬機器 (VM) 或 Kubernetes 叢集 (在內部部署或雲端中) 上執行的 RabbitMQ 叢集

目標技術堆疊

  • 適用於兔子 MQ 的 Amazon MQ 上的自動兔子 MQ 組態

目標架構

有很多方法可以配置 RabbitMQ。此模式使用匯入組態功能,其中單一 JSON 檔案包含所有組態。此文件應用所有設置,並且可以通過版本控制系統(例如 Bitbucket 或 Git)進行管理。這種模式使用 Ansible 通過兔子管理員 CLI 來實現配置。

在 Amazon MQ 中自動執行兔子 MQ 組態

工具

工具

  • Rabbitmqadmin 是一個適用於基於 HTTP 的 API 的命令列工具。它用於管理和監視 RabbitMQ 節點和集群。

  • Ansible 是用於自動化應用程式和 IT 基礎架構的開放原始碼工具。

  • AWS CLI 可讓您使用命令列殼層中的命令與 AWS 服務互動。 

AWS 服務

  • Amazon MQ 是一種受管訊息代理程式服務,可讓您輕鬆在雲端中設定和操作訊息代理程式。

  • AWS 可 CloudFormation協助您設定 AWS 基礎設施,並使用基礎設施即程式碼加速雲端佈建。

Code

附件中提供了此模式中使用的 JSON 配置文件和示例 Ansible 教戰手冊。

史诗

任務描述所需技能

在 AWS 上建立 RabbitMQ 叢集。

如果您還沒有 RabbitMQ 叢集,可以使用 AWS 在 AWS 上 CloudFormation建立堆疊。或者,您可以使用 Ansible 中的雲形模塊來創建堆棧。使用後一種方法,您可以將 Ansible 用於兩項任務:創建 RabbitMQ 基礎結構並管理配置。 

AWS CloudFormation,安易
任務描述所需技能

創建一個屬性文件。

下載附件中的 JSON 配置文件(rabbitmqconfig.json),或從 RabbitMQ 控制台導出它。 修改它以設定佇列、交換和繫結。此配置文件演示了以下內容:

-建立兩個佇列:sample-queue1sample-queue2 

-創建兩個交易所:sample-exchange1sample-exchange2

-實現隊列和交換之間的綁定

這些設定會根據 rabbit mqadmin 的要求,在根 (/) 虛擬主機下執行。 

JSON

擷取適用於 RabbitMQ 基礎設施的 Amazon MQ 詳細資訊。

在 AWS 上擷取 RabbitMQ 基礎設施的下列詳細資訊:

  • 代理程式名稱

  • 兔子 MQ 主機

  • RabbitMQ 使用者名稱 (叢集建立期間建立的管理員使用者)

  • 兔子 MQ 密碼

您可以使用 AWS 管理主控台或 AWS CLI 擷取此資訊。這些詳細資料可讓 Ansible 教戰手冊連線到您的 AWS 帳戶,並使用 RabbitMQ 叢集執行命令。

重要事項:執行 Ansible 教戰手冊的電腦必須能夠存取您的 AWS 帳戶,而且必須已經設定 AWS CLI,如先決條件一節所述。

AWS CLI,Amazon MQ

建立主機檔案。

為 Ansible 創建hosts_var文件,並確保所有變量都在文件中定義。考慮使用 Ansible 保管庫來存儲密碼。您可以按照以下方式配置hosts_var文件(用您的信息替換星號):

RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com" RABBITMQ_VHOST: "/" RABBITMQ_USERNAME: "admin" RABBITMQ_PASSWORD: "*******"
Ansible

創建一個安全的教戰手冊。

如需教戰手冊範例,請參閱附件ansible-rabbit-config.yaml中的。下載並儲存此檔案。Ansible 教戰手冊導入和管理應用程序需要的所有 RabbitMQ 配置,例如隊列,交換和綁定。 

請遵循 Ansible 教戰手冊的最佳做法,例如保護密碼。使用 Ansible 保險庫進行密碼加密,並從加密文件中檢索 RabbitMQ 密碼。

Ansible
任務描述所需技能

執行教戰手冊。

運行您在上一個史詩中創建的 Ansible 劇本。

ansible-playbook ansible-rabbit-config.yaml

您可以在 RabbitMQ 控制台上驗證新的配置。

兔子 MQ, Amazon MQ, 安易

相關資源

附件

若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip