CentOS 7 离线安装软件(四)-- 消息队列
☀RabbitMQ
是一套开源的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
- CentOS 7 离线安装软件(一)– 操作系统
- CentOS 7 离线安装软件(二)– 安装方式
- CentOS 7 离线安装软件(三)– 关系数据库
- CentOS 7 离线安装软件(四)– 消息队列(本篇)
- CentOS 7 离线安装软件(五)– 应用容器引擎
准备
在
官网
了解几种安装方式的过程中,发现其依赖Erlang
,由于CentOS7最高支持Erlang23,并且只有软件仓库和RPM
包两种安装方式。
所以最终只能统一选择RPM
包的安装方式了,需仔细阅读官网这几个页面的内容:
- Installing on RPM-based Linux (RedHat Enterprise Linux, CentOS, Fedora, openSUSE)
- RabbitMQ Erlang Version Requirements
- Configuration
下载
按照 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)
上说,这种安装方式需要手动安装两个依赖socat
和logrotate
,实际上在我这个最新的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