您的 RabbitMQ 服务器上安装什么?
- 来自官方 Docker 镜像 Alpine 构建、带管理界面的 RabbitMQ 4,安装时取最新的 4.x 版本
- 管理界面通过 Caddy 在 sslip.io 地址上提供 HTTPS,所以域名是可选的
- 开放 5672 端口供 AMQP 连接使用
- 管理员账号名为 yonetici 而不是 guest,密码自动生成
- 队列数据保存在 rabbit_veri Docker 存储卷中
- Compose 文件位于 /opt/seturack/rabbitmq/compose.yaml
- 防火墙只开放 22、80、443 和 5672 端口
RabbitMQ 需要多大的配置?
RabbitMQ 的生产环境清单要求每个节点至少 4 GiB RAM 和 4 个核心,并说明 RabbitMQ 不是为单核环境设计的。请把最小的 2 GB 配置当作开发和测试规格,生产环境请选 4 GB 并增加 CPU。内存使用超过 RAM 的 60% 后,发布方会被限流,持久化消息也会占用磁盘。RAM、CPU 和磁盘可以在面板中分别扩大,您的数据和 IP 地址保持不变。
| 用途 | 配置 | 价格 | 选择 |
|---|---|---|---|
| 入门 | 4 GB RAM · 2 vCore · 60 GB NVMe | $6.89/月 | |
| 中等 | 8 GB RAM · 4 vCore · 120 GB NVMe | $13.62/月 | |
| 强劲 | 16 GB RAM · 8 vCore · 200 GB NVMe | $25.15/月 |
适合谁?
- 想把后台任务从网站应用中分离出来的团队
- 为服务之间搭建消息通信的开发者
- 使用 Celery、Spring AMQP 或 amqplib 的项目
- 想在开发和测试中使用真正队列的人
下单之后会发生什么?
- 设定配置并完成付款。
- 服务器启动后,RabbitMQ 会自行安装。在我们的真实服务器测试中大约需要 8 分钟。
- 在“概览”标签页,“面板地址”一行的链接会打开管理界面。输入“登录名”和“密码”两行的信息。
- 连接您的应用:amqp://yonetici:PASSWORD@IP:5672/%2f
- 在 Admin 标签页中,为您的应用单独创建一个用户和一个虚拟主机(vhost)。
每台服务器都包含
- 价格含每日备份
- 不限流量
- 完整 root 权限
- 之后可升级或降配 RAM 和 CPU,并扩大磁盘
- 位置:Istanbul · IST-1。
须知
- 5672 端口没有 TLS 且对互联网开放,而 Docker 发布了该端口,所以 ufw 无法关闭它。要限制访问,请把 compose.yaml 中的端口行改为 127.0.0.1:5672:5672,运行 docker compose up -d,再通过 SSH 隧道连接。
- 可用磁盘空间下限默认为 50 MB,官方文档认为这只适合开发使用。生产环境请调高 disk_free_limit。
- 超过内存或磁盘限制后,发布消息的连接会被阻塞。等消费者取走消息后,告警解除,流量就会恢复。
- 镜像跟随 4-management-alpine 标签,但不会自动更新。要用更新的 4.x 版本,请在该文件夹中运行 docker compose pull 和 docker compose up -d。
RabbitMQ 常见问题
如何连接我的 RabbitMQ 服务器?
您的连接字符串是 amqp://yonetici:PASSWORD@IP:5672/%2f。末尾的 %2f 代表默认虚拟主机 /。RabbitMQ 的 URI 规范规定,末尾单独的 / 表示空名称。IP 和密码在您的面板中,把这个字符串交给您的客户端库即可。
RabbitMQ 需要多少 RAM?
RabbitMQ 官方的生产环境清单要求每个节点至少 4 GiB RAM 和 4 个核心。开发和测试时,可以从 2 GB 起步。
如何打开 RabbitMQ 管理界面?
面板中的“面板地址”链接会通过 HTTPS 打开它。登录名是 yonetici,密码在您的面板中。在界面里可以创建队列、交换机、用户和虚拟主机,也可以收发测试消息。15672 端口不对外开放。
RabbitMQ 的 AMQP 连接是加密的吗?
本次安装中 RabbitMQ 的 5672 端口没有 TLS,所以密码和消息以明文传输。通过互联网传输敏感数据时,请使用 SSH 隧道,或者用您自己的证书在 5671 端口设置 TLS 监听并发布该端口。
为什么我的 RabbitMQ 发布方被阻塞?
当内存使用超过 RAM 的 60%,或可用磁盘空间低于限制时,RabbitMQ 会阻塞发布消息的连接。消费者取走消息后告警会解除。您可以在管理界面的 Overview 页面查看状态,如果经常发生,请升级服务器配置。
可以为我的应用单独创建一个 RabbitMQ 用户吗?
可以。在界面的 Admin 标签页添加虚拟主机和用户,并授予权限。若用命令行,请在 /opt/seturack/rabbitmq 中运行 docker compose exec rabbitmq rabbitmqctl add_user NAME PASSWORD。新用户获得权限之前无法连接。