CentOS 7 离线安装软件(四)-- 消息队列

RabbitMQ是一套开源的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。

准备

官网 了解几种安装方式的过程中,发现其依赖Erlang,由于CentOS7最高支持Erlang23,并且只有软件仓库和RPM包两种安装方式。

所以最终只能统一选择RPM包的安装方式了,需仔细阅读官网这几个页面的内容:

下载

按照 RabbitMQ Erlang Version Requirements 文档说明,在 Package Cloud 搜索找到适合CentOS7的最新版本 erlang-23.3.4.11-1 ,再搜索找到与其适配的最新版本 rabbitmq-server-3.10.0-1

安装

先安装Erlang

[root@my-centos7 ~]# rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm
警告:erlang-23.3.4.11-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID cc4bbe5b: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:erlang-23.3.4.11-1.el7           ################################# [100%]

再安装RabbitMQ Server

[root@my-centos7 ~]# rpm -ivh rabbitmq-server-3.10.0-1.el7.noarch.rpm
警告:rabbitmq-server-3.10.0-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 6026dfca: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:rabbitmq-server-3.10.0-1.el7     ################################# [100%]

官方文档 Installing on RPM-based Linux (RedHat Enterprise Linux, CentOS, Fedora, openSUSE) 上说,这种安装方式需要手动安装两个依赖socatlogrotate ,实际上在我这个最新的CentOS 7.9.2009 (Core)上不需要。

配置

创建数据及日志目录

mkdir -p /data/rabbitmq/db
mkdir -p /data/rabbitmq/log
chown -R rabbitmq:rabbitmq /data/rabbitmq

创建环境变量配置文件

vi /etc/rabbitmq/rabbitmq-env.conf

使用上一步创建的目录,如下配置:

# 数据目录
MNESIA_BASE=/data/rabbitmq/db
# 日志目录
LOG_BASE=/data/rabbitmq/log

💡小心:以上的键值对等号两边不能有空格!否则不生效!

创建主配置文件

vi /etc/rabbitmq/rabbitmq.conf

参考 rabbitmq.conf.example 配置默认用户(一步到位):

# 首次运行创建的默认用户,根据实际情况指定用户名及密码
default_user = root
default_pass = 123456

修改最大打开文件句柄限制

mkdir -p /etc/systemd/system/rabbitmq-server.service.d
vi /etc/systemd/system/rabbitmq-server.service.d/limits.conf

根据官方建议,生产环境不小于65536、开发环境4096

[Service]
LimitNOFILE=65536

验证

启动服务

systemctl start rabbitmq-server

查看状态

# 确认服务成功运行
[root@my-centos7 ~]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ broker
   Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/rabbitmq-server.service.d
           └─limits.conf
   Active: active (running) since 三 2022-12-28 19:51:39 CST; 6s ago
  Process: 17253 ExecStop=/usr/sbin/rabbitmqctl shutdown (code=exited, status=0/SUCCESS)
 Main PID: 17331 (beam.smp)
...

# 确认最大打开文件句柄限制生效
[root@my-centos7 ~]# cat /proc/17331/limits
Limit                     Soft Limit           Hard Limit           Units
...
Max open files            65536                65536                files
...

# 确认数据及日志目录生效
[root@my-centos7 ~]# rabbitmq-diagnostics status
Status of node rabbit@my-centos7 ...
Runtime

OS PID: 17331
OS: Linux
Uptime (seconds): 254
Is under maintenance?: false
RabbitMQ version: 3.10.0
Node name: rabbit@my-centos7
Erlang configuration: Erlang/OTP 23 [erts-11.2.2.10] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Erlang processes: 265 used, 1048576 limit
Scheduler run queue: 1
Cluster heartbeat timeout (net_ticktime): 60

Plugins

Enabled plugin file: /etc/rabbitmq/enabled_plugins
Enabled plugins:


Data directory

# 数据目录
Node data directory: /data/rabbitmq/db/rabbit@my-centos7
Raft data directory: /data/rabbitmq/db/rabbit@my-centos7/quorum/rabbit@my-centos7

Config files

 * /etc/rabbitmq/rabbitmq.conf

# 日志目录
Log file(s)

 * /data/rabbitmq/log/rabbit@my-centos7.log
 * /data/rabbitmq/log/rabbit@my-centos7_upgrade.log
 * <stdout>

...

File Descriptors

Total: 2, limit: 65439
Sockets: 0, limit: 58893

Free Disk Space

Low free disk space watermark: 0.05 gb
Free disk space: 50.3608 gb

Totals

Connection count: 0
Queue count: 0
Virtual host count: 1

Listeners

Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0

OK!

启用管理插件

rabbitmq-plugins enable rabbitmq_management

开机自启动

systemctl enable rabbitmq-server