Docker コンテナを使用して RabbitMQ スタンドアロン マシンにクラスターをデプロイするには、1 つのマスターと 2 つのスレーブが必要です

1. コンテナを作成して接続を確立する

主myrabbit1:

docker run -d --hostname rabbit1 --name myrabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -p 15672:15672 -p 5672:5672 rabbitmq:3.11-management

myrabbit2 から myrabbit1 に接続するには:

docker run -d --hostname rabbit2 --name myrabbit2 -p 15673:15672 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.11-management

mytabbit3 から myrabbit1 と myrabbit2 を接続するには: 

docker run -d --hostname rabbit3 --name myrabbit3 -p 15674:15672 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.11-management

デプロイが成功したかどうかを確認します。

2. コンテナ構成クラスターに入る

まずコンテナ 1 に入り、コンテナをリセットします。

docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

 2 と 3 も同様に設定しますが、2 と 3 は 1 のクラスターに参加する必要があり、1 がマスター ノード、23 がスレーブ ノードになります。

docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit

パラメータ「-ram」はメモリ ノードとして設定されていることを示し、このパラメータが無視された場合はデフォルトでディスク ノードになります。

docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit

すべての構成が完了したら、rabbit1 に移動して、クラスターが形成されているかどうかを確認できます。

docker exec -it myrabbit1 bash
rabbitmqctl cluster_status
exit

結果は次のようになります。

xzd@xzd-virtual-machine:~$ docker exec -it myrabbit1 bash
root@rabbit1:/# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit1 ...

Basics

Cluster name: rabbit@rabbit1
Total CPU cores available cluster-wide: 4

Disk Nodes

rabbit@rabbit1

RAM Nodes

rabbit@rabbit2
rabbit@rabbit3

Running Nodes

rabbit@rabbit1
rabbit@rabbit2
rabbit@rabbit3

Versions

rabbit@rabbit1: RabbitMQ 3.11.11 on Erlang 25.3
rabbit@rabbit2:   on Erlang 
rabbit@rabbit3:   on Erlang 

CPU Cores

Node: rabbit@rabbit1, available CPU cores: 4
Node: rabbit@rabbit2, available CPU cores: 0
Node: rabbit@rabbit3, available CPU cores: 0

Maintenance status

Node: rabbit@rabbit1, status: not under maintenance
Node: rabbit@rabbit2, status: unknown
Node: rabbit@rabbit3, status: unknown

Alarms

(none)

Network Partitions

(none)

Listeners

Node: rabbit@rabbit1, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@rabbit1, interface: [::], port: 15692, protocol: http/prometheus, purpose: Prometheus exporter API over HTTP
Node: rabbit@rabbit1, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbit1, 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: direct_exchange_routing_v2, state: enabled
Flag: drop_unroutable_metric, state: enabled
Flag: empty_basic_get_metric, state: enabled
Flag: feature_flags_v2, state: enabled
Flag: implicit_default_bindings, state: enabled
Flag: listener_records_in_ets, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: quorum_queue, state: enabled
Flag: stream_queue, state: enabled
Flag: stream_single_active_consumer, state: enabled
Flag: tracking_records_in_ets, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled

これは、クラスターのデプロイが完了したことを意味します。

RabbitMQ ビジュアル インターフェイスに入って以下を確認することもできます。

IP アドレスを見つけます: http://192.168.235.132:15672/#/

ユーザー名: ゲスト パスワード: ゲスト

Enter を押すと、形成されたクラスターが表示されます 

 

3. 【番外編】管理者アカウントを設定する 

管理者アカウントを設定する目的は、すべての権限を取得できるアカウントを設定することです。

2 番目のステップが完了すると、次のマシンのいずれかをデプロイし、すべてをセットアップできます。

docker exec -it myrabbit1 bash
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
exit

docker exec -it myrabbit2 bash
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
exit

docker exec -it myrabbit3 bash
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
exit

おすすめ

転載: blog.csdn.net/Wannabe_hacker/article/details/129929955