View a markdown version of this page

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

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

Amazon MQ で RabbitMQ 設定を自動化する

Yogesh Bhatia、Afroz Khan (Amazon Web Services)

概要

Amazon MQ は、多くの人気メッセージブローカーとの互換性を提供するマネージドメッセージブローカーサービスです。RabbitMQ で Amazon MQ を使用すると、複数のブローカーと設定オプション AWS クラウド を備えた で管理される堅牢な RabbitMQ クラスターが提供されます。 RabbitMQ Amazon MQ は、可用性、安全性、スケーラビリティの高いインフラストラクチャを提供し、毎秒多数のメッセージを簡単に処理します。複数のアプリケーションが、さまざまな仮想ホスト、キュー、交換でインフラストラクチャを使用できます。ただし、これらの設定オプションの管理またはインフラストラクチャの手動作成には、時間と労力が必要になることがあります。このパターンでは、単一ファイルで、RabbitMQ の構成を 1 つの手順で管理する方法について説明します。このパターンで提供されるコードは、Jenkins または Bamboo などの継続的インテグレーション(CI)ツールに組み込みできます。 

このパターンを使用して、任意の RabbitMQ クラスターを設定できます。必要なのはクラスターへの接続のみです。RabbitMQ 設定を管理する方法は他にも多くありますが、このソリューションではアプリケーション全体の設定をワンステップで作成するため、キューやその他の詳細を簡単に管理できます。

前提条件と制限

前提条件

  • AWS Command Line Interface (AWS CLI) がインストールされ、 を指すように設定されている AWS アカウント

  • Ansible がインストールされている(プレイブックを実行して構成を作成できる)

  • rabbitmqadmin がインストールされている (手順については、RabbitMQ ドキュメントを参照)

  • 正常な Amazon CloudWatch メトリクスで作成されたAmazon MQ の RabbitMQ クラスター

その他の要件

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

ツール

AWS サービス

  • Amazon MQ は、クラウドでメッセージブローカーを簡単にセットアップして操作できるマネージドメッセージブローカーサービスです。

  • AWS CloudFormation は、 AWS Infrastructure as Code を使用してインフラストラクチャをセットアップし、クラウドプロビジョニングを高速化するのに役立ちます。

  • AWS CLI では、コマンドラインシェルでコマンド AWS のサービス を使用して を操作できます。 

その他のツール

  • rabbitmqadmin は RabbitMQ HTTP ベースの API 用のコマンドラインツールです。RabbitMQ ノードとクラスターの管理と監視に使用されます。

  • Ansible は、アプリケーションと IT インフラストラクチャを自動化するオープンソースツールです。

コードリポジトリ

このパターンで使用する JSON 設定ファイルと Ansible プレイブックのサンプルが添付ファイルで提供されます。

エピック

タスク説明必要なスキル

で RabbitMQ クラスターを作成します AWS。

RabbitMQ クラスターがまだない場合は、 AWS CloudFormation を使用してスタックを作成できます AWS。または、CloudFormation Ansible の モジュールを使用してスタックを作成できます。後者のアプローチでは、Ansible は、RabbitMQ インフラストラクチャの作成と設定の管理の両方のタスクに使用できます。 

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

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

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

  • sample-queue1 と の 2 つのキューを作成します。 sample-queue2 

  • sample-exchange1 と の 2 つの交換を作成します。 sample-exchange2

  • キューと交換の間のバインディングを実装します

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

JSON

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

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

  • ブローカー名

  • RabbitMQ ホスト

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

  • RabbitMQ パスワード

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

重要

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

AWS 全般

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 コンソールで新しい設定を確認できます。

一般的な AWS、RabbitMQ、Ansible

関連リソース

アタッチメント

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