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端口。
操作步骤
远程连接需要部署RabbitMQ的实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
安装RabbitMQ。
安装RabbitMQ基本依赖。
sudo apt-get install curl gnupg apt-transport-https -y
下载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
将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
更新本地的包索引。
sudo apt-get update -y
安装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
安装RabbitMQ。
sudo apt-get install rabbitmq-server -y --fix-missing
配置RabbitMQ。
设置RabbitMQ开机自启动并启动RabbitMQ。
sudo systemctl enable rabbitmq-server sudo systemctl start rabbitmq-server
为保证数据安全,建议您运行以下命令,删除默认用户。
RabbitMQ默认的账号用户名和密码都是
guest
。sudo rabbitmqctl delete_user guest
创建RabbitMQ管理员用户。
创建一个新用户。
sudo rabbitmqctl add_user <用户名> <密码>
其中,
<用户名>
和<密码>
为您自定义的信息。将创建的新用户设置为管理员。
sudo rabbitmqctl set_user_tags <用户名> administrator
赋予新创建的用户所有权限。
sudo rabbitmqctl set_permissions -p / <用户名> ".*" ".*" ".*"
启动RabbitMQ的Web管理界面。
sudo rabbitmq-plugins enable rabbitmq_management
在本地浏览器中,输入
http://<Linux实例的公网IP>:15672
。显示如下页面,说明RabbitMQ安装成功。
输入已创建的RabbitMQ管理员用户名和密码后,单击Login,进入RabbitMQ管理界面。
RabbitMQ管理界面展示信息如下所示:
快速部署RabbitMQ(Ubuntu,使用云市场镜像)
你也可以使用计算巢快速部署RabbitMQ,计算巢可以触发自动化部署流程,您无需学习复杂的部署手册,上手门槛低。
单击开源消息队列中间件 RabbitMQ 进入镜像详情页。
您可以在镜像详情页获取镜像信息以及使用指南。
单击立即购买。
在自定义购买页,根据页面提示,完成配置项并购买ECS实例。
配置时请注意以下参数,其他配置可以按需选择。更多参数说明,请参见自定义购买实例。
镜像:镜像区域已设置为您购买的镜像。
公网 IP:选中分配公网 IPv4 地址。
安全组:安全组规则应放行22、80、15672。
获取RabbitMQ的用户名和登录密码。
远程连接RabbitMQ服务器。
具体操作,请参见通过密码或密钥认证登录Linux实例。
执行以下命令,获取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协议服务的监听端口
在本地浏览器中,输入
http://<Linux实例的公网IP>:15672
。显示如下页面,说明RabbitMQ安装成功。
在弹出的对话框中,输入用户名和密码,进入管理页面。
开源RabbitMQ迁移上云
如果您希望解决RabbitMQ集群各种稳定性痛点(例如消息堆积、脑裂等问题)、并实现高并发、分布式、灵活扩缩容时,您可以将开源RabbitMQ集群迁移至云消息队列 RabbitMQ 版,具体操作,请参见开源RabbitMQ迁移上云。