部署开源的RabbitMQ

RabbitMQ是一款开源消息队列系统,支持多种协议(AMQP、MQTT、STOMP、HTTP/WebSockets),具有良好的易用性、扩展性和高可用性。主要用于在分布式系统中协调和管理通信,通过异步消息传递提高系统的解耦性、伸缩性、并发处理能力和容错性。其稳定的性能、丰富的功能集以及活跃的社区支持,广泛应用于企业级应用的消息传递和任务处理。本文介绍如何在云服务器ECS中部署开源的RabbitMQ。

操作步骤

  • 手动部署:适合对Linux命令有基本了解的用户,能够自定义部署RabbitMQ。

  • 快速部署:通过云市场镜像快速部署,省去了安装配置RabbitMQ的过程,大大节省了部署时间。所使用的云市场镜像是否收费,以云市场镜像界面为准。

手动部署RabbitMQ(Ubuntu&Debian

本操作以安装最新版RabbitMQ为例进行说明,更多版本及安装方式,请参见Installing RabbitMQ

前提条件

手动部署RabbitMQ时,请确保已创建ECS实例,并满足以下条件:

  • 实例已分配公网IP地址或绑定弹性公网IP(EIP)。具体操作,请参见绑定EIP

  • 操作系统:Ubuntu 20.04、Ubuntu 22.04、Debian 11.0~Debian 12.5。

    更多支持的系统及安装方式,请参见Installing RabbitMQ

  • 安全组规则:安全组规则入方向需放行22、80、15672端口。

    说明

    如果需要通过MQ工具连接RabbitMQ服务器,还需放行5672端口。

操作步骤

  1. 远程连接需要部署RabbitMQ的实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例

  2. 安装RabbitMQ。

    1. 安装RabbitMQ基本依赖。

      sudo apt-get install curl gnupg apt-transport-https -y
    2. 下载RabbitMQ和Erlang的GPG公钥,并将公钥信息添加到系统的信任密钥环中。

      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. 将RabbitMQ和Erlang的官方APT仓库添加到/etc/apt/sources.list.d/rabbitmq.list文件中。

      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. 更新本地的包索引。

      sudo apt-get update -y
    5. 安装Erlang相关的各种包。

      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. 安装RabbitMQ。

      sudo apt-get install rabbitmq-server -y --fix-missing
  3. 配置RabbitMQ。

    1. 设置RabbitMQ开机自启动并启动RabbitMQ。

      sudo systemctl enable rabbitmq-server
      sudo systemctl start rabbitmq-server
    2. 为保证数据安全,建议您运行以下命令,删除默认用户。

      RabbitMQ默认的账号用户名和密码都是guest

      sudo rabbitmqctl delete_user guest
    3. 创建RabbitMQ管理员用户。

      1. 创建一个新用户。

        sudo rabbitmqctl add_user <用户名> <密码>

        其中,<用户名><密码>为您自定义的信息。

      2. 将创建的新用户设置为管理员。

        sudo rabbitmqctl set_user_tags <用户名> administrator
      3. 赋予新创建的用户所有权限。

        sudo rabbitmqctl set_permissions -p / <用户名> ".*" ".*" ".*"
  4. 启动RabbitMQ的Web管理界面。

    sudo rabbitmq-plugins enable rabbitmq_management
  5. 在本地浏览器中,输入http://<Linux实例的公网IP>:15672

    显示如下页面,说明RabbitMQ安装成功。RabbitMQ登录页

  6. 输入已创建的RabbitMQ管理员用户名和密码后,单击Login,进入RabbitMQ管理界面。

    RabbitMQ管理界面展示信息如下所示:RabbitMQ主页

快速部署RabbitMQUbuntu,使用云市场镜像

说明

你也可以使用计算巢快速部署RabbitMQ,计算巢可以触发自动化部署流程,您无需学习复杂的部署手册,上手门槛低。

  1. 单击开源消息队列中间件 RabbitMQ 进入镜像详情页。

    您可以在镜像详情页获取镜像信息以及使用指南。

  2. 单击立即购买

  3. 自定义购买页,根据页面提示,完成配置项并购买ECS实例。

    配置时请注意以下参数,其他配置可以按需选择。更多参数说明,请参见自定义购买实例

    • 镜像镜像区域已设置为您购买的镜像。

    • 公网 IP:选中分配公网 IPv4 地址

    • 安全组:安全组规则应放行22、80、15672。

  4. 获取RabbitMQ的用户名和登录密码。

    1. 远程连接RabbitMQ服务器。

      具体操作,请参见通过密码或密钥认证登录Linux实例

    2. 执行以下命令,获取RabbitMQ的用户名和登录密码。

      sudo cat /credentials/password.txt

      回显信息类似如下所示。

      • rabbitmq_user:RabbitMQ用户名

      • rabbitmq_password:RabbitMQ登录密码

      • rabbitmq_gui_port:RabbitMQ Web服务器端口

      • rabbitmq_mq_port:RabbitMQ远程连接端口

      • rabbitmq_er_port:RabbitMQ服务器用于Erlang进程间通信的内部端口

      • rabbitmq_mqtt_port:RabbitMQ服务器对外提供MQTT协议服务的监听端口

      image

  5. 在本地浏览器中,输入http://<Linux实例的公网IP>:15672

    显示如下页面,说明RabbitMQ安装成功。RabbitMQ登录页

  6. 在弹出的对话框中,输入用户名和密码,进入管理页面。

    image

开源RabbitMQ迁移上云

如果您希望解决RabbitMQ集群各种稳定性痛点(例如消息堆积、脑裂等问题)、并实现高并发、分布式、灵活扩缩容时,您可以将开源RabbitMQ集群迁移至云消息队列 RabbitMQ 版,具体操作,请参见开源RabbitMQ迁移上云