Article Directory
Environmental preparation
Node name | ip address |
---|---|
node1 | 192.168.130.20 |
node2 | 192.168.130.19 |
node3 | 192.168.130.21 |
Install docker
slightly
Modify host (modify for each node)
The first name is the name of the host and the second is the name used to build the cluster (--hostname)
192.168.130.20 rq-node1
192.168.130.19 rq-node2
192.168.130.21 rq-node3
Install rabbitmq stand-alone
mkdir -p /root/rabbitm_sg/data
docker run -d --network=host \
--hostname rq-node --name rq-node \
-v /root/rabbitmq_sg/data:/var/lib/rabbitmq \
-p 15673:15672 -p 5673:5672 \
-e RABBITMQ_ERLANG_COOKIE='helloCookie' \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin1234 \
rabbitmq:3.7-management
Install rabbitmq cluster
Create directory (per node)
mkdir -p /root/rabbitmq/data
start up
node1
docker run -d --network=host \
--hostname rq-node1 --name rq-node1 \
-v /root/rabbitmq/data:/var/lib/rabbitmq \
-p 15672:15672 -p 5672:5672 \
-e RABBITMQ_ERLANG_COOKIE='helloCookie' \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin1234 \
rabbitmq:3.7-management
node2
docker run -d --network=host \
--hostname rq-node2 --name rq-node2 \
-v /root/rabbitmq/data:/var/lib/rabbitmq \
-p 15672:15672 -p 5672:5672 \
-e RABBITMQ_ERLANG_COOKIE='helloCookie' \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin1234 \
rabbitmq:3.7-management
node3
docker run -d --network=host \
--hostname rq-node3 --name rq-node3 \
-v /root/rabbitmq/data:/var/lib/rabbitmq \
-p 15672:15672 -p 5672:5672 \
-e RABBITMQ_ERLANG_COOKIE='helloCookie' \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin1234 \
rabbitmq:3.7-management
RABBITMQ_ERLANG_COOKIE needs to be consistent and content is arbitrary (required for cluster synchronization)
Join the cluster
node1
docker exec -it rq-node1 sh
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
node2
docker exec -it rq-node2 sh
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rq-node1
rabbitmqctl start_app
node3
docker exec -it rq-node3 sh
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rq-node1
rabbitmqctl start_app
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
Check cluster status
Enter the container and execute the following command
rabbitmqctl cluster_status
You can also use a browser to open a node: http://192.168.130.20:15672
enter the username and password (set above) and log in to view Nodes