翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon MQ で RabbitMQ 設定を自動化する
作成者: Yogesh Bhatia (AWS) と Afroz Khan (AWS)
環境:PoC またはパイロット | テクノロジー: メッセージングとコミュニケーション DevOps、インフラストラクチャ | AWS サービス: Amazon MQ 、AWS CloudFormation |
[概要]
Amazon MQ は、多くの人気メッセージブローカーとの互換性を提供するマネージドメッセージブローカーサービスです。Amazon MQ を RabbitMQ と併用すると、Amazon Web Services (AWS) クラウドで管理される堅牢な RabbitMQ クラスターが提供され、複数のブローカーと設定オプションを使用できます。Amazon MQ は、可用性、安全性、スケーラビリティの高いインフラストラクチャを提供し、毎秒多数のメッセージを簡単に処理します。複数のアプリケーションが、さまざまな仮想ホスト、キュー、交換でインフラストラクチャを使用できます。ただし、これらの設定オプションの管理またはインフラストラクチャの手動作成には、時間と労力が必要になることがあります。このパターンでは、単一ファイルで、RabbitMQ の構成を 1 つの手順で管理する方法について説明します。このパターンで提供されるコードは、Jenkins または Bamboo などの継続的インテグレーション(CI)ツールに組み込みできます。
このパターンを使用して、任意の RabbitMQ クラスターを設定できます。必要なのはクラスターへの接続のみです。RabbitMQ 設定を管理する方法は他にも多くありますが、このソリューションではアプリケーション全体の設定をワンステップで作成するため、キューやその他の詳細を簡単に管理できます。
前提条件と制限
前提条件
AWS コマンドラインインターフェイス (AWS CLI) がインストールされ、AWS アカウントを指すように設定されている (手順については、AWS CLI ドキュメントを参照)
Ansible がインストールされている(プレイブックを実行して構成を作成できる)
rabbitmqadmin がインストールされている (手順については、RabbitMQ ドキュメント
を参照) 正常な Amazon CloudWatch メトリクスで作成された Amazon MQ の RabbitMQ クラスター Amazon MQ
その他の要件
JSON の一部としてではなく、仮想ホストとユーザーの設定を別に作成します。
設定 JSON がリポジトリの一部であり、バージョン管理されていることを確認します。
rabbitmqadmin CLI のバージョンは RabbitMQ サーバーのバージョンと同じである必要があるため、最善のオプションは RabbitMQ コンソールから CLI をダウンロードすることです。
パイプラインの一部として、各実行前に JSON 構文が検証されていることを確認します。
製品バージョン
AWS CLI バージョン 2.0
Ansible バージョン 2.9.13
rabbitmqadmin バージョン 3.9.13 (RabbitMQ サーバーバージョンと同じである必要があります)
アーキテクチャ
ソーステクノロジースタック
既存のオンプレミス仮想マシン (VM) または Kubernetes クラスター (オンプレミスまたはクラウド) で実行中の RabbitMQ クラスター
ターゲットテクノロジースタック
Amazon MQ for RabbitMQ での RabbitMQ の自動設定
ターゲット アーキテクチャ
RabbitMQ を設定する方法は多くあります。このパターンでは、単一 JSON ファイルにすべての設定が含まれるインポート設定機能を使用します。このファイルにはすべての設定が適用され、Bitbucket または Git などのバージョン管理システムで管理できます。このパターンは Ansible を使用して、rabbitmqadmin CLI で設定を実装します。
![Amazon MQ で RabbitMQ 設定を自動化する](images/pattern-img/294120b6-c95f-4cc5-bf85-5ad7e2abdad5/images/292e1284-5c9e-4c82-bb41-010fa84d8d74.png)
ツール
ツール
rabbitmqadmin
は RabbitMQ HTTP ベースの API 用のコマンドラインツールです。RabbitMQ ノードとクラスターの管理と監視に使用されます。 Ansible
は、アプリケーションと IT インフラストラクチャを自動化するオープンソースツールです。 AWS CLI では、コマンドラインシェルのコマンドを使用して AWS サービスとインタラクトできます。
AWS サービス
Amazon MQ は、クラウドでメッセージブローカーを簡単にセットアップして操作できるマネージドメッセージブローカーサービスです。
AWS CloudFormation は、AWS インフラストラクチャをセットアップし、Infrastructure as Code を使用してクラウドプロビジョニングを高速化するのに役立ちます。
コード
このパターンで使用する JSON 設定ファイルと Ansible プレイブックのサンプルが添付ファイルで提供されます。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
AWS に RabbitMQ クラスターを作成します。 | RabbitMQ クラスターをまだお持ちでない場合は、AWS CloudFormation を使用して AWS にスタックを作成できます。または、Ansible の Cloudformation モジュール | AWS CloudFormation、Ansible |
タスク | 説明 | 必要なスキル |
---|---|---|
プロパティファイルを作成します。 | 添付ファイルの JSON 設定ファイル ( — 2 つのキュー、 — 2 つの交換、 — キューと交換間のバインドの実装 これらの設定は、rabbitmqadmin が要求するルート (/) 仮想ホストで実行されます。 | JSON |
Amazon MQ for RabbitMQ インフラストラクチャの詳細を取得します。 | AWS 上の RabbitMQ インフラストラクチャの以下の詳細を取得します。
AWS マネジメントコンソールまたは AWS CLI を使用して、この情報を取得できます。これらの詳細により、Ansible プレイブックが AWS アカウントに接続され、RabbitMQ クラスタを使用してコマンドを実行できます。 重要: Ansible プレイブックを実行するコンピュータは、前提条件セクションで説明されているように、AWS アカウントにアクセスできる必要があり、AWS CLI は既に設定されている必要があります。 | AWS CLI、Amazon MQ |
hosts_var ファイルを作成します。 | Ansible の
| Ansible |
Ansible プレイブックを作成します。 | サンプルプレイブックについては、添付の パスワードの保護など、Ansible プレイブックのベストプラクティスに従います。パスワードの暗号化には Ansible Vault を使用し、暗号化されたファイルから RabbitMQ パスワードを取得します。 | Ansible |
タスク | 説明 | 必要なスキル |
---|---|---|
プレイブックを実行します。 | 前のエピックで作成した Ansible プレイブックを実行します。
RabbitMQ コンソールで新しい設定を確認できます。 | RabbitMQ、Amazon MQ、Ansible |
関連リソース
RabbitMQ から Amazon MQ へ移行する
(AWS ブログ投稿) 管理コマンドラインツール
(RabbitMQ ドキュメント) 「AWS CloudFormation スタックの作成または削除
」(Ansible ドキュメント) RabbitMQ for Amazon MQ へメッセージ駆動型アプリケーションを移行する
(AWS ブログ投稿)
添付ファイル
このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip」