<mohammadrony>

RabbitMQ Cluster

Prerequisites

Update hosts

sudo tee -a /etc/hosts << EOF
192.168.0.101 rabbitmq-1
192.168.0.102 rabbitmq-2
192.168.0.103 rabbitmq-3
EOF
sudo apt install -y curl gnupg apt-transport-https -y

Configuration

Package Install

Add gpg keys

curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /etc/apt/keyrings/com.rabbitmq.team.gpg > /dev/null
curl -1sLf "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf77f1eda57ebb1cc" | sudo gpg --dearmor | sudo tee /etc/apt/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg > /dev/null
curl -1sLf "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey" | sudo gpg --dearmor | sudo tee /etc/apt/keyrings/io.packagecloud.rabbitmq.gpg > /dev/null

Add package source

sudo tee -a /etc/apt/sources.list.d/rabbitmq.list << EOF
deb [signed-by=/etc/apt/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu jammy main
deb-src [signed-by=/etc/apt/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu jammy main
deb [signed-by=/etc/apt/keyrings/io.packagecloud.rabbitmq.gpg] https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ jammy main
deb-src [signed-by=/etc/apt/keyrings/io.packagecloud.rabbitmq.gpg] https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ jammy main
EOF

Update package source list

sudo apt update

Install rabbitmq server

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-manpages \
  erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
sudo apt install -y rabbitmq-server

Check status

systemctl status rabbitmq-server

Clustering

Updater erlang cookie for clustering

cd /var/lib/rabbitmq/
sudo chmod 600 .erlang.cookie
sudo tee .erlang.cookie << EOF
12345
EOF
sudo chmod 400 .erlang.cookie
ls -al /var/lib/rabbitmq/
sudo cat /var/lib/rabbitmq/.erlang.cookie

Restart service

sudo systemctl restart rabbitmq-server

Join cluster

sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster rabbit@rabbitmq-1
sudo rabbitmqctl start_app

RabbitMQ Management

sudo rabbitmq-plugins list

Enable management plugin

sudo rabbitmq-plugins enable rabbitmq_management rabbitmq_prometheus
sudo rabbitmqctl list_feature_flags
sudo rabbitmqctl enable_feature_flag all # name

Add user

sudo rabbitmqctl add_user admin admin

Set permission

sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
sudo rabbitmqctl set_permissions --vhost / admin ".*" ".*" ".*"

Change user password

sudo rabbitmqctl change_password <user> <password>

Management Console Configuration

Login

  • Open rabbitmq management console and Use admin username and admin password to login.
  • Update current password
    • admin settings > Update this user > Enter password > Update user.

Import definition

  • Goto Overview page > Import definitions > Select Definitions file > Upload broker definitions.

Export definition

  • Goto Overview page > Export definitions > Enter filename > Select Virtual host > Download broker definitions.

Cleanup

Stop rabbitmq service

sudo systemctl disable --now rabbitmq-server

Remove package source

sudo rm /etc/apt/sources.list.d/rabbitmq.list
sudo rm /etc/apt/keyrings/*rabbitmq* -rf

Remove rabbitmq server

sudo apt remove -y rabbitmq-server

Remove related packages

sudo apt remove -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-manpages \
  erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl