rabbitMQ入门指南:在centos stream 9环境中部署和使用rabbitMQ

1. 简介

1.1 RabbitMQ概述

  RabbitMQ是一款开源的消息代理和队列服务器,它允许应用程序通过常见的消息队列协议来交换数据。它在全球范围内被小型创业公司和大型企业广泛使用,是最广泛部署的开源消息代理。它支持多种消息队列协议,但最常用的是基于AMQP(高级消息队列协议)的协议。RabbitMQ广泛应用于大规模分布式系统,它可以用来解耦系统组件,以及在组件之间进行可靠的消息传递。

官网地址:https://www.rabbitmq.com/

1.2 RabbitMQ的优点和应用场景

  RabbitMQ具有高度灵活的路由功能,稳定的可靠性和集群功能,以及对多种协议的支持,这使得它能够应对各种复杂的应用场景。例如,它可以用于处理高峰流量,通过缓冲消息来保护系统免受过载。同时,它也被广泛应用在微服务架构中,作为服务间的通信工具,提供可靠、灵活的消息交换能力。

2. RabbitMQ的安装准备

2.1 硬件要求

  RabbitMQ对硬件的要求取决于实际的消息负载。对于较小的部署,只需要一个具有适量RAM(例如1GB或更多)的服务器。对于更大的部署,您可能需要更多的RAM和更多的CPU资源。请注意,RabbitMQ是内存和磁盘驱动的,所以对这两项资源的需求将取决于消息的数量和大小。

2.2 软件依赖

  在安装RabbitMQ之前,您需要在系统中安装Erlang运行环境,因为RabbitMQ是用Erlang语言编写的。可以从Erlang官方网站下载适合操作系统的版本。

2.3 安装前的系统配置检查

  在开始安装之前,建议检查以下系统信息:确认操作系统版本(本教程将使用CentOS Stream 9),因为最新版本的RabbitMQ需要再openssl1.1以上版本下运行,如果不基于新的系统就需要升级openssl。所以安装前需要检查openssl版本

[root@localhost ~]# openssl version
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)

3. 在CentOS下安装RabbitMQ

3.1 下载RabbitMQ安装包

访问托管在github上的地址:https://github.com/rabbitmq/rabbitmq-server/releases,选择下载rabbitmq-server-3.12.0-1.el8.noarch.rpm
,大约16.7 M
,该安装包不需要依赖其他的类库.
在这里插入图片描述

3.2 下载Erlang

因为我们要安装的版本是3.12.0,在该本的github兼容说明中有下面这句话

This release requires Erlang 25.0 or later.

所以我们下载的Erlang版本不能低于25.0版本,访问RabbitMQ开发团队给我们提供的一个Erlang综合包:https://github.com/rabbitmq/erlang-rpm/releases,因为我的系统是centos stream 9,所以我们选择下载erlang-25.3.2.1-1.el9.x86_64.rpm,大约20.3 M

在这里插入图片描述

3.3 安装Erlang

在Erlang安装包所在的目录下执行rpm的安装命令:

rpm -ivh erlang-25.3.2.1-1.el9.x86_64.rpm

安装成功后

[root@localhost home]# rpm -ivh erlang-25.3.2.1-1.el9.x86_64.rpm
警告:erlang-25.3.2.1-1.el9.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID cc4bbe5b: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:erlang-25.3.2.1-1.el9            ################################# [100%]
[root@localhost home]# 

查询版本

[root@localhost home]# erl -version
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 13.2.2.1
[root@localhost home]# 

3.4 安装RabbitMQ

在RabbitMQ安装包所在的目录下执行rpm的安装命令:

rpm -ivh rabbitmq-server-3.12.0-1.el8.noarch.rpm

安装成功后

[root@localhost home]# rpm -ivh rabbitmq-server-3.12.0-1.el8.noarch.rpm 
警告:rabbitmq-server-3.12.0-1.el8.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 6026dfca: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:rabbitmq-server-3.12.0-1.el8     ################################# [100%]
/usr/lib/tmpfiles.d/rabbitmq-server.conf:1: Line references path below legacy directory /var/run/, updating /var/run/rabbitmq → /run/rabbitmq; please update the tmpfiles.d/ drop-in file accordingly.
[root@localhost home]# 

3.4 启动RabbitMQ服务

查看rabbitmqctl管理工具的安装位置

[root@localhost ~]# whereis rabbitmqctl
rabbitmqctl: /usr/sbin/rabbitmqctl /usr/share/man/man8/rabbitmqctl.8.gz

使用rpm自带依赖安装包安装完成后,RabbitMQ已经配置在系统中,我们可以可以通过servicesystemctl管理RabbitMQ服务

servicesystemctl都是用于管理系统服务的命令行工具

  • service命令通常在传统的SysV init系统(如CentOS 6及其之前的版本)中使用,
    命令语法service <service-name> start
  • systemctl命令是在采用systemd初始化系统的Linux发行版(如CentOS 7及其之后的版本)中使用,
    命令语法systemctl start <service-name>
    在CentOS 7及更高版本中,service命令仍然可用,但实际上它是通过systemctl进行调用的。我更加推荐使用systemctl.

常用的命令

  1. 开机启动服务 systemctl enable rabbitmq-server
  2. 启动服务systemctl start rabbitmq-server
  3. 查询状态systemctl status rabbitmq-server
  4. 重启服务systemctl restart rabbitmq-server

rabbitmqctl start_app是RabbitMQ自带的命令行启动工具,systemctl start rabbitmq-server是通过系统级别的服务管理工具启动RabbitMQ服务。一般情况下,使用systemctl start rabbitmq-server更常见,因为它会确保RabbitMQ以服务的形式在系统启动时自动运行,并受系统级别的管理和监控。
类似的还有关闭命令 rabbitmqctl stop_app

下面是执行的过程,如果没有加入开机启动时,在查询状态时会显示disabled;加入开机启动会显示enabled;当启动服务后,Active会显示active (running) ,此时我们的RabbitMQ服务就已经启动了。

[root@localhost ~]# systemctl status rabbitmq-server
○ rabbitmq-server.service - RabbitMQ broker
     Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; preset: disabled)
     Active: inactive (dead)
[root@localhost ~]# systemctl enable rabbitmq-server
Created symlink /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service → /usr/lib/systemd/system/rabbitmq-server.service.
[root@localhost ~]# systemctl status rabbitmq-server
○ rabbitmq-server.service - RabbitMQ broker
     Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; preset: disabled)
     Active: inactive (dead)
[root@localhost ~]# systemctl start rabbitmq-server
[root@localhost ~]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ broker
     Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; preset: disabled)
     Active: active (running) since Mon 2023-06-05 22:36:20 CST; 2s ago
   Main PID: 4504 (beam.smp)
      Tasks: 25 (limit: 10921)
     Memory: 143.2M
        CPU: 4.201s
     CGroup: /system.slice/rabbitmq-server.service
             ├─4504 /usr/lib64/erlang/erts-13.2.2.1/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -pc unicode -P 1048576 -t 5000>
             ├─4517 erl_child_setup 32768
             ├─4542 /usr/lib64/erlang/erts-13.2.2.1/bin/epmd -daemon
             ├─4563 /usr/lib64/erlang/erts-13.2.2.1/bin/inet_gethost 4
             ├─4564 /usr/lib64/erlang/erts-13.2.2.1/bin/inet_gethost 4
             └─4567 /bin/sh -s rabbit_disk_monitor

6月 05 22:36:18 localhost.localdomain rabbitmq-server[4504]:   Release series support status: supported
6月 05 22:36:18 localhost.localdomain rabbitmq-server[4504]:   Doc guides:  https://rabbitmq.com/documentation.html
6月 05 22:36:18 localhost.localdomain rabbitmq-server[4504]:   Support:     https://rabbitmq.com/contact.html
6月 05 22:36:18 localhost.localdomain rabbitmq-server[4504]:   Tutorials:   https://rabbitmq.com/getstarted.html
6月 05 22:36:18 localhost.localdomain rabbitmq-server[4504]:   Monitoring:  https://rabbitmq.com/monitoring.html
6月 05 22:36:18 localhost.localdomain rabbitmq-server[4504]:   Logs: /var/log/rabbitmq/[email protected]
6月 05 22:36:18 localhost.localdomain rabbitmq-server[4504]:         <stdout>
6月 05 22:36:18 localhost.localdomain rabbitmq-server[4504]:   Config file(s): (none)
6月 05 22:36:20 localhost.localdomain rabbitmq-server[4504]:   Starting broker... completed with 0 plugins.
6月 05 22:36:20 localhost.localdomain systemd[1]: Started RabbitMQ broker.

3.5 RabbitMQ提供的管理工具

RabbitMQ安装完成后,还为我们提供了一些管理工具,可以执行一些操作和诊断,这些工具存在 **/usr/sbin/**目录下:

  • rabbitmqctl:这是一个非常重要的命令行工具,用于管理RabbitMQ服务器。可以使用它来查看服务器状态,列出队列和交换机,以及执行其他管理员操作,例如添加用户、更改密码、管理虚拟主机等。
#列出所有RabbitMQ用户
rabbitmqctl list_users

#创建一个新用户tom,并设置密码为abc123
rabbitmqctl add_user tom abc123

#为用户设置权限
#-p表示我们要设置权限的目标虚拟主机,/表示默认的虚拟主机
#tom是要设置权限的目标用户
#第一个".*"表示该用户在虚拟主机上对所有资源(exchange, queue等)都有配置(configure)权限
#第二个".*"表示该用户对所有资源都有写入(write)权限,
#第三个".*"表示该用户对所有资源都有读取(read)权限。
rabbitmqctl set_permissions -p / tom ".*" ".*" ".*"

#修改RabbitMQ用户的密码
#这种方法会立即更改密码,而不会提示确认新密码或输入旧密码。因此,请确保已正确键入新密码,并记住或安全地存储该密码。
rabbitmqctl change_password <user> <newpassword>

  • rabbitmq-diagnostics:这是一个诊断工具,用于检查RabbitMQ服务器的状态和性能。它可以提供关于服务器运行状况的详细信息,例如内存使用情况,磁盘空间,网络延迟等。
#输出RabbitMQ的状态
rabbitmq-diagnostics status

#检查RabbitMQ是否正常运行
rabbitmq-diagnostics ping
  • rabbitmq-plugins:这个工具用于管理RabbitMQ的插件。RabbitMQ有许多插件可以提供额外的功能,例如Web管理界面,消息追踪,集群状态查看等。可以使用这个工具来启用或禁用这些插件。
#列出所有可用的插件
rabbitmq-plugins list

#开启某个插件
rabbitmq-plugins enable < plugin-name >
  • rabbitmq-queues:这个工具用于管理和监视RabbitMQ中的队列。例如,可以使用它来列出所有的队列,查看队列的消息数量,查看队列的消费者数量等。

  • rabbitmq-server:这是RabbitMQ服务器本身,运行这个命令可以启动RabbitMQ服务器,但还是建议使用上面3.4 启动RabbitMQ服务的管理方式来启动。

  • rabbitmq-streams:这个工具是用于管理RabbitMQ的流功能的。RabbitMQ的流功能提供了一种类似于Apache Kafka的消息队列模型,可以处理大量的数据流。

  • rabbitmq-upgrade:这个工具用于升级RabbitMQ服务器和其插件。当RabbitMQ有新版本发布时,可以使用这个工具来进行升级操作,以获得新的特性和修复的问题。

在下面会使用这些工具来完成一些配置。

4. RabbitMQ的管理后台

4.1 管理后台的开启和访问

开启web管理页面:rabbitmq-plugins enable rabbitmq_management

[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management 
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.

注意:通过systemctl status firewalld查看防火墙是否开启,如果开启可以选择关闭或者添加rabbitmq需要的端口

  • 关闭和停止防火墙
#本次停止,但是下次开机还会启动
systemctl stop firewalld

#关闭开机启动
systemctl disable firewalld
  • 添加RabbitMQ需要的567215672端口
#添加5672端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
#添加15672端口
firewall-cmd --zone=public --add-port=15672/tcp --permanent

#重载生效
firewall-cmd --reload

RabbitMQ的管理后台是可以通过浏览器访问,浏览器地址输入 http://192.168.3.11:15672就可以看到管理后台的登陆页面(192.168.3.11是我的ip,请更改成rabbitmq所在服务器的ip)
在这里插入图片描述

4.2 创建管理后台登陆用户

查看服务内置的用户

[root@localhost ~]# rabbitmqctl list_users
Listing users ...
user	tags
guest	[administrator]

这里的guest/guest可以用于登陆,但是只允许本地登陆,所以远程访问还需要创建新的用户tom/abc123

[root@localhost ~]# rabbitmqctl add_user tom abc123
Adding user "tom" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
[root@localhost ~]# rabbitmqctl set_permissions -p / tom ".*" ".*" ".*"
Setting permissions for user "tom" in vhost "/" ...
[root@localhost ~]# rabbitmqctl set_user_tags tom administrator
Setting tags for user "tom" to [administrator] ...
[root@localhost ~]# rabbitmqctl list_users
Listing users ...
user	tags
tom	[administrator]
guest	[administrator]

命令的解释查看前面3.5 RabbitMQ提供的管理工具中的说明
在这里插入图片描述
登陆后的RabbitMQ管理后台页面
在这里插入图片描述

5. 总结

  本文提供了一份RabbitMQ的安装指南,详解的介绍了在CentOS Stream 9环境中部署和使用RabbitMQ的所有关键步骤。从RabbitMQ的基本概念和应用场景开始,然后详细阐述了安装RabbitMQ的准备工作,包括硬件要求、软件依赖以及系统配置检查。然后详细介绍了在CentOS环境下安装和配置RabbitMQ的过程,以及RabbitMQ提供的各种管理工具的使用方法。最后,我们详细解释了如何开启并登陆到RabbitMQ的管理后台,关于管理后台的各种操作,后面会有新的文章介绍。

猜你喜欢

转载自blog.csdn.net/dougsu/article/details/131038545