

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

# 在 Amazon MQ 中自動化 RabbitMQ 組態 Amazon MQ
<a name="automate-rabbitmq-configuration-in-amazon-mq"></a>

*Yogesh Bhatia 和 Afroz Khan，Amazon Web Services*

## 總結
<a name="automate-rabbitmq-configuration-in-amazon-mq-summary"></a>

[Amazon MQ](https://docs.aws.amazon.com/amazon-mq/) 是一種受管訊息代理程式服務，可與許多熱門訊息代理程式相容。搭配使用 Amazon MQ 與 RabbitMQ 提供強大的 RabbitMQ 叢集，在 Amazon Web Services (AWS) 雲端中受管，具有多個代理程式和組態選項。Amazon MQ 提供高可用性、安全和可擴展的基礎設施，並且可以輕鬆處理每秒大量訊息。多個應用程式可以使用具有不同虛擬主機、佇列和交換的基礎設施。不過，管理這些組態選項或手動建立基礎設施可能需要時間和精力。此模式描述透過單一檔案，在單一步驟中管理 RabbitMQ 組態的方法。您可以在任何持續整合 (CI) 工具中嵌入此模式提供的程式碼，例如 Jenkins 或 Bamboo。 

您可以使用此模式來設定任何 RabbitMQ 叢集。只需要連線至叢集。雖然管理 RabbitMQ 組態有許多其他方式，但此解決方案會在一個步驟中建立整個應用程式組態，因此您可以輕鬆管理佇列和其他詳細資訊。

## 先決條件和限制
<a name="automate-rabbitmq-configuration-in-amazon-mq-prereqs"></a>

**先決條件**
+ 安裝並設定 AWS Command Line Interface (AWS CLI) 以指向您的 AWS 帳戶 （如需說明，請參閱 [AWS CLI 文件](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html))
+ 已安裝 Ansible，因此您可以執行手冊來建立組態
+ 已安裝 **randommqadmin** （如需說明，請參閱 [RabbitMQ 文件](https://www.rabbitmq.com/management-cli.html))
+ Amazon MQ 中的 RabbitMQ 叢集，使用運作狀態良好的 Amazon CloudWatch 指標建立

**其他要求**
+ 請務必分別建立虛擬主機和使用者的組態，而不是做為 JSON 的一部分。
+ 請確定組態 JSON 是 儲存庫的一部分，且受版本控制。
+ 偵**錯工具 **CLI 的版本必須與 RabbitMQ 伺服器版本相同，因此最佳選項是從 RabbitMQ 主控台下載 CLI。
+ 作為管道的一部分，請確保在每次執行之前驗證 JSON 語法。

**產品版本**
+ AWS CLI 2.0 版
+ Ansible 2.9.13 版
+ **visitorsmqadmin** 3.9.13 版 （必須與 RabbitMQ 伺服器版本相同）

## Architecture
<a name="automate-rabbitmq-configuration-in-amazon-mq-architecture"></a>

**來源技術堆疊**
+ 在現有內部部署虛擬機器 (VM) 或 Kubernetes 叢集 （內部部署或雲端） 上執行的 RabbitMQ 叢集

**目標技術堆疊**
+ Amazon MQ for RabbitMQ 上的自動化 RabbitMQ 組態

**目標架構**

設定 RabbitMQ 的方法有很多種。此模式使用匯入組態功能，其中單一 JSON 檔案包含所有組態。此檔案會套用所有設定，並可由 Bitbucket 或 Git 等版本控制系統進行管理。此模式使用 Ansible 透過**附屬管理** CLI 實作組態。

![\[在 Amazon MQ 中自動化 RabbitMQ 組態 Amazon MQ\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/294120b6-c95f-4cc5-bf85-5ad7e2abdad5/images/292e1284-5c9e-4c82-bb41-010fa84d8d74.png)


## 工具
<a name="automate-rabbitmq-configuration-in-amazon-mq-tools"></a>

**工具**
+ [caughtmqadmin](https://www.rabbitmq.com/management-cli.html) 是 RabbitMQ HTTP 型 API 的命令列工具。它用於管理和監控 RabbitMQ 節點和叢集。
+ [Ansible](https://www.ansible.com/) 是用於自動化應用程式和 IT 基礎設施的開放原始碼工具。
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 可讓您使用命令列 shell 中的命令與 AWS 服務互動。 

**AWS 服務**
+ [Amazon MQ](https://docs.aws.amazon.com/amazon-mq/) 是一種受管訊息中介裝置服務，可讓您輕鬆地在雲端中設定和操作訊息中介裝置。
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 可協助您設定 AWS 基礎設施，並使用基礎設施做為程式碼來加速雲端佈建。

**Code**

此模式中使用的 JSON 組態檔案和範例 Ansible 手冊提供於附件中。

## 史詩
<a name="automate-rabbitmq-configuration-in-amazon-mq-epics"></a>

### 建立您的 AWS 基礎設施
<a name="create-your-aws-infrastructure"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 AWS 上建立 RabbitMQ 叢集。 | 如果您還沒有 RabbitMQ 叢集，您可以使用 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 在 AWS 上建立堆疊。或者，您可以使用 [Ansible 中的 Cloudformation 模組](https://docs.ansible.com/ansible/latest/collections/amazon/aws/cloudformation_module.html)來建立堆疊。使用後者方法，您可以針對這兩個任務使用 Ansible： 來建立 RabbitMQ 基礎設施和管理組態。  | AWS CloudFormation、Ansible | 

### 建立 Amazon MQ for RabbitMQ 組態
<a name="create-the-amazon-mq-for-rabbitmq-configuration"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立屬性檔案。 | 在附件中下載 JSON 組態檔案 (`rabbitmqconfig.json`)，或從 RabbitMQ 主控台匯出。 修改它以設定佇列、交換和繫結。此組態檔案示範下列項目：- 建立兩個佇列： `sample-queue1` 和 `sample-queue2` - 建立兩個交換： `sample-exchange1` 和 `sample-exchange2`- 實作佇列和交換之間的繫結這些組態會視需要在 root (/) 虛擬主機下執行。 ****  | JSON | 
| 擷取 Amazon MQ for RabbitMQ 基礎設施的詳細資訊。 | 擷取 AWS 上 RabbitMQ 基礎設施的下列詳細資訊：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/automate-rabbitmq-configuration-in-amazon-mq.html)您可以使用 AWS 管理主控台或 AWS CLI 來擷取此資訊。這些詳細資訊可讓 Ansible 手冊連線至您的 AWS 帳戶，並使用 RabbitMQ 叢集來執行命令。執行 Ansible 手冊的電腦必須能夠存取您的 AWS 帳戶，而且必須已設定 AWS CLI，如*先決條件*一節中所述。 | AWS CLI、Amazon MQ | 
| 建立 hosts\$1var 檔案。 | 為 Ansible 建立 `hosts_var` 檔案，並確定檔案中已定義所有變數。考慮使用 Ansible Vault 來存放密碼。您可以設定 `hosts_var` 檔案，如下所示 （以您的資訊取代星號）：<pre>RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com"<br />RABBITMQ_VHOST: "/"<br />RABBITMQ_USERNAME: "admin"<br />RABBITMQ_PASSWORD: "*******"</pre> | Ansible | 
| 建立 Ansible 手冊。 | 如需範例手冊，請參閱附件`ansible-rabbit-config.yaml`中的 。下載並儲存此檔案。Ansible 手冊會匯入和管理應用程式所需的所有 RabbitMQ 組態，例如佇列、交換和繫結。 遵循 Ansible 手冊的最佳實務，例如保護密碼。使用 Ansible Vault 進行密碼加密，並從加密的檔案擷取 RabbitMQ 密碼。 | Ansible | 

### 部署組態
<a name="deploy-the-configuration"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 執行 手冊。 | 執行您在上一個史詩中所建立的 Ansible 手冊。<pre>ansible-playbook ansible-rabbit-config.yaml</pre>您可以在 RabbitMQ 主控台上驗證新組態。 | RabbitMQ、Amazon MQ、Ansible | 

## 相關資源
<a name="automate-rabbitmq-configuration-in-amazon-mq-resources"></a>
+ [從 RabbitMQ 遷移至 Amazon MQ](https://aws.amazon.com/blogs/compute/migrating-from-rabbitmq-to-amazon-mq/) (AWS 部落格文章）
+ [Management Command Line Tool](https://www.rabbitmq.com/management-cli.html) (RabbitMQ 文件）
+ [建立或刪除 AWS CloudFormation 堆疊](https://docs.ansible.com/ansible/latest/collections/amazon/aws/cloudformation_module.html) (Ansible 文件）
+ [將訊息驅動的應用程式遷移至 Amazon MQ for RabbitMQ](https://aws.amazon.com/blogs/compute/migrating-message-driven-applications-to-amazon-mq-for-rabbitmq/) (AWS 部落格文章）

## 附件
<a name="attachments-294120b6-c95f-4cc5-bf85-5ad7e2abdad5"></a>

若要存取與本文件相關聯的其他內容，請解壓縮下列檔案： [attachment.zip](samples/p-attach/294120b6-c95f-4cc5-bf85-5ad7e2abdad5/attachments/attachment.zip)