本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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
工具
AWS 服務
Amazon MQ— 受管型訊息中介裝置服務,可讓您輕鬆地在雲端設定及操作訊息中介裝置。
AWS CloudFormation— 這項服務可協助您設定 AWS 基礎設施,並使用基礎設施即程式碼加速雲端佈建。
Code
附件中提供了在此模式中使用的 JSON 配置文件和示例 Ansible 教戲手冊。
Epics
任務 | 描述 | 必要技能 |
---|---|---|
在 AWS 上建立 RabbitMQ 叢集。 | 如果您尚未擁有 RabbitMQ 集群,可以使用AWS CloudFormation在 AWS 上建立堆疊。或者,您可以使用雲形成模塊在安普里 | AWS CloudFormation,安全 |
任務 | 描述 | 必要技能 |
---|---|---|
建立屬性檔案。 | 在附件中下載 JSON 配置文件(兔子配置 .json),或從兔子配置控制台導出它。 修改它以配置隊列,交換和綁定。此組態檔示範下列操作: -建立兩個佇列: -創建兩個交易所: -實現隊列和交流之間的綁定 這些組態會在根 (/) 虛擬主機下執行,如兔子管理員。 | JSON |
擷取適用於 RabbitMQ 基礎設施的 Amazon MQ 詳細資訊。 | 擷取 AWS 上 RabbitMQ 基礎設施的下列詳細資訊:
您可以使用 AWS 管理主控台或 AWS CLI 擷取此資訊。這些詳細資料可讓 Ansible 教戰手冊連接到您的 AWS 帳戶,並使用 RabbitMQ 叢集來執行命令。 Important (重要)執行 Ansible 教戰手冊的電腦必須能夠存取您的 AWS 帳戶,而且 AWS CLI 必須已設定,如先決條件章節中)。 | AWS CLI, Amazon MQ |
建立主機檔案。 | 為 Ansible 創建主機 _var 文件,並確保所有變量都在文件中定義。考慮使用 Ansible 保管庫來存儲密碼。您可以設定 hosts_var 檔案,如下所示 (以您的資訊取代星號):
| Ansible |
創建一個 Ansible 的教戲手冊。 | 如需範例的遊戲手冊,請參閱附件中的安全兔-config.yaml。下載並儲存此檔案。Ansible 教戰手冊會匯入並管理應用程式需要的所有 RabbitMQ 設定,例如佇列、交換和繫結。 遵循 Ansible 教習手冊的最佳作法,例如保護密碼。使用 Ansible 保管庫進行密碼加密,並從加密的檔案擷取 RabbitMQ 密碼。 | Ansible |
任務 | 描述 | 必要技能 |
---|---|---|
執行教習手冊。 | 執行您在上一個史詩版中建立的 Ansible 教戰書:
您可以在 RabbitMQ 主控台上驗證新的設定。 | 兔子 MQ, Amazon MQ, 安卓 |
相關資源
從 RabbitMQ 遷移到 Amazon MQ
(AWS 部落格文章) 管理命令列工具
(兔子 MQ 文檔) 建立或刪除 AWS CloudFormation 堆疊
(有效的文檔) 將訊息驅動應用程式遷移到 Amazon MQ
(AWS 部落格文章)