RabbitMQ : クラスターを構成する2016/09/03 |
RabbitMQ クラスターを構成し、ノード間でキューを共有し、耐障害性を高めます。
ここでは例として RabbitMQ サーバー2台を使用してクラスターを構成します。 |
|
[1] |
こちらを参考に、クラスター構成ノード全てに RabbitMQ をインストールして起動しておきます。
(Firewalld を有効にしている場合は、リンク先の通りポートの許可も必要です) |
[2] | Firewalld を有効にしている場合は、追加で以下のポートの許可が必要です。 |
[root@dlp ~]# firewall-cmd --add-port={4369/tcp,25672/tcp} --permanent success [root@dlp ~]# firewall-cmd --reload success |
[3] | いずれかのノードからクラスター参加の設定をします。 |
# 事前にファイルの内容を他ノードと揃えておく [root@node01 ~]# ssh dlp.srv.world 'cat /var/lib/rabbitmq/.erlang.cookie' > /var/lib/rabbitmq/.erlang.cookie [root@node01 ~]# systemctl restart rabbitmq-server
# アプリケーションを停止してリセット [root@node01 ~]# rabbitmqctl stop_app Stopping node rabbit@node01 ... ...done. [root@node01 ~]# rabbitmqctl reset Resetting node rabbit@node01 ... ...done. # クラスター参加 (FQDN指定ではなくホスト名のみを指定) [root@node01 ~]# rabbitmqctl join_cluster rabbit@dlp Clustering node rabbit@node01 with rabbit@dlp ... ...done. # アプリケーション開始 [root@node01 ~]# rabbitmqctl start_app Starting node rabbit@node01 ... ...done. # ステータス確認 [root@node01 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@node01 ... [{nodes,[{disc,[rabbit@dlp,rabbit@node01]}]}, {running_nodes,[rabbit@dlp,rabbit@node01]}, {cluster_name,<<"rabbit@dlp.srv.world">>}, {partitions,[]}] ...done. |
[4] | キューの同期設定を実施します。 当例ではクラスター構成ノード全てでキューを同期するよう設定しますが、ノードの数を指定したり特定のノードを指定しての同期設定も可能です。 詳細は RabbitMQ 公式ドキュメントを参照ください。 ⇒ http://www.rabbitmq.com/ha.html |
# 同期させるキューを作成 [root@dlp ~]# rabbitmqadmin declare queue name=shared_queue queue declared # ポリシーを設定 # rabbitmqctl set_policy [ポリシー名(任意の名称)] [キュー] [モード] [root@dlp ~]# rabbitmqctl set_policy ha-policy "shared_queue" '{"ha-mode":"all"}' Setting policy "ha-policy" for pattern "shared_queue" to "{\"ha-mode\":\"all\"}" with priority "0" ... ...done. # ステータス確認 [root@dlp ~]# rabbitmqadmin list queues name node policy slave_nodes state synchronised_slave_nodes +--------------+------------+-----------+---------------+---------+--------------------------+ | name | node | policy | slave_nodes | state | synchronised_slave_nodes | +--------------+------------+-----------+---------------+---------+--------------------------+ | shared_queue | rabbit@dlp | ha-policy | rabbit@node01 | running | rabbit@node01 | +--------------+------------+-----------+---------------+---------+--------------------------+ |
[5] | 全ノードでリンク先の通り管理用のプラグインを有効にすると、以下のように Web 管理画面で各ノードのステータスが確認可能となります。 |
Sponsored Link |