本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon MQ 中自动化 RabbitMQ 配置
Yogesh Bhatia 和 Afroz Khan,Amazon Web Services
Summary
Amazon MQ 是一项托管式消息代理服务,可兼容许多常见消息代理。将 Amazon MQ 与 RabbitMQ 配合使用可以提供一个强大的 RabbitMQ 集群,在中通过多个代理和配置选项进行管理。 AWS Cloud Amazon MQ 提供了高度可用、安全且可扩展的基础设施,并且每秒可以轻松处理大量消息。多个应用程序可以使用具有不同虚拟主机、队列和交换器的基础设施。但是,管理这些配置选项或手动创建基础设施,可能需要时间和精力。此示例介绍了一种通过单个文件一步管理 RabbitMQ 配置的方法。您可将此模式提供的代码嵌入到任何持续集成(CI)工具(例如 Jenkins 或 Bamboo)中。
您可使用此模式来配置任何 RabbitMQ 集群。它所需要的只是连接至集群。尽管还有许多其他方法可以管理 RabbitMQ 配置,但此解决方案只需一步即可创建整个应用程序配置,因此您可轻松管理队列和其他细节。
先决条件和限制
先决条件
AWS Command Line Interface (AWS CLI) 已安装并配置为指向您的 AWS 账户
Ansible 已安装,因此您可以运行 playbook 来创建配置
rabbitmqadmin 已安装 (有关说明,请参阅 RabbitMQ 文档
) 亚马逊 MQ 中的 RabbitMQ 集群,使用健康的亚马逊指标创建 CloudWatch
其他要求
确保单独为虚拟主机和用户创建配置,而不是作为 JSON 的一部分。
确保配置 JSON 是存储库的一部分并且受版本控制。
rabbitmqadmin CLI 的版本必须与 RabbitMQ 服务器的版本相同,因此最好的选择是从 RabbitMQ 控制台下载 CLI。
作为管道的一部分,请确保在每次运行之前验证 JSON 语法。
产品版本
AWS CLI 版本 2.0
Ansible 版本 2.9.13
rabbitmqadmin 版本 3.9.13 (必须与 RabbitMQ 服务器版本相同)
架构
源技术堆栈
在现有本地虚拟机或 Kubernetes 集群(本地或云端)上运行的 RabbitMQ 集群
目标技术堆栈
Amazon MQ 上针对 RabbitMQ 的自动化 RabbitMQ 配置
目标架构
配置 RabbitMQ 的方法有很多种。此模式使用导入配置功能,其单个 JSON 文件包含所有配置。此文件应用所有设置,并且可以由 Bitbucket 或 Git 等版本控制系统管理。此模式使用 Ansible 通过 rabbitmqadmin CLI 实现配置。

工具
AWS 服务
Amazon MQ 是托管式消息代理服务,让您可轻松地在云中设置和操作消息代理。
AWS CloudFormation利用基础架构即代码,帮助您设置 AWS 基础架构并加快云配置速度。
AWS CLI允许您在命令行 sh AWS 服务 ell 中使用命令进行交互。
其他工具
rabbitmqadmin
是基于 RabbitMQ HTTP 的 API 的命令行工具。它用于管理和监控 RabbitMQ 节点和集群。 Ansible
是一款用于自动化应用程序和 IT 基础设施的开源工具。
代码存储库
附件中提供了此模式中使用的 JSON 配置文件和示例 Ansible playbook。
操作说明
| Task | 说明 | 所需技能 |
|---|---|---|
在上创建 RabbitMQ 集群。 AWS | 如果您还没有 RabbitMQ 集群,则可以使用在上创建AWS CloudFormation堆栈。 AWS或者,你可以使用 Ansible 中的CloudFormation 模块 | 通用 AWS、Ansible |
| Task | 说明 | 所需技能 |
|---|---|---|
创建属性文件。 | 下载附件中的 JSON 配置文件 (
根据 rabbitmqadmin 的要求,这些配置在根 (/) 虚拟主机下执行。 | JSON |
检索适用于 RabbitMQ 的 Amazon MQ 基础设施的详细信息。 | 在上检索 RabbitMQ 基础设施的以下详细信息: AWS
您可以使用 AWS 管理控制台 或 AWS CLI 来检索此信息。这些详细信息使 Ansible 剧本能够连接到您的 AWS 账户 并使用 RabbitMQ 集群来运行命令。 重要运行 Ansible 剧本的计算机必须能够访问您的 AWS 账户,并且 AWS CLI 必须已按先决条件部分中所述进行配置。 | 常规 AWS |
创建 | 为 Ansible 创建
| Ansible |
创建 Ansible Playbook。 | 有关示例 Playbook,请参阅附件中的 遵循 Ansible playbook 的最佳实践,例如保护密码。使用 Ansible Vault 进行密码加密,并从加密文件中检索 RabbitMQ 密码。 | Ansible |
| Task | 说明 | 所需技能 |
|---|---|---|
运行 Playbook。 | 运行您在上一部操作说明中创建的 Ansible Playbook。
您可在 RabbitMQ 控制台上验证新的配置。 | General AWS、RabbitMQ、Ansible |
相关资源
管理命令行工具
(RabbitMQ 文档) 创建或删除 AWS CloudFormation 堆栈
(Ansible 文档) 将消息驱动的应用程序迁移到 Amazon MQ for RabbitMQ
(博客文章)AWS
附件
要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip