pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

OpenStack環境構築メモ(RabbitMQクラスタセットアップ)

①RabbitMQ Serverインストール&停止

$ sudo apt -y install rabbitmq-server 
$ sudo systemctl stop rabbitmq-server

 

Erlang クッキーファイル設定

/var/lib/rabbitmq/.erlang.cookie
3台のサーバで上記ファイル内容を同一にする
 

③rabbitmq-server起動

$ sudo systemctl start rabbitmq-server.service

 

クラスタ組み込み

2,3号機で以下を実施

$ sudo rabbitmqctl stop_app
$ sudo rabbitmqctl join_cluster --ram rabbit@cnt1
$ sudo rabbitmqctl start_app

※モードはramとdiscの2種類あり。ramモードはキューデータをramに格納(電源障害時データ保護なし)。discモードはramとディスク両方に格納。HAキューミラー構成時は、1台でもdiscがあれば保護レベルは担保されるため、2,3号機はramモードで起動させる。詳細はmanのrabbitmqctlを参照。
 

⑤以下コマンドを実行してクラスタ状態を確認

$ sudo rabbitmqctl cluster_status
Cluster status of node rabbit@cnt2 ...
[{nodes,[{disc,[rabbit@cnt1]},{ram,[rabbit@cnt3,rabbit@cnt2]}]},
 {running_nodes,[rabbit@cnt3,rabbit@cnt1,rabbit@cnt2]},
 {cluster_name,<<"rabbit@cnt1.pikesaku.net">>},
 {partitions,[]}]
$

※running_nodesに3サーバあること
 

⑥キューミラー設定

1号機で以下を実施

$ sudo rabbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'

※この(?!amq¥.)は以下URLの「先読み否定グループ」。"amq."で始まるもの以外全ての意味。
正規表現サンプル集
 

補足

システム起動時はクラスタの親である1号機が先に起動している状態で、2,3号機を起動する必要あり。
2,3号機はrabbitmqctl join_clusterで1号機のクラスタに属している。また1号機がdiscモードであり永続的にデータを持っている。