RabbitMQ is an open source message broker that supports multiple messaging protocols, including Advanced Message Queuing Protocol (AMQP), Message Queuing Telemetry Transport (MQTT), Streaming Text Oriented Messaging Protocol (STOMP), HTTP, and WebSockets. RabbitMQ is easy to use, extensible, and highly available. RabbitMQ coordinates and manages communication in distributed systems, and implements asynchronous messaging to improve system decoupling, scalability, concurrent processing capabilities, and fault tolerance. RabbitMQ is widely used in messaging and task processing of enterprise-level applications because of its stable performance, diverse features, and active community support. This topic describes how to deploy open source RabbitMQ on an Elastic Compute Service (ECS) instance.
Procedure
Manual deployment: This method is suitable for users who have a basic knowledge of Linux commands and can perform custom RabbitMQ deployment.
Quick deployment: This method uses Alibaba Cloud Marketplace images to eliminate the need to install and configure RabbitMQ and greatly reduce the deployment time. The prices displayed on the image product pages in Alibaba Cloud Marketplace shall prevail.
Manually deploy RabbitMQ on a Ubuntu or Debian instance
This example describes how to install the latest version of RabbitMQ. For information about how to install other versions of RabbitMQ, see Installing RabbitMQ.
Prerequisites
An ECS instance that meets the following requirements is created:
The instance is associated with an auto-assigned public IP address or an elastic IP address (EIP). For more information, see Associate or disassociate an EIP.
Operating system: Ubuntu 20.04, Ubuntu 22.04, or Debian 11.0 to Debian 12.5.
For information about other supported operating systems and installation methods, see Installing RabbitMQ.
Security group rules: Inbound security group rules are added to allow traffic from ports 22, 80, and 15672.
NoteTo connect to the RabbitMQ server by using the MQ tool, you must also open port 5672.
Procedure
Connect to the instance on which you want to deploy RabbitMQ.
For more information, see Connect to a Linux instance by using a password or key.
Install RabbitMQ.
Install basic RabbitMQ dependencies.
sudo apt-get install curl gnupg apt-transport-https -y
Download the GNU Privacy Guard (GPG) public keys for RabbitMQ and Erlang and add the public key information to the trust keyring of the operating system.
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
Add the official Advanced Packaging Tool (APT) repositories for RabbitMQ and Erlang to the
/etc/apt/sources.list.d/rabbitmq.list
file.sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main EOF
Update the local package indexes.
sudo apt-get update -y
Install Erlang-related packages.
sudo apt-get 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-get install rabbitmq-server -y --fix-missing
Configure RabbitMQ.
Configure RabbitMQ to start on instance startup and start RabbitMQ.
sudo systemctl enable rabbitmq-server sudo systemctl start rabbitmq-server
To ensure security, we recommend that you run the following command to delete the default account of RabbitMQ.
The default username and password of RabbitMQ are both
guest
.sudo rabbitmqctl delete_user guest
Create a RabbitMQ administrator user.
Create a user.
sudo rabbitmqctl add_user <Username> <Password>
Specify the
<Username>
and<Password>
parameters.Set the new user as an administrator.
sudo rabbitmqctl set_user_tags <Username> administrator
Grant all permissions to the new user.
sudo rabbitmqctl set_permissions -p / <Username> ".*" ".*" ".*"
Start RabbitMQ and go to the open source RabbitMQ console.
sudo rabbitmq-plugins enable rabbitmq_management
In your on-premises browser, enter
http://<Public IP address of the Linux instance>:15672
.The following figure shows that RabbitMQ is installed.
Enter the username and password of the RabbitMQ administrator user that you created and click Login to access the open source RabbitMQ console.
The following figure shows the open source RabbitMQ console.
Quickly deploy RabbitMQ on a Ubuntu instance that uses an Alibaba Cloud Marketplace image
You can use Compute Nest to quickly deploy RabbitMQ. Compute Nest can trigger an automated deployment process to eliminate the need to learn complex deployment.
Click
Cloud Native MQ for Apache RabbitMQ Powered by Websoft9 to go to the image details page.You can obtain the image information and user guide on the image details page.
Click
Choose Your Plan.On the Custom Launch tab on the ECS instance buy page, configure and purchase an ECS instance as prompted.
Take note of the following parameters. Configure other parameters based on your business requirements. For information about other parameters, see Create an instance on the Custom Launch tab.
Image: The image that you purchased is automatically selected in the Image section.
Public IP Address: Select Assign Public IPv4 Address.
Security Group: Configure inbound security group rules that allow traffic from ports 22, 80, and 15672.
Obtain the username and password that you use to log on to the RabbitMQ server.
Connect to the RabbitMQ server.
For more information, see Connect to a Linux instance by using a password or key.
Run the following command to obtain the username and password for logon to the RabbitMQ server:
sudo cat /credentials/password.txt
The command output shown in the following figure is returned.
rabbitmq_user: the username for logon to the RabbitMQ server.
rabbitmq_password: the password for logon to the RabbitMQ server.
rabbitmq_gui_port: the web server port of RabbitMQ.
rabbitmq_mq_port: the remote connection port of RabbitMQ.
rabbitmq_er_port: the internal port used by the RabbitMQ server for inter-process communication in Erlang.
rabbitmq_mqtt_port: the listening port of the MQTT service provided by the RabbitMQ server.
Open your browser and enter
http://<Public IP address of the Linux instance>:15672
in the address bar.The following figure shows that RabbitMQ is installed.
In the dialog box that appears, enter the username and password and click Login to access the open source RabbitMQ console.
Migrate open source RabbitMQ clusters to ApsaraMQ for RabbitMQ instances
If you want to resolve various stability issues, such as message accumulation and split-brain issues, and implement high-concurrency, distributed, and flexible scaling, you can migrate an open source RabbitMQ cluster to ApsaraMQ for RabbitMQ. For more information, see Migrate open source RabbitMQ clusters to ApsaraMQ for RabbitMQ instances.