部署安装RabbitMQ前,先了解下基本概念:(RabbitMQ+Python入门经典] 兔子和兔子窝)
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。说的笼统点是queue+socket实现
安装Erlang
在安装RabbitMQ之前,我们需要安装Erlang,官方建议使用打包版本,有三个建议的来源:
1、使用官方生成的一个软件包(https://github.com/rabbitmq/erlang-rpm),它只提供运行RabbitMQ所需要的组件,它可能会也可能不适合运行其他基于Erlang的软件或第三方RabbitMQ插件
2、使用Erlang官方下载一个rpm包(https://www.erlang-solutions.com/resources/download.html),这个包通常是最新的
3、使用EPEL源来安装,这种方式安装的包并不总是最新的
这里我选择第1种方式:
vim /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7 gpgcheck=1 gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing-key.asc repo_gpgcheck=0 enabled=1 yum install erlang
安装RabbitMQ服务器
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.0/rabbitmq-server-3.7.0-1.el7.noarch.rpm rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc yum install rabbitmq-server-3.7.0-1.el7.noarch.rpm
启动服务器
systemctl enable rabbitmq-server systemctl start rabbitmq-server
配置RabbitMQ
在大多数系统上,一个节点应该能够启动并运行所有的默认值
生产环境配置后面再详解
注意:服务器设置为以系统用户rabbitmq运行 。如果更改节点数据库或日志的位置,则必须确保文件由该用户所有(并且还要更新环境变量)
端口访问
SELinux和类似的机制可能会阻止RabbitMQ绑定到一个端口。发生这种情况时,RabbitMQ将无法启动 防火墙可以防止节点和CLI工具相互通信。确保可以打开以下端口: 4369:epmd, RabbitMQ节点和CLI工具使用的对等发现服务 5672,5671: 由AMQP 0-9-1和1.0客户端使用 25672: 由Erlang分配用于节点间和CLI工具通信,并且从动态范围分配(AMQP端口+20000) 15672: HTTP API客户端和rabbitmqadmin(仅当管理插件启用时) 61613,61614:STOMP客户端没有和使用TLS(只有STOMP插件已启用) 1883年,8883:(MQTT客户端没有和TLS,如果MQTT插件已启用) 15674:STOMP-over-WebSockets客户端(仅在启用了Web STOMP插件的情况下) 15675:MQTT-over-WebSockets客户端(仅在启用了Web MQTT插件的情况下)
默认的用户访问
默认将创建一个用户guest,密码guest。默认情况下,只有在以localhost身份连接到代理时才能使用这些凭证
调整系统限制
运行生产工作负载的RabbitMQ安装可能需要系统限制和内核参数调整,以便处理体面的并发连接和队列。需要调整的主要设置是打开文件的最大数量,也称为ulimit -n
许多操作系统上的默认值对于消息传递代理来说太低(例如,在几个Linux发行版上为1024)。我们建议在生产环境中为用户rabbitmq至少允许65536个文件描述符。4096对于大多数开发工作量来说应该是足够的
有两个限制操作系统内核允许的最大打开文件数(fs.file-max)和每用户限制(ulimit -n)。前者必须高于后者
fs.file-max设置
# vim /etc/sysctl.conf,添加: fs.file-max = 65535 # sysctl -p
每用户限制(ulimit -n)
# vim /etc/security/limits.conf 在最后一行添加如下命令 root soft nofile 65535 root hard nofile 65535 * soft nofile 65535 * hard nofile 65535 # vim /etc/rc.local ulimit -SHn 65535
修改rabbitmq配置
修改rabbitmq配置 修改/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service 在[Service]中,增加LimitNOFILE=30000(具体数值根据需要) 执行systemctl daemon-reload 重启rabbitmq服务 rabbitmqctl status
日志
默认的情况下,日志位于/var/log/rabbitmq目录中,服务器的输出被发送到RABBITMQ_NODENAME .log文件 。其他日志数据写入RABBITMQ_NODENAME -sasl.log