All Products
Search
Document Center

Elastic Compute Service:Deploy open source RabbitMQ

Last Updated:May 31, 2024

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.

    Note

    To connect to the RabbitMQ server by using the MQ tool, you must also open port 5672.

Procedure

  1. 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.

  2. Install RabbitMQ.

    1. Install basic RabbitMQ dependencies.

      sudo apt-get install curl gnupg apt-transport-https -y
    2. 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
    3. 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
    4. Update the local package indexes.

      sudo apt-get update -y
    5. 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
    6. Install RabbitMQ.

      sudo apt-get install rabbitmq-server -y --fix-missing
  3. Configure RabbitMQ.

    1. Configure RabbitMQ to start on instance startup and start RabbitMQ.

      sudo systemctl enable rabbitmq-server
      sudo systemctl start rabbitmq-server
    2. 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
    3. Create a RabbitMQ administrator user.

      1. Create a user.

        sudo rabbitmqctl add_user <Username> <Password>

        Specify the <Username> and <Password> parameters.

      2. Set the new user as an administrator.

        sudo rabbitmqctl set_user_tags <Username> administrator
      3. Grant all permissions to the new user.

        sudo rabbitmqctl set_permissions -p / <Username> ".*" ".*" ".*"
  4. Start RabbitMQ and go to the open source RabbitMQ console.

    sudo rabbitmq-plugins enable rabbitmq_management
  5. In your on-premises browser, enter http://<Public IP address of the Linux instance>:15672.

    The following figure shows that RabbitMQ is installed.RabbitMQ登录页

  6. 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.RabbitMQ主页

Quickly deploy RabbitMQ on a Ubuntu instance that uses an Alibaba Cloud Marketplace image

Note

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.

  1. 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.

  2. Click

    Choose Your Plan.

  3. 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.

  4. Obtain the username and password that you use to log on to the RabbitMQ server.

    1. Connect to the RabbitMQ server.

      For more information, see Connect to a Linux instance by using a password or key.

    2. 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.

      image

  5. 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.RabbitMQ登录页

  6. In the dialog box that appears, enter the username and password and click Login to access the open source RabbitMQ console.

    image

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.