RabbitMQ は、Advanced Message Queuing Protocol (AMQP)、Message Queuing Telemetry Transport (MQTT)、Streaming Text Oriented Messaging Protocol (STOMP)、HTTP、WebSockets など、複数のメッセージングプロトコルをサポートするオープンソースのメッセージブローカーです。 RabbitMQ は使いやすく、拡張性が高く、可用性が高いです。 RabbitMQ は、分散システムにおける通信の調整と管理を行い、非同期メッセージングを実装して、システムのデカップリング、スケーラビリティ、同時処理能力、およびフォールトトレランスを向上させます。 RabbitMQ は、安定したパフォーマンス、多様な機能、活発なコミュニティサポートにより、エンタープライズレベルのアプリケーションのメッセージングおよびタスク処理で広く使用されています。このトピックでは、Elastic Compute Service (ECS) インスタンスにオープンソース RabbitMQ をデプロイする方法について説明します。
RabbitMQ のデプロイ
手動デプロイ: この方法は、Linux コマンドの基本的な知識があり、RabbitMQ のカスタムデプロイを実行できるユーザーに適しています。
クイックデプロイ: この方法では、RabbitMQ をインストールおよび構成する必要がなくなり、デプロイ時間が大幅に短縮されます。
手動デプロイ
この例では、RabbitMQ の最新バージョンをインストールする方法について説明します。 RabbitMQ の他のバージョンのインストール方法については、「Installing RabbitMQ」を参照してください。
前提条件
次の要件を満たす ECS インスタンスが作成されます。
インスタンスには、システムによってパブリック IP アドレスが割り当てられているか、または Elastic IP Address (EIP) が関連付けられています。 詳細については、「EIP」をご参照ください。
インスタンスは、Ubuntu 20.04、Ubuntu 22.04、または Debian 11.0 から Debian 12.5 の Debian バージョンを実行しています。
サポートされているその他のオペレーティングシステムとインストール方法については、「Installing RabbitMQ」を参照してください。
ポート 22、80、および 15672 でのトラフィックを許可するために、インスタンスのセキュリティグループにインバウンドルールが追加されます。
説明Message Queue (MQ) ツールを使用して RabbitMQ サーバーに接続するには、ポート 5672 も開く必要があります。
手順
RabbitMQ をデプロイする ECS インスタンスに接続します。
詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。
RabbitMQ をインストールします。
基本的な RabbitMQ 依存関係をインストールします。
sudo apt-get install curl gnupg apt-transport-https -y
RabbitMQ と Erlang の GNU Privacy Guard (GPG) 公開鍵をダウンロードし、公開鍵情報をオペレーティングシステムの信頼キーリングに追加します。
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
RabbitMQ と Erlang の公式 Advanced Packaging Tool (APT) リポジトリを
/etc/apt/sources.list.d/rabbitmq.list
ファイルに追加します。sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main EOF
ローカルパッケージインデックスを更新します。
sudo apt-get update -y
Erlang 関連のパッケージをインストールします。
sudo apt-get install -y erlang-base \ erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \ erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \ erlang-runtime-tools erlang-snmp erlang-ssl \ erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
RabbitMQ をインストールします。
sudo apt-get install rabbitmq-server -y --fix-missing
RabbitMQ を構成します。
インスタンスの起動時に RabbitMQ が起動するように構成し、RabbitMQ を起動します。
sudo systemctl enable rabbitmq-server sudo systemctl start rabbitmq-server
セキュリティを確保するために、次のコマンドを実行して RabbitMQ のデフォルトアカウントを削除することをお勧めします。
RabbitMQ のデフォルトのユーザー名とパスワードはどちらも
guest
です。sudo rabbitmqctl delete_user guest
RabbitMQ 管理者ユーザーを作成します。
ユーザーを作成します。
sudo rabbitmqctl add_user <Username> <Password>
<Username>
パラメーターと<Password>
パラメーターを指定します。新しいユーザーを管理者として設定します。
sudo rabbitmqctl set_user_tags <Username> administrator
新しいユーザーにすべての権限を付与します。
sudo rabbitmqctl set_permissions -p / <Username> ".*" ".*" ".*"
RabbitMQ を起動し、オープンソース RabbitMQ コンソールに移動します。
sudo rabbitmq-plugins enable rabbitmq_management
クイック デプロイ
Alibaba Cloud Marketplace イメージを使用して RabbitMQ をデプロイする
Alibaba Cloud Marketplace のイメージを使用して RabbitMQ をデプロイできます。 これにより、RabbitMQ をインストールおよび構成する必要がなくなり、デプロイ時間が大幅に短縮されます。 Alibaba Cloud Marketplace のイメージ詳細ページの料金タブに表示される価格が適用されます。
Cloud Native MQ for Apache RabbitMQ Powered by Websoft9 をクリックして、イメージ詳細ページに移動します。
イメージ詳細ページで、イメージ情報とユーザーガイドを入手できます。
[choose Your Plan] をクリックします。
ECS インスタンス購入ページの [カスタム起動] タブで、プロンプトに従って ECS インスタンスを構成して購入します。
次のパラメーターに注意してください。 ビジネス要件に基づいて他のパラメーターを構成します。 その他のパラメーターについては、「カスタム起動タブでインスタンスを作成する」をご参照ください。
[イメージ]: 購入したイメージは、[イメージ] セクションで自動的に選択されます。
[パブリック IP アドレス]: [パブリック Ipv4 アドレスを割り当てる] を選択します。
[セキュリティグループ]: ポート 22、80、および 15672 でのトラフィックを許可するセキュリティグループのインバウンドルールを構成します。
RabbitMQ サーバーにログインするために使用するユーザー名とパスワードを取得します。
RabbitMQ サーバーに接続します。
詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。
次のコマンドを実行して、RabbitMQ サーバーにログインするためのユーザー名とパスワードを取得します。
sudo cat /credentials/password.txt
次の図に示すコマンド出力が返されます。
rabbitmq_user: RabbitMQ サーバーにログインするためのユーザー名。
rabbitmq_password: RabbitMQ サーバーにログインするためのパスワード。
rabbitmq_gui_port: RabbitMQ の Web サーバーポート。
rabbitmq_mq_port: RabbitMQ のリモート接続ポート。
rabbitmq_er_port: Erlang での処理間通信のために RabbitMQ サーバーが使用する内部ポート。
rabbitmq_mqtt_port: RabbitMQ サーバーが提供する MQTT サービスのリスニングポート。
Terraform を使用して RabbitMQ をデプロイする
Terraform は、開発者と O&M チームがクラウドインフラストラクチャの作成、デプロイ、および管理を自動化するのに役立つコードとしてのインフラストラクチャ (IaC) ツールです。 Terraform を使用すると、手動操作や構成を行うことなく、簡単なコードを書いてクラウドインフラストラクチャを定義および構成できます。
手順
[here] をクリックして Terraform Explorer ページに移動し、次の Terraform コードを自動的にロードします。
デフォルトでは、1 つの Virtual Private Cloud (VPC)、1 つの vSwitch、1 つのセキュリティグループ、および 1 つの従量課金制 ECS インスタンスが cn-beijing リージョンに作成されます。 パラメーター値をビジネス要件に基づいて実際の値に置き換えます。 ECS インスタンスの課金については、「課金概要」を参照してください。
[デバッグの開始] をクリックして、作成するリソースの詳細をプレビューします。 リソース情報が正しい場合は、[計画と適用] をクリックしてリソースを作成します。 タスクステータスが「成功」の場合、デプロイタスクは完了です。
オープンソース RabbitMQ コンソールにログインする
オンプレミスのブラウザを開き、アドレスバーに
http://<Linux インスタンスのパブリック IP アドレス>:15672
と入力します。次の図は、RabbitMQ がインストールされていることを示しています。
作成した RabbitMQ 管理者ユーザーのユーザー名とパスワードを入力し、[ログイン] をクリックして、オープンソース RabbitMQ コンソールにアクセスします。
次の図は、オープンソース RabbitMQ コンソールを示しています。
オープンソース RabbitMQ クラスタを ApsaraMQ for RabbitMQ インスタンスに移行する
メッセージの蓄積やスプリットブレインなどのさまざまな安定性の問題を解決し、高並列性、分散型、および柔軟なスケーリングを実装する場合は、オープンソース RabbitMQ クラスタを ApsaraMQ for RabbitMQ に移行できます。 詳細については、「オープンソース RabbitMQ クラスタを ApsaraMQ for RabbitMQ インスタンスに移行する」をご参照ください。