This guide explains how to install RabbitMQ on multiple nodes, configure clustering using the classic config method, and ensure all nodes are correctly connected in a RabbitMQ cluster.
Install Dependencies
sudo apt install curl gnupg apt-transport-https -y
Add RabbitMQ Repositories
Create the repository file
sudo vim /etc/apt/sources.list.d/rabbitmq.list
Paste the following content
### Zakops.com
## Provides modern Erlang/OTP releases
deb [arch=amd64 trusted=yes] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
deb-src [trusted=yes] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
# another mirror for redundancy
deb [arch=amd64 trusted=yes] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
deb-src [trusted=yes] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
## Provides RabbitMQ
deb [arch=amd64 trusted=yes] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
deb-src [trusted=yes] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
# another mirror for redundancy
deb [arch=amd64 trusted=yes] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
deb-src [trusted=yes] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
Update and Install Erlang & RabbitMQ
sudo apt update -y
sudo apt upgrade -y
Install Erlang
sudo apt install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
Install RabbitMQ
sudo apt install rabbitmq-server -y --fix-missing
Set Hostname Resolution
Edit the /etc/hosts
file on all nodes
sudo vim /etc/hosts
Add the following
192.168.100.1 rabbit-1
192.168.100.2 rabbit-2
192.168.100.3 rabbit-3
Synchronize the Erlang Cookie
On the first node
cat /var/lib/rabbitmq/.erlang.cookie
Example
AKOSMIUZADXDWQUEPTWL
Copy this to all nodes
echo "AKOSMIUZADXDWQUEPTWL" | sudo tee /var/lib/rabbitmq/.erlang.cookie
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
Configure the Cluster
sudo vim /etc/rabbitmq/rabbitmq.conf
Add this to all nodes
cluster_formation.peer_discovery_backend = classic_config
cluster_formation.classic_config.nodes.1 = rabbit@rabbit-1
cluster_formation.classic_config.nodes.2 = rabbit@rabbit-2
cluster_formation.classic_config.nodes.3 = rabbit@rabbit-3
Configure the Firewall
Open the following ports in the firewall
5672
25672
4369
15672
Incorrect firewall changes can lead to service disruptions or security breaches.
Join the Cluster
On each node, one at a time
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl start_app
Verify
Your RabbitMQ cluster should now be up and running. Verify it using
sudo rabbitmqctl cluster_status
Enable the Management Plugin
Run this command on your RabbitMQ nodes
rabbitmq-plugins enable rabbitmq_management
If you encounter an error while enabling or using the RabbitMQ Management Plugin
sudo chown rabbitmq:rabbitmq /etc/rabbitmq/
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl start_app
Access the Web Interface
URL: http://<your-rabbitmq-nodes>:15672
Creating a New User
rabbitmqctl add_user <username> <password>
#Example
rabbitmqctl add_user admin MySecurePassword123
Set User Tags (Optional)
Assign administrator privileges
rabbitmqctl set_user_tags admin administrator
Verify the User
List all users to confirm
rabbitmqctl list_users