CentOS 7にRabbitMQをインストールする手順

目的と対象読者
このガイドは、CentOS 7上でRabbitMQを動かしたいシステム管理者や開発者向けです。RabbitMQはErlangで書かれたオープンソースのメッセージブローカーです。AMQPなど複数プロトコルをサポートし、管理用のHTTP APIとWeb UIを提供します。
重要用語:
- RabbitMQ:メッセージブローカー。メッセージ送受信を仲介します。
- Erlang:RabbitMQ自体が実装されているランタイム言語。
前提条件
- 最小限のCentOS 7サーバー
- root権限(sudoユーザーの場合は sudo -i を実行)
変更前の準備とシステム更新
インストール前にパッケージとリポジトリを最新にします。
yum -y update
アップデート完了後、Erlangのインストールへ進みます。
Erlangをインストールする
RabbitMQはErlangランタイムを必要とします。ErlangはデフォルトのYUMリポジトリに存在しないため、EPELリポジトリを有効化します。
yum -y install epel-release
yum -y update
その後、Erlangとsocatをインストールします。
yum -y install erlang socat
インストール後、Erlangのバージョン確認は次のコマンドで行えます。
erl -version
Erlangシェルに入るには:
erl
シェルから抜けるには Ctrl + C を2回押します。
RabbitMQをインストールする
RabbitMQはRPMパッケージで配布されています。まずパッケージをダウンロードします(以下は例として特定バージョンを示します)。
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
もしwgetが無ければ、
yum -y install wget
GPGキーをインポートします。
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
RPMをインストールします。
rpm -Uvh rabbitmq-server-3.6.10-1.el7.noarch.rpm
これでRabbitMQパッケージがシステムにインストールされます。
RabbitMQを起動して自動起動を設定する
サービスを起動します。
systemctl start rabbitmq-server
ブート時に自動起動させるには:
systemctl enable rabbitmq-server
ステータス確認:
systemctl status rabbitmq-server
正常に起動していれば Active: active (running) のような出力が得られます。
ファイアウォールとSELinuxの設定
RabbitMQは複数ポートを利用します。firewalldを使用している場合は必要なポートを開放してください。
firewall-cmd --zone=public --permanent --add-port=4369/tcp
firewall-cmd --zone=public --permanent --add-port=25672/tcp
firewall-cmd --zone=public --permanent --add-port=5671-5672/tcp
firewall-cmd --zone=public --permanent --add-port=15672/tcp
firewall-cmd --zone=public --permanent --add-port=61613-61614/tcp
firewall-cmd --zone=public --permanent --add-port=1883/tcp
firewall-cmd --zone=public --permanent --add-port=8883/tcp
firewall-cmd --reload
よく使うポートの説明(短く):
- 4369:epmd(Erlangノード検出)
- 25672:ノード間通信(クラスタリング)
- 5671/5672:AMQP(5671はTLS用、5672は平文)
- 15672:管理用HTTP(Web UI)
- 61613-61614:STOMP
- 1883/8883:MQTT(8883はTLS用)
SELinuxが有効な場合、RabbitMQに必要なブールを有効化します。
setsebool -P nis_enabled 1
注意:実運用環境ではより限定的なポリシー設定やファイルコンテキストの調整が必要な場合があります。
管理用Webコンソールにアクセスする
管理コンソール(rabbitmq_managementプラグイン)を有効にします。
rabbitmq-plugins enable rabbitmq_management
RabbitMQのファイル所有者をrabbitmqユーザーに設定します。
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
管理者ユーザーを作成します(admin と StrongPassword は例です。実運用では強力なパスワードを使用してください)。
rabbitmqctl add_user admin StrongPassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
管理コンソールへはブラウザで次のURLにアクセスします(Your_Server_IPを実際のIPに置換)。
http://Your_Server_IP:15672/
以下はログイン画面とダッシュボードの例です。ALTは日本語で説明を付けています。
ログイン後に管理ダッシュボードが表示されます。
ユーザー、仮想ホスト、ポリシーは「Admin」タブで管理できます。セキュリティのためデフォルトの Guest ユーザーは削除または無効化することを推奨します。
キューの一覧は「Queues」タブで確認・作成・削除が可能です。
現在の接続は「Connections」タブで確認できます。
チャンネルやエクスチェンジはそれぞれのタブで管理できます。
セキュリティチェックリスト(運用前)
- 管理者アカウントに強力なパスワードを設定する
- ゲストユーザーを削除またはローカル接続のみ許可にする(例: rabbitmqctl delete_user guest)
- TLSを有効にしてAMQPと管理APIを暗号化する
- 必要なポートのみを開放する(上記ポート表を参照)
- クラスタを構築する場合はノード間通信を内部ネットワークに限定する
運用者/開発者別チェックリスト
- 管理者:バックアップポリシー、ユーザー管理、証明書更新手順
- 運用:ログローテーション、モニタリング(メモリ/FD/接続数)、アラート閾値
- 開発者:クライアントライブラリ(言語別)、接続の再試行ロジック、確認用のテストキュー
トラブルシューティングのヒント
- サービスが起動しない:systemctl status と journalctl -u rabbitmq-server を確認
- ポートに接続できない:firewall-cmd –list-all でゾーン設定を確認
- Erlangのバージョン不整合:rabbitmqはErlangの特定レンジに依存する場合があるためRabbitMQの互換性表を参照
- プラグインが有効にならない:rabbitmq-plugins list で状態を確認し、ログを確認
よくある失敗例と回避策
- 失敗例:ファイアウォールで15672を閉じたまま管理画面にアクセスしようとする。回避策:事前に必要ポートを開放する。
- 失敗例:クラスタ化時に25672をブロックしてノードが参加できない。回避策:ノード間通信を許可する。
- 失敗例:Erlangのバージョンが古すぎる/新しすぎる。回避策:RabbitMQの推奨Erlangバージョンを確認する。
受け入れ基準
- systemctl status rabbitmq-server が active (running) を示すこと
- 管理コンソールへブラウザでアクセスし、ログインできること
- 必要なポートが firewall-cmd –list-ports で開いていること
- 管理者ユーザーが作成され、Guestユーザーが無効化または削除されていること
簡易導入フロー(Mermaid)
flowchart TD
A[サーバ準備] --> B[システム更新]
B --> C[EPEL有効化]
C --> D[Erlangインストール]
D --> E[RabbitMQ RPMダウンロード]
E --> F[RPMインストール]
F --> G[サービス起動]
G --> H[ファイアウォール/SELinux設定]
H --> I[管理コンソール有効化]
I --> J[管理ユーザー作成]
J --> K[動作確認]
まとめ
このガイドではCentOS 7上にRabbitMQをインストールし、基本的な起動、ファイアウォールとSELinuxの調整、管理コンソールの有効化、管理ユーザーの作成までを解説しました。実運用ではTLSや監視、バックアップなどを追加で検討してください。
要点:
- Erlangを先に入れること
- 管理コンソールはrabbitmq_managementプラグインで有効化
- 必要なポートとSELinux設定を忘れない
1行用語集:
- AMQP:アプリケーション間でメッセージを送受信するための標準プロトコル
参考:RabbitMQ公式サイトで最新の互換性情報やベストプラクティスを確認してください。