RabbitMQ · 1 min read · Dec 21, 2025

Ubuntu 22.04にRabbitMQクラスタをインストールする方法

RabbitMQは無料でオープンソースのメッセージブローカーです。複数のメッセージプロトコルをサポートしており、RabbitMQはインターネット上で最も広く使用されているメッセージブローカーです。AMQP、STOMP、MQTT、HTTP、WebSocketsなどのプロトコルや、RabbitMQ Streamをサポートしています。

RabbitMQはJMS 1.1標準に完全に準拠しており、小規模から中規模、大規模な展開環境まで、さまざまな開発シナリオに適しています。

メッセージブローカーとして、RabbitMQはアプリケーション間に位置し、非同期的かつ信頼性が高く便利に通信できるようにします。RabbitMQはアプリケーション間の一時的なストレージを提供し、データ損失から保護します。

このチュートリアルでは、複数のUbuntu 22.04マシン間にRabbitMQサーバーをインストールして設定します。また、RabbitMQの管理者ユーザーを設定し、HAポリシーを介してクラシックキューのミラーリングを設定する方法も学びます。

前提条件

このガイドを完了するには、以下の要件が必要です:

  • 2台以上のUbuntu 22.04サーバー - この例では、3台のUbuntuマシン、’rabbitmq1‘、’rabbitmq2‘、および’rabbitmq3‘を使用します。
  • sudo/root管理者権限を持つ非ルートユーザー。

マシンの準備

始める前に、システムリポジトリを更新してリフレッシュします。その後、各サーバーの/etc/hostsファイルを設定して、サーバーがシステムホスト名を介して接続できるようにします。

以下のaptコマンドを使用して、Ubuntuパッケージリポジトリを更新してリフレッシュします。

sudo apt update

次に、以下のnanoエディタコマンドを使用して’/etc/hosts’ファイルを編集します。

sudo nano /etc/hosts

以下の設定を追加し、各IPアドレスとホスト名を現在の環境の詳細に変更してください。

192.168.5.21    rabbitmq1  
192.168.5.22    rabbitmq2  
192.168.5.23    rabbitmq3

ファイルを保存して、終了したらエディタを終了します。すべてのUbuntuサーバーが準備できたら、RabbitMQをインストールしてクラスタを設定します。

RabbitMQサーバーのインストール

Ubuntuマシンの準備ができたら、ターゲットマシンすべてにRabbitMQサーバーをインストールする準備が整いました。デフォルトのUbuntu 22.04リポジトリは、APTを介して簡単にインストールできる最新の安定版RabbitMQを提供します。

以下のaptコマンドを実行して、Ubuntuパッケージインデックスを更新してリフレッシュします。

update repo

以下のaptコマンドを使用してRabbitMQをインストールします。

sudo apt install rabbitmq-server

これにより確認が求められますので、yを入力して確認し、ENTERを押して続行します。

install rabbitmq

RabbitMQがインストールされたら、以下のsystemctlコマンドを実行してRabbitMQサービスを確認し、サービスが有効で実行中であることを確認します。

sudo systemctl is-enabled rabbitmq-server  
sudo systemctl status rabbitmq-server

出力 - RabbitMQが実行中であり、有効であることが確認できます。RabbitMQは起動時に自動的に実行されます。

check rabbitmq service

RabbitMQサーバーがインストールされたので、次にRabbitMQプラグイン’rabbitmq_management‘を有効にします。

RabbitMQ管理プラグインの有効化

RabbitMQは、Webブラウザを介してRabbitMQノードとクラスタを管理および監視するための管理プラグインを提供します。’rabbitmq_management‘プラグインは、コマンドラインツール’rabbitmqadmin‘と同様の機能を持つHTTPベースのAPIです。

RabbitMQクラスタの設定を開始する前に、ターゲットマシンで’rabbitmq_management‘プラグインを有効にします。

以下の’rabbitmq-plugins’コマンドを使用してRabbitMQプラグイン’rabbitmq_management’を有効にします。このコマンドは、’rabbitmq_management‘に必要なプラグインも有効にします。

sudo rabbitmq-plugins enable rabbitmq_management

次に、RabbitMQサービスを再起動して新しい変更を適用し、’rabbitmq_management‘プラグインを有効にします。

sudo systemctl restart rabbitmq-server

rabbitmq_management enable

デフォルトの’rabbitmq_management’プラグインは、デフォルトポート’15672‘で実行されています。以下のssコマンドを実行して、rabbitmq_managementポート’15672‘が開いていることを確認します。

ss -plnt

出力 - rabbitmq_managementポートがアクティブで開いています。

verify port

UFWファイアウォールの設定

RabbitMQ管理プラグインを有効にした後、すべてのシステムでUFWファイアウォールを設定します。デフォルトのUbuntuインストールにはUFWパッケージがインストールされているため、UFWファイアウォールプロセスを簡単に開始および有効にできます。

以下のufwコマンドを実行してOpenSSHサービスを追加し、ufwファイアウォールを有効にします。

sudo ufw allow OpenSSH  
sudo ufw enable

確認を求められたら、yを入力して確認し、ENTERを押して続行します。これでufwファイアウォールが実行され、有効になっているはずです。

enable ufw

次に、以下のufwコマンドを使用してRabbitMQクラスタ用のTCPポートをいくつか開きます。その後、ufwファイアウォールを再読み込みして新しい変更を適用します。

sudo ufw allow 15672/tcp  
sudo ufw allow 5672/tcp  
sudo ufw allow 4369/tcp  
sudo ufw allow 25672/tcp  
sudo ufw reload

allow ufw

最後に、以下のufwコマンドを実行してRabbitMQポートがufwファイアウォールに追加されていることを確認します。

sudo ufw status

出力 - RabbitMQクラスタで使用されるいくつかのポートがufwファイアウォールに追加されました。

verify ufw

RabbitMQクラスタの設定

rabbitmq_management‘プラグインを有効にし、ufwファイアウォールを設定した後、’rabbitmqctl’コマンドを使用してRabbitMQクラスタの作成と設定を開始します。

すべてのRabbitMQインストールには、’/var/lib/rabbitmq’ディレクトリに’.erlang.cookie’ファイルがあります。クラスタを設定するには、クラスタ全体のすべてのノードが同じ’.erlang.cookie’ファイルを持っていることを確認する必要があります。

この例では、’rabbitmq1‘を最初の初期クラスタとして使用するため、’.erlang.cookie’ファイルを’rabbitmq2‘および’rabbitmq3‘サーバーにコピー/転送する必要があります。

rabbitmq1‘サーバーで、以下のコマンドを実行して’.erlang.cookie’ファイルを確認し、ファイルが利用可能であることを確認します。

ls -lah /var/lib/rabbitmq/

次に、’.erlang.cookie’ファイルを’rabbitmq2‘および’rabbitmq3‘サーバーにコピー/転送します。この例では、SCPコマンドを使用して’.erlang.cookie’ファイルをサーバー’192.168.5.22‘および’192.168.5.23‘にコピーします。

scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/  
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/

‘.erlang.cookie’ファイルがコピー/転送されたら、作業サーバーセッションを’rabbitmq2‘および’rabbitmq3‘に移動します。

copy erlang cookie file

rabbitmq2‘および’rabbitmq3‘の両方で以下のコマンドを実行してRabbitMQサービスを再起動し、新しい変更を適用します。その後、RabbitMQアプリケーションを停止します。

sudo systemctl restart rabbitmq-server  
sudo rabbitmqctl stop_app

以下は’rabbitmq2‘サーバーの出力です。

以下は’rabbitmq3‘サーバーの出力です。

その後、以下のコマンドを使用して’rabbitmq2‘および’rabbitmq3‘サーバーをRabbitMQクラスタに追加します。次に、RabbitMQアプリケーションを開始します。

sudo rabbitmqctl join_cluster rabbit@rabbitmq1  
sudo rabbitmqctl start_app

以下は’rabbitmq2‘がRabbitMQクラスタに参加し、RabbitMQアプリケーションを開始する際の出力です。

rabbitmq2 join cluster

以下は’rabbitmq3‘がRabbitMQクラスタに参加し、RabbitMQアプリケーションを開始する際の出力です。

rabbitmq3 join cluster

最後に、’rabbitmq1‘サーバーに戻り、以下のコマンドを実行してRabbitMQクラスタの状態を確認します。

sudo rabbitmqctl cluster_status

RabbitMQクラスタが’rabbitmq1‘、’rabbitmq2‘、および’rabbitmq3‘の3つのノードで作成されていることが確認できます。また、各ノードのRabbitMQの現在のバージョンとクラスタ全体のノードのメンテナンス状況も確認できます。

rabbitmq cluster status

RabbitMQ管理者の設定

RabbitMQクラスタが作成されたので、’rabbitmqctl’を介してRabbitMQサーバーの新しい管理者ユーザーを作成および設定します。これはRabbitMQサーバーを管理するための主要なコマンドラインです。

以下のコマンドを実行して新しいRabbitMQユーザーを追加します。この例では、ユーザー’alice‘をRabbitMQに追加します。また、新しいパスワードに変更する必要があります。

sudo rabbitmqctl add_user alice password

次に、以下のコマンドを実行して新しいユーザー’alice’をRabbitMQクラスタの管理者にします。

sudo rabbitmqctl set_user_tags alice administrator

ユーザー’alice’にRabbitMQクラスタ内のすべてのエンティティに対する権限を設定します。

sudo rabbitmqctl set_permissions -p / alice ".*" ".*" ".*"

次に、以下のコマンドを実行してRabbitMQインストールからデフォルトユーザー’guest’を削除します。

sudo rabbitmqctl delete_user guest

RabbitMQで利用可能なユーザーのリストを確認します。新しいユーザー’alice’が作成され、RabbitMQサーバーの管理者として使用できることが確認できます。

sudo rabbitmqctl list_users

setup admin user

これで、RabbitMQクラスタのインストールと設定が完了し、RabbitMQの管理者が設定されました。次に、RabbitMQポリシーを介してクラシックキューのミラーリングを設定します。

クラシックキューのミラーリングの設定

RabbitMQは、ミラーリングキューを設定するための2つの方法を提供します。RabbitMQポリシーを介してクラシックキューのミラーリングを使用するか、クオーラムキューを使用して設定できます。

この例では、RabbitMQポリシーを介してキューのミラーリングを設定する方法を学びます。

以下のコマンドを実行して新しいポリシー’ha-all‘を作成します。このポリシーは、すべてのキューがRabbitMQクラスタのノード間でミラーリングされることを許可します。

sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'

クラスタ全体でミラーリングされるキューを指定したい場合は、この例では、名前が’two‘のキューをミラーリングする新しいポリシー’ha-two-‘を作成します。

sudo rabbitmqctl set_policy ha-two "^two\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

最後に、RabbitMQクラスタの特定のノードにミラーリングされるキューを設定する新しいポリシー’ha-nodes‘を作成することもできます。この例では、名前が’nodes‘のキューを特定のノード’rabbitmq2‘および’rabbitmq3‘にミラーリングします。

sudo rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["rabbit@rabbitmq2", "rabbit@rabbitmq3"]}'

以下のコマンドを使用してRabbitMQクラスタのポリシーのリストを確認します。ポリシー’ha-all‘、’ha-two‘、および’ha-nodes‘がRabbitMQクラスタに存在することが確認できます。

sudo rabbitmqctl list_policies

RabbitMQ管理プラグインを介してRabbitMQクラスタにアクセス

Webブラウザを開き、サーバーのIPアドレスの後にデフォルトのRabbitMQポート15672を追加してアクセスします(例:http://192.168.5.21)。RabbitMQのログインページが表示されます。

作成した新しいユーザーとパスワードでログインし、’Login‘をクリックします。

rabbitmq login

RabbitMQ管理ダッシュボードが’rabbitmq_management‘プラグインによって提供されていることが確認できます。

rabbitmq dashboard

次に、’Admin‘タブをクリックし、’Policies‘をクリックして、作成したRabbitMQポリシーが利用可能であることを確認します。

以下のスクリーンショットでは、3つの異なるポリシー、’ha-all‘、’ha-two‘、および’ha-nodes‘が表示されています。

list policies

結論

おめでとうございます!RabbitMQサーバーをインストールし、3台のUbuntu 22.04サーバーでRabbitMQクラスタを構成しました。また、RabbitMQの展開を保護するためにUFWファイアウォールを設定し、RabbitMQの管理者ユーザーを構成し、RabbitMQポリシーを介してRabbitMQクラスタでクラシックキューのミラーリングを作成しました。

これにより、RabbitMQをアプリケーションとインフラストラクチャのメッセージブローカーとして使用できるようになります。ただし、クオーラムキューの設定、TLSを介したRabbitMQのセキュリティ強化など、RabbitMQの展開を次のレベルに引き上げることもできます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。