ひとまずうんちく。
node
タイプは2
種類disc
はデータをDisk
上に保存、ram
はメモリ上の保存- デフォルトは
disc
ノード ram
ノードはパフォーマンス向上を望めるが耐障害性が低い- 反面
disc
ノードは耐障害性は担保されるがパフォーマンスが劣化する
- クラスタ内に少なくとも
1
台はdisc
ノードを設けた方が良い
heartbeat
は60
秒tcp
ポートの5672
にて監視
基本的には Erlang
のプロセスは残しつつ、RabbitMQ
のプロセスを落として色々と操作するようです。
Erlang
のプロセスを残したままRabbitMQ
を停止する
rabbitmqctl stop_app
- 設定変更する
rabbitmqctl change_cluster_node_type ram
RabbitMQ
のプロセスを再開
rabbitmqctl start_app
- 以下のようになりまっせ
...done.
-bash-4.1$ rabbitmqctl cluster_status
Cluster status of node 'rabbit@ip-xxx-xxx-0-162' ...
[{nodes,[{disc,['rabbit@ip-xxx-xxx-0-162','rabbit@ip-xxx-xxx-0-163']},
{ram,['rabbit@ip-xxx-xxx-0-43']}]},
{running_nodes,['rabbit@ip-xxx-xxx-0-43','rabbit@ip-xxx-xxx-0-163',
'rabbit@ip-xxx-xxx-0-162']},
{partitions,[]}]
...done.
-bash-4.1$
- 追加するノードで
Erlang
のプロセスを残したままRabbitMQ
を停止する
rabbitmqctl stop_app
reset
する
rabbitmqctl reset
join
する
rabbitmqctl join_cluster rabbit@ip-192-168-0-162
以下のようなメッセージ。
-bash-4.1$
-bash-4.1$ rabbitmqctl join_cluster rabbit@ip-192-168-0-162
Clustering node 'rabbit@ip-xxx-xxx-0-43' with 'rabbit@ip-xxx-xxx-0-162' ...
...done.
-bash-4.1$ rabbitmqctl start_app
Starting node 'rabbit@ip-xxx-xxx-0-43' ...
...done.
-bash-4.1$
- 確認
-bash-4.1$
-bash-4.1$ rabbitmqctl cluster_status
Cluster status of node 'rabbit@ip-xxx-xxx-0-162' ...
[{nodes,[{disc,['rabbit@ip-xxx-xxx-0-162','rabbit@ip-xxx-xxx-0-163',
'rabbit@ip-xxx-xxx-0-43']}]},
{running_nodes,['rabbit@ip-xxx-xxx-0-43','rabbit@ip-xxx-xxx-0-163',
'rabbit@ip-xxx-xxx-0-162']},
{partitions,[]}]
...done.
-bash-4.1$
Erlang
のプロセスを残したままRabbitMQ
を停止する
rabbitmqctl stop_app
この状態だとまだ完全に切り離されいない。
-bash-4.1$
-bash-4.1$ rabbitmqctl cluster_status
Cluster status of node 'rabbit@ip-xxx-xxx-0-162' ...
[{nodes,[{disc,['rabbit@ip-xxx-xxx-0-162','rabbit@ip-xxx-xxx-0-163']},
{ram,['rabbit@ip-xxx-xxx-0-43']}]},
{running_nodes,['rabbit@ip-xxx-xxx-0-163','rabbit@ip-xxx-xxx-0-162']},
{partitions,[]}]
...done.
-bash-4.1$
reset
する
rabbitmqctl reset
この状態で始めて切り離される。
-bash-4.1$ rabbitmqctl cluster_status
Cluster status of node 'rabbit@ip-xxx-xxx-0-162' ...
[{nodes,[{disc,['rabbit@ip-xxx-xxx-0-162','rabbit@ip-xxx-xxx-0-163']}]},
{running_nodes,['rabbit@ip-xxx-xxx-0-163','rabbit@ip-xxx-xxx-0-162']},
{partitions,[]}]
...done.
-bash-4.1$
RabbitMQ
のプロセスを再開
rabbitmqctl start_app
A slave is promoted to become the new master. The slave chosen for promotion is the eldest slave.
eldest slave
とあるので一番、稼働時間が長いスレーブがマスターに昇格することになる。