Amazon MQ で RabbitMQ 設定を自動化する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 設定を自動化する

ツール

ツール

  • 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 モジュールを使用してスタックを作成できます。後者のアプローチでは、Ansible は、RabbitMQ インフラストラクチャの作成と設定の管理の両方のタスクに使用できます。 

AWS CloudFormation、Ansible
タスク説明必要なスキル

プロパティファイルを作成します。

添付ファイルの JSON 設定ファイル (rabbitmqconfig.json) をダウンロード、または RabbitMQ コンソールからエクスポートします。 変更して、キュー、交換、バインドを設定します。この設定ファイルでは、以下が示されます。

— 2 つのキュー、sample-queue1 および sample-queue2 の作成 

— 2 つの交換、sample-exchange1 および sample-exchange2 の作成

— キューと交換間のバインドの実装

これらの設定は、rabbitmqadmin が要求するルート (/) 仮想ホストで実行されます。 

JSON

Amazon MQ for RabbitMQ インフラストラクチャの詳細を取得します。

AWS 上の RabbitMQ インフラストラクチャの以下の詳細を取得します。

  • ブローカー名

  • RabbitMQ ホスト

  • RabbitMQ ユーザー名 (クラスター作成時に作成された管理者ユーザー)

  • RabbitMQ パスワード

AWS マネジメントコンソールまたは AWS CLI を使用して、この情報を取得できます。これらの詳細により、Ansible プレイブックが AWS アカウントに接続され、RabbitMQ クラスタを使用してコマンドを実行できます。

重要: Ansible プレイブックを実行するコンピュータは、前提条件セクションで説明されているように、AWS アカウントにアクセスできる必要があり、AWS CLI は既に設定されている必要があります。

AWS CLI、Amazon MQ

hosts_var ファイルを作成します。

Ansible の hosts_var ファイルを作成し、すべての変数がファイルで定義されていることを確認します。Ansible Vault を使用してパスワードを保存することを検討します。hosts_var ファイルは次のように設定できます(アスタリスクと情報を入れ替えます)。

RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com" RABBITMQ_VHOST: "/" RABBITMQ_USERNAME: "admin" RABBITMQ_PASSWORD: "*******"
Ansible

Ansible プレイブックを作成します。

サンプルプレイブックについては、添付の ansible-rabbit-config.yaml を参照してください。このファイルをダウンロードして保存します。Ansible プレイブックは、アプリケーションが必要とするキュー、交換、バインドなどのすべての RabbitMQ 設定をインポートして、管理します。 

パスワードの保護など、Ansible プレイブックのベストプラクティスに従います。パスワードの暗号化には Ansible Vault を使用し、暗号化されたファイルから RabbitMQ パスワードを取得します。

Ansible
タスク説明必要なスキル

プレイブックを実行します。

前のエピックで作成した Ansible プレイブックを実行します。

ansible-playbook ansible-rabbit-config.yaml

RabbitMQ コンソールで新しい設定を確認できます。

RabbitMQ、Amazon MQ、Ansible

関連リソース

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip