Debian 13 trixie

RabbitMQ : クラスターを構成する2025/10/10

 

RabbitMQ クラスターを構成し、ノード間でキューを共有し、耐障害性を高めます。
当例では RabbitMQ サーバー 2 台を使用してクラスターを構成します。

[1]

こちらを参考に、クラスター構成ノード全てに RabbitMQ をインストールして起動しておきます

[2] 全ノードで、一意なノード名を設定しておきます。
root@node01:~#
vi /etc/rabbitmq/rabbitmq-env.conf
# 5行目 : コメント解除して任意の一意なノード名に変更

NODENAME=
rabbit01
root@node01:~#
systemctl restart rabbitmq-server
root@node01:~#
rabbitmqctl eval "node()."

rabbit01@node01
[3] いずれかのノードからクラスター参加の設定をします。
# 事前にファイルの内容を他ノードと揃えておく

root@node02:~#
ssh node01.srv.world 'cat /var/lib/rabbitmq/.erlang.cookie' > /var/lib/rabbitmq/.erlang.cookie

root@node02:~#
systemctl restart rabbitmq-server
# アプリケーションを停止してリセット

root@node02:~#
rabbitmqctl stop_app

Stopping rabbit application on node rabbit02@node02 ...
root@node02:~#
rabbitmqctl reset

Resetting node rabbit02@node02 ...
# クラスター参加
# FQDN 指定ではなくホスト名のみを指定

root@node02:~#
rabbitmqctl join_cluster rabbit01@node01

# アプリケーション開始

root@node02:~#
rabbitmqctl start_app

# ステータス確認

root@node02:~#
rabbitmqctl cluster_status

Cluster status of node rabbit02@node02 ...
Basics

Cluster name: rabbit02@node02.srv.world
Total CPU cores available cluster-wide: 4

Cluster Tags

(none)

Disk Nodes

rabbit01@node01
rabbit02@node02

Running Nodes

rabbit01@node01
rabbit02@node02

Versions

rabbit02@node02: RabbitMQ 4.0.5 on Erlang 27.3.4.1
rabbit01@node01: RabbitMQ 4.0.5 on Erlang 27.3.4.1

CPU Cores

Node: rabbit02@node02, available CPU cores: 2
Node: rabbit01@node01, available CPU cores: 2

Maintenance status

Node: rabbit02@node02, status: not under maintenance
Node: rabbit01@node01, status: not under maintenance

Alarms

(none)

Network Partitions

(none)

Listeners

Node: rabbit02@node02, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit02@node02, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit02@node02, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit01@node01, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit01@node01, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0

Feature flags

Flag: classic_mirrored_queue_version, state: enabled
Flag: classic_queue_type_delivery_support, state: enabled
Flag: detailed_queues_endpoint, state: disabled
Flag: direct_exchange_routing_v2, state: enabled
Flag: drop_unroutable_metric, state: enabled
.....
.....
[4] 全ノードでリンク先の通り管理用のプラグインを有効にすると、以下のように Web 管理画面で各ノードのステータスが確認可能となります。
関連コンテンツ