https://www.rabbitmq.com/install-debian.html
RabbitMQ 包含在标准的 Debian 和 Ubuntu 存储库中。但是,包含的版本比最新的 RabbitMQ 版本落后很多版本,并且可能提供已经不受支持的 RabbitMQ 版本。
RabbitMQ 团队生产我们自己的 Debian 包,并使用 Cloudsmith
和PackageCloud
分发它们。
本指南的关键部分是
- 在 Debian 和 Ubuntu 上安装最新版本的 RabbitMQ的方法
- 支持的 Ubuntu 和 Debian 发行版
- 权限要求
- 使用 Cloudsmith存储库的快速启动安装片段
- 使用 PackageCloud和 Launchpad 存储库的快速启动安装片段
- 管理服务(启动、停止并获取其状态)
- 如何检查节点和服务日志
支持的 Erlang 版本将从 Ubuntu Launchpad 或 Cloudsmith.io 上的现代 Erlang apt 存储库之一提供。
那些寻找更详细的安装步骤描述的人应该参考
- 使用apt 和 Cloudsmith存储库手动安装
- 使用apt PackageCloud和 Launchpad 存储库手动安装
如何在 Debian 和 Ubuntu 上安装最新的 RabbitMQ
使用 Apt 安装
在 Debian 和 Ubuntu 上安装最新 RabbitMQ 有两个选项:
- 选项 A:在 Cloudsmith 上使用 apt 存储库(快速启动脚本)
- 选项 B:在 PackageCloud 和 Launchpad 上结合使用 apt 存储库(快速启动脚本)
这两个选项都将使用Cloudsmith
或 Launchpad
上的Erlang apt
存储库安装最新版本的 Erlang
。
手动使用 Dpkg
或者,可以手动下载软件包并使用dpkg -i
安装。此选项将需要手动安装所有 RabbitMQ 包依赖项(不推荐)。
支持的发行版
RabbitMQ 在几个主要的基于 Debian 的发行版上得到支持,这些发行版仍然受到其主要供应商或开发人员组的支持。
对于 Debian,这意味着 RabbitMQ 核心团队关注包的重点是基于 Debian 的发行版的当前和先前版本,即符合发行版 EOL 政策。
目前支持的基于 Debian 的发行版列表包括
- Ubuntu 18.04 到 22.10
- Debian Buster (10)、Bullseye (11) 和 Sid (“unstable”)
如果依赖性得到满足(例如,使用反向移植存储库) ,该软件包可以在其他基于 Debian 的发行版上工作,但它们的测试和支持是在尽力而为的基础上完成的。
在 Debian 和 Ubuntu 上从哪里获取最新的 Erlang 版本
RabbitMQ 需要 Erlang/OTP 才能运行。标准 Debian 和 Ubuntu 存储库中的 Erlang/OTP 包可能已经过时并且不受现代 RabbitMQ 版本的支持。
最新的 Erlang/OTP 发布系列可以从许多替代的 apt 存储库中获得:
Erlang 发布系列 | 提供它的 Apt 存储库 | 笔记 |
---|---|---|
25.x | - Launchpad 上来自 Team RabbitMQ的 Erlang 的 Debian 包 - Erlang 解决方案 - 来自 Cloudsmith.io 上的 Team RabbitMQ的 Erlang 的 Debian 包 |
从 3.10.0 开始支持,从3.11.0开始需要。请参阅Erlang 兼容性指南。 |
24.x | - Erlang 解决方案 - 来自 Cloudsmith.io 上的 Team RabbitMQ的 Erlang 的 Debian 包 |
从 3.8.16 开始支持。请参阅Erlang 兼容性指南。 |
本指南将重点介绍由 Team RabbitMQ在 Launchpad 和Cloudsmith.io 上维护的 Debian 存储库。
可以通过以下三种安装方式 RabbitMQ 服务
运行 RabbitMQ 服务器
启动服务器
安装 RabbitMQ 服务器包时,默认情况下服务器不会作为守护进程启动。要在系统启动时默认启动守护程序,请以管理员身份运行
作为管理员,像往常一样启动和停止服务器,例如使用服务:
sudo service enabled rabbitmq-server
sudo service start rabbitmq-server
sudo service status rabbitmq-server
sudo service stop rabbitmq-server
配置 RabbitMQ
在大多数系统上,节点应该能够以所有默认值启动和运行。请参阅配置指南以了解更多信息,并参阅生产清单以了解开发环境以外的指南。
注意:节点设置为以系统用户rabbitmq运行。如果更改了节点数据库或日志的位置,则文件和目录必须归该用户所有。
RabbitMQ 节点绑定到端口(开放服务器 TCP 套接字)以接受客户端和 CLI 工具连接。其他进程和工具(如 SELinux)可能会阻止 RabbitMQ 绑定到端口。发生这种情况时,节点将无法启动。
CLI 工具、客户端库和 RabbitMQ 节点也打开连接(客户端 TCP 套接字)。防火墙可以阻止节点和 CLI 工具相互通信。确保可以访问以下端口:
- 4369:epmd,RabbitMQ 节点和 CLI 工具使用的对等发现服务
- 5672、5671:由不带和带 TLS 的 AMQP 0-9-1 和 1.0 客户端使用
- 25672:用于节点间和 CLI 工具通信(Erlang 分发服务器端口)并从动态范围分配(默认限制为单个端口,计算为 AMQP 端口 + 20000)。除非确实需要这些端口上的外部连接(例如集群使用联合或在子网外的机器上使用 CLI 工具),否则不应公开这些端口。有关详细信息,请参阅网络指南。
- 35672-35682:由 CLI 工具(Erlang 分发客户端端口)用于与节点通信,并从动态范围(计算为服务器分发端口 + 10000 到服务器分发端口 + 10010)进行分配。有关详细信息,请参阅网络指南。
- 15672:HTTP API客户端、管理 UI和rabbitmqadmin (仅当管理插件启用时)
- 61613、61614:不带和带 TLS 的STOMP 客户端(仅当启用STOMP 插件时)
- 1883、8883:如果启用了MQTT 插件,则不带和带 TLS 的MQTT 客户端
- 15674:STOMP-over-WebSockets 客户端(仅当启用Web STOMP 插件时)
- 15675:MQTT-over-WebSockets 客户端(仅当启用Web MQTT 插件时)
- 15692:Prometheus 指标(仅当启用Prometheus 插件时)
可以将RabbitMQ 配置 为使用不同的端口和特定的网络接口。
默认用户访问
broker 服务默认创建一个用户guest
密码guest
。未配置的客户端通常会使用这些凭据。默认情况下,这些凭据只能在以本地主机身份连接到代理时使用,因此您需要在从任何其他计算机连接之前采取措施。
有关如何创建更多用户和删除来宾用户的信息,请参阅有关访问控制的文档。
在 Linux 上控制系统限制
运行生产工作负载的 RabbitMQ 安装可能需要系统限制和内核参数调整,以便处理相当数量的并发连接和队列。需要调整的主要设置是最大打开文件数,也称为ulimit -n
。许多操作系统上的默认值对于消息代理来说太低(在几个 Linux 发行版上为1024)。我们建议在生产环境中为用户rabbitmq允许至少 65536
个文件描述符。4096
应该足以应对许多开发工作负载。
有两个限制:操作系统内核允许的最大打开文件数 ( fs.file-max
) 和每个用户的限制 ( ulimit -
n )。前者必须高于后者。
使用 systemd(最近的 Linux 发行版)
在使用 systemd
的发行版上,操作系统限制是通过位于/etc/systemd/system/rabbitmq-server.service.d/limits.conf
的配置文件控制的。例如,要将最大打开文件句柄限制 ( nofile
) 设置为64000
:
[Service]
LimitNOFILE=64000
请参阅 systemd 文档以了解支持的限制和其他指令。
在 /etc/systemd/system/rabbitmq-server.service.d/limits.conf
原因,在 /etc/systemd/system/rabbitmq-server.service
文件中也有提到:
# systemd unit example
[Unit]
Description=RabbitMQ broker
After=network.target epmd@0.0.0.0.socket
Wants=network.target epmd@0.0.0.0.socket
[Service]
Type=notify
User=rabbitmq
Group=rabbitmq
UMask=0027
NotifyAccess=all
TimeoutStartSec=600
# To override LimitNOFILE, create the following file:
#
# /etc/systemd/system/rabbitmq-server.service.d/limits.conf
#
# with the following content:
#
# [Service]
# LimitNOFILE=65536
LimitNOFILE=32768
# The following setting will automatically restart RabbitMQ
# in the event of a failure. systemd service restarts are not a
# replacement for service monitoring. Please see
# https://www.rabbitmq.com/monitoring.html
Restart=on-failure
RestartSec=10
WorkingDirectory=/var/lib/rabbitmq
ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server
ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl shutdown
# See rabbitmq/rabbitmq-server-release#51
SuccessExitStatus=69
[Install]
WantedBy=multi-user.target
在 Docker 环境下
为 Docker 配置内核限制,请使用 Docker 守护进程配置文件中的 “default-ulimits” 键。该文件必须安装在/etc/docker/daemon.json
的 Docker 主机上:
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
}
}
没有 systemd(较旧的 Linux 发行版)
在不使用 systemd 的发行版上调整 RabbitMQ 每个用户限制的最直接方法是编辑/etc/default/rabbitmq-server
(由 RabbitMQ Debian 软件包提供)或rabbitmq-env.conf
以在之前 调用ulimit
服务已启动。
ulimit -S -n 64000
这个软限制不能高于硬限制(在许多发行版中默认为 4096)。 可以通过 /etc/security/limits.conf
增加硬限制。这也需要启用pam_limits.so
模块并重新登录或重启。请注意,无法更改正在运行的操作系统进程的限制。
有关使用 sysctl
控制 fs.file-max
的更多信息 ,请参阅优秀的 Riak 打开文件限制调整指南。
验证限制
RabbitMQ 管理 UI在概述选项卡上显示可供其使用的文件描述符的数量。
rabbitmq-diagnostics status
包含相同的值。
以下命令
cat /proc/ $RABBITMQ_BEAM_PROCESS_PID /limits
可用于显示正在运行的进程的有效限制。$RABBITMQ_BEAM_PROCESS_PID
是运行 RabbitMQ 的 Erlang VM 的操作系统 PID,由rabbitmq-diagnostics status
返回。
管理服务
要启动和停止服务器,请使用服务工具。服务名称是rabbitmq-server
:
# stop the local node
sudo service rabbitmq-server stop
systemctl restart rabbitmq-server.service
# start it back
sudo service rabbitmq-server start
service rabbitmq-server status 将报告 systemd(或类似服务管理器)观察到的服务状态:
# check on service status as observed by service manager
sudo service rabbitmq-server status
它将产生类似这样的输出:
Redirecting to /bin/systemctl status rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-05-07 12:14:49 CST; 17min ago
Main PID: 3120640 (beam.smp)
Tasks: 37 (limit: 18624)
Memory: 122.7M
CPU: 15.370s
CGroup: /system.slice/rabbitmq-server.service
├─3120640 /usr/lib/erlang/erts-13.2.2/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -- -root /us>
├─3120656 erl_child_setup 32768
├─3120701 /usr/lib/erlang/erts-13.2.2/bin/epmd -daemon
├─3120738 /usr/lib/erlang/erts-13.2.2/bin/inet_gethost 4
├─3120739 /usr/lib/erlang/erts-13.2.2/bin/inet_gethost 4
└─3120744 /bin/sh -s rabbit_disk_monitor
5月 07 12:14:46 ThinkPad-Edge-E430c rabbitmq-server[3120640]: Doc guides: https://rabbitmq.com/documentation.html
5月 07 12:14:46 ThinkPad-Edge-E430c rabbitmq-server[3120640]: Support: https://rabbitmq.com/contact.html
5月 07 12:14:46 ThinkPad-Edge-E430c rabbitmq-server[3120640]: Tutorials: https://rabbitmq.com/getstarted.html
5月 07 12:14:46 ThinkPad-Edge-E430c rabbitmq-server[3120640]: Monitoring: https://rabbitmq.com/monitoring.html
5月 07 12:14:46 ThinkPad-Edge-E430c rabbitmq-server[3120640]: Logs: /var/log/rabbitmq/rabbit@ThinkPad-Edge-E430c.log
5月 07 12:14:46 ThinkPad-Edge-E430c rabbitmq-server[3120640]: /var/log/rabbitmq/rabbit@ThinkPad-Edge-E430c_upgrade.log
5月 07 12:14:46 ThinkPad-Edge-E430c rabbitmq-server[3120640]: <stdout>
5月 07 12:14:46 ThinkPad-Edge-E430c rabbitmq-server[3120640]: Config file(s): (none)
5月 07 12:14:49 ThinkPad-Edge-E430c rabbitmq-server[3120640]: Starting broker... completed with 0 plugins.
5月 07 12:14:49 ThinkPad-Edge-E430c systemd[1]: Started RabbitMQ broker.
rabbitmqctl
、rabbitmq-diagnostics
和其他CLI 工具将在PATH
中可用,并且可以由启用sudo
的用户调用:
# checks if the local node is running and CLI tools can successfully authenticate with it
sudo rabbitmq-diagnostics ping
# prints enabled components (applications), TCP listeners, memory usage breakdown, alarms
# and so on
sudo rabbitmq-diagnostics status
# prints cluster membership information
sudo rabbitmq-diagnostics cluster_status
# prints effective node configuration
sudo rabbitmq-diagnostics environment
如果没有节点正在运行,所有rabbitmqctl命令都会报告错误。
日志文件和管理
服务器日志可以在可配置目录下找到,当通过 Linux 包管理器安装 RabbitMQ 时,该目录通常默认为/var/log/rabbitmq
。
RABBITMQ_LOG_BASE
变量可用于覆盖日志目录位置。
假设基于systemd的发行版,系统服务日志可以使用
journalctl --system
这需要超级用户权限。可以过滤它的输出以将其缩小到特定于 RabbitMQ 的条目:
sudo journalctl --system | grep rabbitmq
输出将类似于:
Dec 26 11:03:04 localhost rabbitmq-server[968]: ## ##
Dec 26 11:03:04 localhost rabbitmq-server[968]: ## ## RabbitMQ 3.11.5. Copyright (c) 2007-2023 VMware, Inc. or its affiliates.
Dec 26 11:03:04 localhost rabbitmq-server[968]: ########## Licensed under the MPL 2.0. Website: https://www.rabbitmq.com/
Dec 26 11:03:04 localhost rabbitmq-server[968]: ###### ##
Dec 26 11:03:04 localhost rabbitmq-server[968]: ########## Logs: /var/log/rabbitmq/rabbit@localhost.log
Dec 26 11:03:04 localhost rabbitmq-server[968]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
Dec 26 11:03:04 localhost rabbitmq-server[968]: Starting broker...
Dec 26 11:03:05 localhost rabbitmq-server[968]: systemd unit for activation check: "rabbitmq-server.service"
Dec 26 11:03:06 localhost rabbitmq-server[968]: completed with 6 plugins.
日志轮换
代理总是附加到日志文件,因此保留了完整的日志历史记录。
logrotate
是推荐的日志文件轮换和压缩方式。默认情况下,该包将设置logrotate以每周对位于默认 /var/log/rabbitmq
目录中的文件运行。旋转配置可以在/etc/logrotate.d/rabbitmq-server
中找到 。
账号配置
安装启动后其实还不能在其它机器访问,rabbitmq 默认的 guest 账号只能在本地机器访问, 如果想在其它机器访问必须配置其它账号
配置管理员账号
# 创建管理员用户,负责整个 MQ 的运维(必须)
[root@rabbitmq1 ~]# rabbitmqctl add_user admin admin
# 如果密码错误,可使用下面命令修改密码(必须)
[root@rabbitmq1 ~]# rabbitmqctl change_password admin admin
# 赋予其 administrator 角色
[root@rabbitmq1 ~]# rabbitmqctl set_user_tags admin administrator
# 创建 RabbitMQ 监控用户,负责整个 MQ 的监控(可选)
[root@rabbitmq1 ~]# rabbitmqctl add_user user_monitoring passwd_monitor
# 创建某个项目的专用用户,只能访问项目自己的 virtual hosts(可选)
[root@rabbitmq1 ~]# rabbitmqctl set_user_tags user_monitoring monitoring
[root@rabbitmq1 ~]# rabbitmqctl set_user_tags user_monitoring management
# 创建和赋角色完成后查看并确认
[root@rabbitmq1 ~]# rabbitmqctl list_users
启动 rabbitmq 内置 web 插件, 管理 rabbitmq 账号等信息
[root@localhost src]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
# 重启服务
[root@localhost src]# systemctl restart rabbitmq-server.service
服务重启成功后,访问地址:http://你的地址:15672
最后编辑:Jeebiz 更新时间:2024-11-01 10:06