RabbitMQ安装

203 阅读3分钟

RabbitMQ简介

RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。目前很多互联网大厂都在使用RabbitMQ。

官网:www.rabbitmq.com/

安装环境和版本

操作系统:Centos7.8

RabbitMQ版本:3.8.5

离线下载好rpm安装包

RabbitMQ是使用erlang语言写的,所以需要先安装erlang,其次rabbitmq安装依赖于socat,所以三个安装包都需要下载。另外rabbitmq对于erlang的版本是有要求的,这个可以去官网查看;本次安装版本及包名如下:

erlang-23.0.2-1.el7.x86_64.rpm
rabbitmq-server-3.8.5-1.el7.noarch.rpm
socat-1.7.3.2-2.el7.x86_64.rpm

rabbit下载地址:www.rabbitmq.com/install-rpm…

erlang下载地址:github.com/rabbitmq/er…

socat下载地址:www.rpmfind.net/linux/rpm2h…

使用RPM安装命令安装RabbitMQ以及依赖

sudo rpm -ivh erlang-23.0.2-1.el7.x86_64.rpm
sudo rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
sudo rpm -ivh rabbitmq-server-3.8.5-1.el7.noarch.rpm

配置数据文件和日志文件存放路径

由于我们的消息需要持久化,占用硬盘空间相对较大,避免后期因磁盘分区原因导致默认路径不够存放日志和数据,故需要修改路径,RabbitMQ默认的日志和数据存放位置如下:

image-20210819161320652.png

1、 首先创建自定义目录

sudo mkdir -p /DATA/app/rabbitmq/mnesia
sudo mkdir -p /DATA/applog/rabbitmq/log

2、 分配文件目录权限

RabbitMQ安装成功之后,会以rabbitmq用户启动进程,所以需要把目录拥有者设置为rabbitmq。

sudo chown -R rabbitmq:rabbitmq /DATA/app/rabbitmq
sudo chown -R rabbitmq:rabbitmq /DATA/applog/rabbitmq

3、 修改配置文件

vi /etc/rabbitmq/rabbitmq-env.conf

填入以下配置

RABBITMQ_MNESIA_DIR=/DATA/app/rabbitmq/mnesia
RABBITMQ_LOG_BASE=/DATA/applog/rabbitmq/log

4、 重新启动RabbitMQ

sudo service rabbitmq-server start

启动成功之后会显示如下信息

Redirecting to /bin/systemctl start rabbitmq-server.service

修改操作系统句柄数限制

由于RabbitMQ消息需要持久化,对磁盘的操作比较频繁。类似kafka和其他消息中间件一样,需要对最大句柄数进行调优。

1、 首先修改操作系统底层的限制

vim /etc/sysctl.conf

添加fs.file-max=655350

image-20210819161357145.png

2、 修改limits.conf

vim /etc/security/limits.conf

添加如下配置

*    soft    nofile    65535
*    hard    nofile    65535
*    soft    nproc     65535
*    hard    nproc     65535

3、 最后修改rabbitmq-service的配置,然后重启RabbitMQ

vim /usr/lib/systemd/system/rabbitmq-server.service

image-20210819161430670.png

sudo service rabbitmq-server restart #重启服务

4、 使用命令rabbitmqctl status查看配置是否生效

rabbitmqctl status

image-20210819161447056.png

开启RabbitMO的web管理界面

直接在命令行输入如下信息即可

sudo rabbitmq-plugins enable rabbitmq_management

开启防火墙端口允许远程访问

1、 开启发送接收消息的端口5672

sudo firewall-cmd --permanent --add-port=5672/tcp

2、 开启web远程访问端口15672

sudo firewall-cmd --permanent --add-port=15672/tcp

3、 重新加载防火墙配置

sudo firewall-cmd --reload

配置用户并分配权限

添加用户和配置用户,请参考blog.csdn.net/zyz51191976…

下面是本系统中的配置

1、 添加超级管理员

sudo rabbitmqctl add_user admin admin  # 设置账户密码为admin admin
sudo rabbitmqctl set_user_tags admin administrator #设置admin为管理员权限

2、 添加普通用户并分配权限

sudo rabbitmqctl add_user  user1  a3XWpIZU #新建普通账号user1
sudo rabbitmqctl set_user_tags user1 management #设置user1为普通管理员
#为用户user1设置权限,资源为exchange和queue
sudo rabbitmqctl  set_permissions -p /  user1 'com.cares.exchange.direct|com.cares.bsm.source' '.*' '.*'