RabbitMQ Install on RPM-based Linux
服务下载
| Description | Download |
| ——| —— | :—-: |
| RPM for Fedora / RHEL / CentOS Linux (from rabbitmq.com) | rabbitmq-server-3.6.5-1.noarch.rpm |
| RPM for openSUSE Linux (from rabbitmq.com) | rabbitmq-server-3.6.5-1.suse.noarch.rpm |
| RPM for Fedora / RHEL / CentOS Linux (from github.com) | rabbitmq-server-3.6.5-1.noarch.rpm |
概述
rabbitmq-server已经包含在Fedora系统中,但是,这个版本往往比较旧。通过我们的站点安装.rpm格式的文件会获得更好的结果。检查Fedora 包详情获得服务器版本信息。
安装Erlang
在安装RabbitMQ之前,你必须安装Erlang环境。我们建议使用一个打包版本。这里有三种来源方式:
- Erlang 方案 通常是最新的安装包,提供两种方式,一种通过yum 仓库进行安装,另一种通过手动下载安装。
- 我们提供了一个适合运行RabbitMQ服务的依赖包,这个包不是最新的,但是能够很好的解决依赖问题。
- EPEL (“Extra Packages for Enterprise Linux”); 有一部分的 Red Hat / Fedora 机构,提供了一些额外的包,包含了 Erlang. 他们都是正式的安装包,并被分成了很多个小包,但不是最新的。
从Erlang官网的仓库进行安装
- 可以通过使用仓库来安装Erlang。
或者下载单独的包进行安装
- 下载安装 esl-erlang RPM进行安装。
- 下载安装 esl-erlang-compat RPM兼容包。
或者从RabbitMQ安装零依赖的Erlang
- 下载安装零依赖的Erlang RPM 包.
或者从EPEL仓库安装Erlang
- 在你的机器上激活EPEL。
- 通过root账户执行以下命令:
1
yum install erlang
安装RabbitMQ服务
下载rpm文件,通过root账户执行以下命令:
1 | rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc |
我们的公钥信息也可以从这里下载.
Using PackageCloud RPM Repository
PackageCloud installs packages via HTTPS and signs them using their GPG key. There are multiple ways to install:
Provided installation scripts
Using PackageCloud Chef cookbook
Using PackageCloud Puppet module
Manually
See PackageCloud RabbitMQ repository instructions.
运行RabbitMQ服务
自定义RabbitMQ环境变量
服务启动采用的是默认配置,你可以自定义RabbitMQ环境变量,这里告诉你这样配置组件。
启动服务
The server is not started as a daemon by default when the RabbitMQ server package is installed. To start the daemon by default when the system boots, as an administrator run chkconfig rabbitmq-server on.这个服务在安装以后不会以守护进程运行。默认情况下守护进程会随着系统启动而运行,通过管理员账号运行以下命令:
1 | chkconfig rabbitmq-server on |
通过管理员账号可以启动和停止该服务:
1 | /sbin/service rabbitmq-server stop/start/etc. |
备注:这个服务作为系统用户运行,如果你改变了Mnesia数据库或者日志
,你必须确保这些文件是该用户的。
访问端口
SELinux and similar 机器也许会阻止RabbitMQ绑定端口。这种情况下,RabbitMQ将会启动失败。确保以下端口是被允许打开的:
1 | 4369 (epmd), 25672 (Erlang distribution) |
可以配置RabbitMQ使用其他端口。
默认用户访问
这个服务创建了一个用户名guest密码为guest的用户。没有配置的客户端将采用这个用户。默认情况下这个凭证只能用于连接本机。
查看文档中访问控制信息。了解如何创建更多的用户、删除guest用户,或者允许guest用户进行远程访问。
管理服务
怎么停止服务或者检查它的状态等,你可以调用sbin/rabbitmqctl(作为运行rabbitmq-server的用户来操作)。如果没有服务在运行rabbitmqctl命令将报告节点不在线的信息。
- 调用 rabbitmqctl stop 命令停止服务.
- 调用 rabbitmqctl status 检查服务运行状态.
更多的信息查看rabbitmqctl
日志
服务输出的信息会发送到RABBITMQ_NODENAME.log文件中并保存在RABBITMQ_LOG_BASE 目录。附加的日志信息会写到RABBITMQ_NODENAME-sasl.log文件中。
控制系统的限制
RabbitMQ安装运行在生产环境的工作负载情况下需要对系统的内核参数限制进行调整,保证一个合适的数量来处理并发的连接和队列。这里主要设置打开文件的最大数量,可以使用这个命令 ulimit -n。许多操作系统作为一个消息代理来说这个默认值太低了(大部分的linux默认值都是1024)。我们推荐使用最少65536的文件描述符作为用户rabbitmq的生产环境,4096 基本上满足大多数开发工作负载。
这里有2个限制参数:最大允许打开的文件数(fs.file-max on Linux, kern.maxfilesperproc on OS X and FreeBSD)和per-user 限制数(ulimit -n)。前者必须高于后者。
在分布式系统里面,通过配置/etc/systemd/system/rabbitmq-server.service.d/limits.conf文件来控制,例如:
1 | [Service] |
还有种最简单的方法来限制每个用户,就是在启动服务之前调用以下命令:
1 | ulimit -S -n 4096 |
这个软限制不能够操作硬限制(许多分布式环境中默认为4096)。这个硬限制也可以在/etc/security/limits.conf中修改。必须要激活pam_limits.so模块并重新登陆或者重启系统。
Note that limits cannot be changed for running OS processes.
For more information about controlling fs.file-max with sysctl, please refer to the excellent Riak guide on open file limit tuning.
验证限制
UI管理页面 在概述这个选项卡里显示了可用的文件描述符数量。
1 | rabbitmqctl status |
上面的信息也包含了同样的值。
下面的命令:
1 | cat /proc/$RABBITMQ_BEAM_PROCESS_PID/limits |
用于显示运行进程的有效限制数。$RABBITMQ_BEAM_PROCESS_PID 是系统的PID,作为在Erlang VM运行的RabbitMQ。通过rabbitmqctl status返回。
##配置管理工具
配置管理工具(比如:Chef, Puppet, BOSH)提供了对系统限制的调整。我们的开发工具指南里面列出了相关的模块和项目。