1. Create a container and establish a connection
Main myrabbit1:
docker run -d --hostname rabbit1 --name myrabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -p 15672:15672 -p 5672:5672 rabbitmq:3.11-management
To connect to myrabbit1 from myrabbit2:
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
From mytabbit3 to connect myrabbit1 and 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
Check whether the deployment is successful:
2. Enter the container configuration cluster
First enter container 1 and reset the container:
docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit
Configure 2 and 3 in the same way, but 2 and 3 need to join the cluster of 1, with 1 as the master node and 23 as the slave node:
docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit
The parameter "–ram" indicates that it is set as a memory node, and if this parameter is ignored, it defaults to a disk node.
docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit
After everything is configured, you can go to rabbit1 to see if a cluster is formed:
docker exec -it myrabbit1 bash
rabbitmqctl cluster_status
exit
You can see the result is:
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
It means that the cluster deployment has been completed!
We can also enter the RabbitMQ visual interface to check:
Find the IP address: http://192.168.235.132:15672/#/
Username: guest Password: guest
Enter to view the clusters that have been formed
3. [Extra] Set up an administrator account
The purpose of setting up an administrator account is to set up one that can obtain all permissions.
If the second step is completed, any one of the following machines can be deployed, and all can be set up.
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