https://www.rabbitmq.com/install-rpm.html
在基于 RPM 的 Linux(Red Hat Enterprise Linux、CentOS Stream、Fedora、openSUSE)上的安装 RabbitMQ 。
有两种安装这些 RPM 的方法:
- 使用
Cloudsmith.io
或PackageCloud
上的Yum
存储库里的安装包来安装(强烈推荐此选项) - 下载软件包并使用
rpm
安装。此选项将需要手动安装所有依赖包。
后面的内容重点介绍 RabbitMQ 在基于 RPM 的发行版(如 Fedora、RHEL 和 CentOS)上的安装。它涵盖了多个方向:
- 从 Cloudsmith.io 和 PackageCloud 上的 Yum 存储库安装包
- 如何安装最新支持的 Erlang/OTP 版本
- 包依赖
- 支持的发行版
- 权限要求
- 如何管理服务(启动、停止并获取其状态)
- 如何检查节点和服务日志
- 在旧发行版上安装
- 包下载
概述
该包通过 PackageCloud上的 Yum 存储库分发。
Fedora 中包含 rabbitmq-server
包 。但是,包含的版本通常落后于 RabbitMQ 版本。建议您使用 PackageCloud 中的 Yum 存储库。
检查Fedora 软件包详细信息,了解哪个版本的服务器适用于哪个版本的发行版。
支持的发行版
RabbitMQ 在几个主要的基于 RPM 的发行版上得到支持,这些发行版仍然由其主要供应商或开发人员组积极维护。
请注意,现代版本的 Erlang 可能与旧发行版不兼容(例如,早于三到四年),或者在发布时没有对旧发行版或操作系统内核版本进行过多或任何测试。
较旧的发行版也可能缺少足够新的 OpenSSL 版本。Erlang 24
不能用于不提供 OpenSSL 1.1
作为系统库的发行版。CentOS 7 和早于 26 的 Fedora 版本是此类发行版的示例。
目前支持的基于 RPM 的发行版列表包括
用户权限要求
RabbitMQ RPM 包需要 sudo 权限
才能安装和管理。在 sudo
不可用的 环境中,请考虑使用通用二进制构建。
安装 Erlang
安装包依赖
使用 Yum 安装时,只要兼容版本可用,除
Erlang/OTP
之外的所有依赖项都应自动解析和安装。如果不是这种情况,则必须手动安装依赖包。
但是,当通过yum安装本地 RPM 文件时,必须手动安装依赖项。依赖项是:
- erlang: 可以从许多存储库安装受支持的 Erlang 版本
- socat
- logrotate
可以通过以下三种安装方式 RabbitMQ 服务
运行 RabbitMQ 服务器
启动服务器
安装 RabbitMQ 服务器包时,默认情况下服务器不会作为守护进程启动。要在系统启动时默认启动守护程序,请以管理员身份运行
chkconfig rabbitmq-server on
作为管理员,像往常一样启动和停止服务器,例如使用服务:
/sbin/service rabbitmq-server start
/sbin/service rabbitmq-server status
/sbin/service rabbitmq-server stop
如果系统没有安装服务工具,可以使用yum安装:
yum -y install initscripts
配置 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 文档以了解支持的限制和其他指令。
在 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
# 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 (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/rabbitmq-server.service.d
└─limits.conf
Active: active (running) since Wed 2021-05-22 10:21:32 UTC; 25s ago
Main PID: 957 (beam.smp)
Status: "Initialized"
CGroup: /system.slice/rabbitmq-server.service
├─ 957 /usr/lib/erlang/erts-10.2/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- ...
├─1411 /usr/lib/erlang/erts-10.2/bin/epmd -daemon
├─1605 erl_child_setup 400000
├─2860 inet_gethost 4
└─2861 inet_gethost 4
Dec 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ## ##
Dec 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ## ## RabbitMQ 3.11.5. Copyright (c) 2007-2023 VMware, Inc. or its affiliates.
Dec 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ########## Licensed under the MPL 2.0. Website: https://www.rabbitmq.com/
Dec 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ###### ##
Dec 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ########## Logs: /var/log/rabbitmq/rabbit@localhost.log
Dec 26 10:21:30 localhost.localdomain rabbitmq-server[957]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
Dec 26 10:21:30 localhost.localdomain rabbitmq-server[957]: Starting broker...
Dec 26 10:21:32 localhost.localdomain rabbitmq-server[957]: systemd unit for activation check: "rabbitmq-server.service"
Dec 26 10:21:32 localhost.localdomain systemd[1]: Started RabbitMQ broker.
Dec 26 10:21:32 localhost.localdomain rabbitmq-server[957]: completed with 6 plugins.
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