在 Amazon MQ 中自動化 RabbitMQ 配置 - AWS Prescriptive Guidance

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

在 Amazon MQ 中自動化 RabbitMQ 配置

由約傑什巴提亞(AWS)創建

環境:PoC 或試驗

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

AWS 服務:Amazon MQ; AWS CloudFormation

Summary

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

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

先決條件和限制

先決條件

  • 安裝並設定為指向 AWS 帳戶的 AWS 命令列界面 (AWS CLI) (如需相關指示,請參閱AWS CLI 文件中))

  • Ansible 安裝,所以你可以運行教習手冊來創建配置

  • 兔子管理員(如需指示,請參閱RabbitMQ 文件)

  • Amazon MQ 中的 RabbitMQ 叢集,使用健康的 Amazon CloudWatch 指標建立

其他需求

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

  • 確保配置 JSON 是存儲庫的一部分,並且受版本控制。

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

  • 做為管線的一部分,請確保 JSON 語法在每次執行之前都經過驗證。

產品版本

  • AWS CLI 1.18.147 版

  • 可用的版本 2.9.13

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

Architecture

原始碼技術堆疊

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

目標技術堆疊

  • Amazon MQ 上的自動化 RabbitMQ 配置,適用於 RabbitMQ

目標架構

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

Tools

工具

  • 兔子管理員— 適用於 RabbitMQ HTTP 型 API 的命令列工具,用來管理和監視 RabbitMQ 節點和叢集。

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

  • AWS CLI— 開放原始碼工具,可讓您在命令列 shell 中使用命令來與 AWS 服務互動。 

AWS 服務

  • Amazon MQ— 受管型訊息中介裝置服務,可讓您輕鬆地在雲端設定及操作訊息中介裝置。

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

Code

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

Epics

任務描述必要技能
在 AWS 上建立 RabbitMQ 叢集。

如果您尚未擁有 RabbitMQ 集群,可以使用AWS CloudFormation在 AWS 上建立堆疊。或者,您可以使用雲形成模塊在安普里以建立堆疊。使用後一種方法,您可以使用 Ansible 進行這兩個任務:創建 RabbitMQ 基礎結構和管理配置。 

AWS CloudFormation,安全
任務描述必要技能
建立屬性檔案。

在附件中下載 JSON 配置文件(兔子配置 .json),或從兔子配置控制台導出它。 修改它以配置隊列,交換和綁定。此組態檔示範下列操作:

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

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

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

這些組態會在根 (/) 虛擬主機下執行,如兔子管理員。 

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

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

  • 中介裝置名稱

  • RabbitMQ 主機

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

  • RabbitMQ 密碼

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

Important (重要)執行 Ansible 教戰手冊的電腦必須能夠存取您的 AWS 帳戶,而且 AWS CLI 必須已設定,如先決條件章節中)。

AWS CLI, Amazon MQ
建立主機檔案。

為 Ansible 創建主機 _var 文件,並確保所有變量都在文件中定義。考慮使用 Ansible 保管庫來存儲密碼。您可以設定 hosts_var 檔案,如下所示 (以您的資訊取代星號):

RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com" RABBITMQ_VHOST: "/" RABBITMQ_USERNAME: "admin" RABBITMQ_PASSWORD: "*******"
Ansible
創建一個 Ansible 的教戲手冊。

如需範例的遊戲手冊,請參閱附件中的安全兔-config.yaml。下載並儲存此檔案。Ansible 教戰手冊會匯入並管理應用程式需要的所有 RabbitMQ 設定,例如佇列、交換和繫結。 

遵循 Ansible 教習手冊的最佳作法,例如保護密碼。使用 Ansible 保管庫進行密碼加密,並從加密的檔案擷取 RabbitMQ 密碼。

Ansible
任務描述必要技能
執行教習手冊。

執行您在上一個史詩版中建立的 Ansible 教戰書:

ansible-playbook ansible-rabbit-config.yaml

您可以在 RabbitMQ 主控台上驗證新的設定。

兔子 MQ, Amazon MQ, 安卓

Attachments

attachment.zip