Linux安装RabbitMQ

安装步骤

rabbitmq使用erlang开发,依赖于erlang,所以需要先下载erlang,且版本要兼容:

可在官网查看erlangrabbitmq的版本对应关系

复制代码
https://www.rabbitmq.com/docs/which-erlang

CentOs7安装运行

下载

下载地址

复制代码
https://www.rabbitmq.com/docs/download

rabbitmq使用erlang开发,依赖于erlang,所以要先下载erlang,点击如下位置进行erlang的下载:

点击后跳转github,跳转后选择红框处25的版本,以对应当前最新的4.0.3版本mq:

然后再点击Tags后选择版本下载:

最后选择el7 x86的版本点击进行下载:

然后再下载MQ:

其分为docker下载、安装包下载,这里演示linuxCentOS7使用安装包方式下载及安装

点击如下内容:

Direct Downloads标题下点击下载

安装运行

都下载完成后,将安装包放入linux中,然后进入安装包存放目录,执行rpm -ivh安装命令:

命令:

  • 安装erlang:rpm -ivh erlang-26.2.5.5-1.el7.x86_64.rpm

  • 安装rabbitmq:rpm -ivh rabbitmq-server-4.0.3-1.el8.noarch.rpm

    root@Centos7 rabbitmq\]# rpm -ivh erlang-26.2.5.5-1.el7.x86_64.rpm 准备中... ################################# \[100%\]正在升级/安装... 1:erlang-26.2.5.5-1.el7 ################################# \[100%

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

安装完成后使用service rabbitmq-server start命令启动mq

复制代码
[root@Centos7 rabbitmq]# service rabbitmq-server start
Redirecting to /bin/systemctl start rabbitmq-server.service
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.

启动后如果出现上面Job for rabbitmq-server.service failed.......的失败问题,需要使用如下命令进行配置:

复制代码
vi /etc/rabbitmq/rabbitmq-env.conf

vi命令执行后,在文件里面添加这一行:NODENAME=rabbit@localhost,保存。
注意rabbitmq-env.conf这个文件没有,打开之后自动创建。

完成配置后在重启并查看mq状态:

  • 重启命令:systemctl restart rabbitmq-server
  • 状态查看命令:systemctl status rabbitmq-server

如下即为成功启动:

复制代码
[root@Centos7 rabbitmq]# vi /etc/rabbitmq/rabbitmq-env.conf
[root@Centos7 rabbitmq]# systemctl restart rabbitmq-server
[root@Centos7 rabbitmq]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ broker
   Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
   Active: active (running) since 五 2024-11-15 09:22:27 CST; 11s ago
  Process: 8477 ExecStop=/usr/sbin/rabbitmqctl shutdown (code=exited, status=0/SUCCESS)
 Main PID: 8522 (beam.smp)
    Tasks: 25
   CGroup: /system.slice/rabbitmq-server.service
           ├─8522 /usr/lib64/erlang/erts-14.2.5.4/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -pc unicode -P 1048576 -t 5000000 -stbt db...
           ├─8536 erl_child_setup 32768
           ├─8553 sh -s disksup
           ├─8554 /usr/lib64/erlang/lib/os_mon-2.9.1/priv/bin/memsup
           ├─8555 /usr/lib64/erlang/lib/os_mon-2.9.1/priv/bin/cpu_sup
           ├─8558 /usr/lib64/erlang/erts-14.2.5.4/bin/inet_gethost 4
           ├─8559 /usr/lib64/erlang/erts-14.2.5.4/bin/inet_gethost 4
           └─8563 /bin/sh -s rabbit_disk_monitor

11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Doc guides:  https://www.rabbitmq.com/docs
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Support:     https://www.rabbitmq.com/docs/contact
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Tutorials:   https://www.rabbitmq.com/tutorials
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Monitoring:  https://www.rabbitmq.com/docs/monitoring
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Upgrading:   https://www.rabbitmq.com/docs/upgrade
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Logs: /var/log/rabbitmq/rabbit@localhost.log
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: <stdout>
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Config file(s): (none)
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Starting broker... completed with 3 plugins.
11月 15 09:22:27 Centos7 systemd[1]: Started RabbitMQ broker.
开启web页面

开启rabbitmq的web管理界面

使用rabbitmq-plugins enable rabbitmq_management命令,注意开启后需要使用systemctl restart rabbitmq-server命令重启rabbitmq服务

复制代码
[root@Centos7 rabbitmq]# 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...
Plugin configuration unchanged.
[root@Centos7 rabbitmq]# systemctl restart rabbitmq-server

完成管理页面配置后,还需要开放防火墙(如果有使用防火墙):

  • 开放15672端口: firewall-cmd --zone=public --add-port=15672/tcp --permanent

  • 开放5672端口: firewall-cmd --zone=public --add-port=5672/tcp --permanent

  • 重启防火墙: firewall-cmd --reload

  • 查看防火墙端口状态: firewall-cmd --list-all

    root@Centos7 rabbitmq\]# firewall-cmd --zone=public --add-port=15672/tcp --permanent Warning: ALREADY_ENABLED: 15672:tcp success \[root@Centos7 rabbitmq\]# firewall-cmd --zone=public --add-port=5672/tcp --permanent Warning: ALREADY_ENABLED: 5672:tcp success \[root@Centos7 rabbitmq\]# firewall-cmd --reload success \[root@Centos7 rabbitmq\]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client ssh ports: 15672/tcp 5672/tcp 6379/tcp 8088/tcp 22/tcp 3306/tcp 8888/tcp 8080/tcp 8719/tcp 9001/tcp 443/tcp 9000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

新增管理用户

新增管理员用户,rabbitmq默认自带一个guest用户,这里增加一个新的管理员用户方便以后使用

新增用户:

用户名密码都是admin:

复制代码
rabbitmqctl add_user admin admin

设置用户分配操作权限:

复制代码
rabbitmqctl set_user_tags admin administrator

administrator为用户级别,所有的级别为:

  • 1、administrator 可以登录控制台、查看所有信息、可以对rabbitmq进行管理
  • 2、monitoring 监控者, 可登录控制台,查看所有信息
  • 3、policymaker 策略制定者, 可登录控制台,指定策略
  • 4、managment 普通管理员, 可登录控制台

为用户添加资源权限

复制代码
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
  • -p /: --p 参数后面跟的是虚拟主机名称,这里 / 表示默认的根虚拟主机。
  • admin: 这是设置权限的用户账号。通常用于管理员操作。
  • ".*": 这是一个通配符模式,意味着对这个用户赋予了所有权限。"*" 代表任意字符,. 代表任意单个字符。
  • ".*"".*":这两个同样是指定该用户可以执行的所有操作,也是全部权限的表示。

这条命令的作用就是给用户 admin/ 虚拟主机上设置了完全权限,这意味着 admin 用户可以执行所有的操作,包括但不限于创建、删除队列,发布、取消消息等。

控制台执行如上的命令:

复制代码
[root@Centos7 rabbitmq]# rabbitmqctl add_user admin admin
Adding user "admin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
[root@Centos7 rabbitmq]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
[root@Centos7 rabbitmq]# rabbitmqctl set_permissions -p / admin  ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...

使用新账号登录:

进入后在Admin页签中如下图,用户处多了新加的admin

至此安装运行完成。

其他用户操作命令:

复制代码
rabbitmqctl change_password Username Newpassword 修改密码
rabbitmqctl delete_user Username 删除用户
rabbitmqctl list_users 查看用户清单

docker安装运行

访问网址:

复制代码
https://www.rabbitmq.com/docs/download

在安装完docker的linux中执行如下命令

复制代码
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management

该命令会自动安装rabbitmq,执行效果如下,可能会很慢,需要等待:

复制代码
[root@Centos7 ~]# docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management
Unable to find image 'rabbitmq:4.0-management' locally
4.0-management: Pulling from library/rabbitmq
afad30e59d72: Already exists 
211e97f904c7: Already exists 
b7d633cb09df: Already exists 
0357761da170: Already exists 
ca95b127b98a: Already exists 
3ec3ceaa0dcb: Already exists 
7037c52023fb: Already exists 
d738327fa668: Already exists 
5a286d22c8dd: Already exists 
e971f4d4bd73: Pull complete 
Digest: sha256:a0ea806ba32e6e9776aa83f66796e6c746606e669220b26359bd461c79a2ba14
Status: Downloaded newer image for rabbitmq:4.0-management
.........
2024-11-22 01:53:31.112725+00:00 [info] <0.9.0> Time to start RabbitMQ: 3371 ms

如下即为成功,但是这是前台运行,shell窗口无法执行其他操作,停止后执行如下命令转为后台启动

复制代码
[root@Centos7 ~]# docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management
9f1174c754d6a7be62986f092de1d530fef8d69a47a40c244831de63ccb0ddad

可查看版本信息:

复制代码
[root@Centos7 ~]# docker run --rm rabbitmq rabbitmqctl version
4.0.3

最后使用你的机器ip:15672访问管理页面即可,默认用户名密码都是guest

管理页面参数介绍

顶部标签

RabbitMQ 管理界面中的顶部标签(OverviewConnectionsChannelsExchangesQueues and StreamsAdmin)提供了对 RabbitMQ 集群的不同方面的管理和监控功能。以下是各个标签的详细含义和作用:

1. Overview(概览)

  • 功能:
    • 提供 RabbitMQ 集群或单个节点的总体运行状态。
    • 显示有关队列、交换机、连接、通道等的统计信息。
  • 包含的主要信息:
    • Totals:队列中的消息总数、消息速率(每分钟发布/确认/投递的消息数量)。
    • Nodes:显示所有节点的资源使用(内存、磁盘、CPU、Erlang 进程等)。
    • Churn Statistics:统计连接的创建和关闭速率。

2. Connections(连接)

  • 功能:
    • 显示所有客户端到 RabbitMQ 的 TCP 连接。
    • 允许您查看每个连接的详细信息。
  • 包含的主要信息:
    • 客户端 IP 和端口号。
    • 协议(如 AMQP 0-9-1)。
    • 与该连接相关的通道数量。
    • 状态(如 runningidle)。
  • 操作:
    • 可以强制关闭不需要的连接(Terminate)。

3. Channels(通道)

  • 功能:
    • 显示 RabbitMQ 中所有的 AMQP 通道。
    • 通道是 RabbitMQ 的逻辑通信通道,客户端通过它们与 RabbitMQ 交换数据。
  • 包含的主要信息:
    • 通道的状态(如空闲或活动)。
    • 与通道关联的连接。
    • 消息流速率(如发布、确认)。
  • 操作:
    • 可以关闭特定通道以强制客户端重新创建。

4. Exchanges(交换机)

  • 功能:
    • 列出 RabbitMQ 中的所有交换机。
    • 交换机用于根据路由键将消息转发到适当的队列。
  • 包含的主要信息:
    • 交换机的类型(如 directfanouttopicheaders)。
    • 是否持久化(Durable)和是否自动删除(Auto-delete)。
    • 消息路由统计信息。
  • 操作:
    • 创建新的交换机。
    • 删除不需要的交换机。

5. Queues and Streams(队列和流)

  • 功能:
    • 列出所有队列和流(Streams),并显示每个队列的详细信息。
    • 队列是存储消息的地方,消费者可以从中获取消息。
    • 是一种特殊的队列类型,适合高吞吐量消息。
  • 包含的主要信息:
    • 队列名称、队列中的消息数、消费者数量。
    • 消息的入队和出队速率。
    • 消费者的确认和拒绝统计。
  • 操作:
    • 查看消息详细信息(如消息内容和元数据)。
    • 删除队列或流。

6. Admin(管理)

  • 功能:
    • 配置和管理 RabbitMQ 的核心设置。
  • 包含的主要功能:
    • Users(用户管理):
      • 管理 RabbitMQ 的用户账户。
      • 配置权限(VHost 的访问权限)。
    • Policies(策略):
      • 定义 RabbitMQ 的策略,用于自动化操作(如队列的 TTL、镜像队列等)。
    • Permissions(权限管理):
      • 控制不同用户对交换机、队列的操作权限。
    • Parameters(插件参数):
      • 配置 RabbitMQ 插件(如 Shovel、Federation)。
    • Virtual Hosts(虚拟主机):
      • 创建和管理 RabbitMQ 的虚拟主机。
  • 操作:
    • 管理用户和策略。
    • 设置与虚拟主机和插件相关的参数。

这些标签页面让用户可以从不同维度监控和管理 RabbitMQ 集群,适合处理日常运维任务以及排查问题。

概要信息

在 RabbitMQ 管理界面的 Nodes 节点中,以下是各列的具体含义:

  1. Name (名称)
    • 表示 RabbitMQ 节点的名称,格式通常为 rabbit@主机名
    • 这个名称是由 RabbitMQ 启动时的主机名和 RabbitMQ 服务名称组成的,用来标识当前节点。
  2. File Descriptors (文件描述符)
    • 当前节点使用的文件描述符数量和可用文件描述符的上限。
    • 绿色部分显示当前使用的文件描述符数。
    • 右侧数字 显示总文件描述符限制(例如 1048576 available)。
    • 如果达到上限,可能会影响 RabbitMQ 的正常运行,因为文件描述符用于连接、日志等操作。
  3. Erlang Processes (Erlang 进程)
    • 当前节点的 Erlang 虚拟机(BEAM)运行的进程数量和可用进程上限。
    • 绿色部分显示当前运行的 Erlang 进程数。
    • 右侧数字 显示总进程限制(例如 1048576 available)。
    • Erlang 进程是 RabbitMQ 的基础构件,用于处理消息、通道、连接等。
  4. Memory (内存)
    • 当前 RabbitMQ 节点使用的内存大小。
    • 绿色部分 表示当前使用的内存量(例如 183 MiB)。
    • 右侧数字 显示内存的高水位值(例如 4.6 GiB high watermark)。超过高水位时,RabbitMQ 可能会暂停处理消息以防止过载。
  5. Disk Space (磁盘空间)
    • 当前 RabbitMQ 节点使用的磁盘空间量。
    • 绿色部分 表示磁盘可用空间(例如 11 GiB)。
    • 右侧数字 表示低水位值(例如 48 MiB low watermark)。如果磁盘可用空间小于低水位值,RabbitMQ 会停止接受新消息。
  6. Uptime (运行时间)
    • 当前节点从启动到现在的运行时间,格式为 时:分:秒(例如 7m 3s 表示已运行 7 分钟 3 秒)。
  7. Cores (核心数)
    • 当前节点使用的 CPU 核心数(例如 128)。
    • 核心数量可能与系统分配的资源有关。
  8. Info (信息)
    • 包括节点的运行状态、类型或其他信息标志。
    • basic 表示基本信息。
    • 其他标志(如 rss)可能与内存管理有关。
  9. Reset Stats (重置统计数据)
    • 按下 This Node 按钮可以重置该节点的统计数据。
    • 按下 All Nodes 按钮可以重置集群中所有节点的统计数据。

通过这些列,您可以直观地查看和监控 RabbitMQ 节点的资源使用和运行状态,便于判断节点是否运行正常。

卸载RabbitMQ

先停止RabbitMq服务

复制代码
systemctl stop rabbitmq-server

查看并卸载rabbitmq安装的相关列表

查看命令:

复制代码
yum list | grep rabbitmq

卸载命令(直接执行即可):

复制代码
yum -y remove rabbitmq-server.noarch

查看并卸载erlang安装的相关软件包

查看命令:

复制代码
yum list | grep erlang

卸载命令(直接执行即可):

复制代码
yum -y remove erlang-*

查找并删除erlang相关文件

复制代码
whereis erlang


[root@Centos7 ~]# whereis erlang
erlang: /usr/lib64/erlang

删除上面查出的erlang相关文件:

复制代码
[root@Centos7 ~]# rm -rf /usr/lib64/erlang

然后卸载完成。

相关推荐
专注API从业者34 分钟前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化
Lovyk2 小时前
Linux 正则表达式
linux·运维
Fireworkitte3 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9003 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char3 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
中科米堆5 小时前
中科米堆CASAIM自动化三维测量设备测量汽车壳体直径尺寸
运维·自动化·汽车·视觉检测
淮北也生橘125 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
缘华工业智维5 小时前
CNN 在故障诊断中的应用:原理、案例与优势
大数据·运维·cnn
开航母的李大7 小时前
软件系统运维常见问题
运维·服务器·系统架构·运维开发
Monly217 小时前
RabbitMQ:SpringAMQP 入门案例
spring boot·rabbitmq·java-rabbitmq