Bootstrap

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的下载:

erlang下载1

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

25xOS7

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

git的tags

git下载erlang

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

对应7的版本

然后再下载MQ:

下载地址

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

点击如下内容:

CentOS下载

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

1115 09:22:27 Centos7 rabbitmq-server[8522]: Doc guides:  https://www.rabbitmq.com/docs
1115 09:22:27 Centos7 rabbitmq-server[8522]: Support:     https://www.rabbitmq.com/docs/contact
1115 09:22:27 Centos7 rabbitmq-server[8522]: Tutorials:   https://www.rabbitmq.com/tutorials
1115 09:22:27 Centos7 rabbitmq-server[8522]: Monitoring:  https://www.rabbitmq.com/docs/monitoring
1115 09:22:27 Centos7 rabbitmq-server[8522]: Upgrading:   https://www.rabbitmq.com/docs/upgrade
1115 09:22:27 Centos7 rabbitmq-server[8522]: Logs: /var/log/rabbitmq/[email protected]
1115 09:22:27 Centos7 rabbitmq-server[8522]: <stdout>
1115 09:22:27 Centos7 rabbitmq-server[8522]: Config file(s): (none)
1115 09:22:27 Centos7 rabbitmq-server[8522]: Starting broker... completed with 3 plugins.
1115 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: 

之后便可以通过浏览器使用15672端口访问管理页面:

mq管理页面



新增管理用户

新增管理员用户,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下载mq

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

docker安装mq



管理页面参数介绍

顶部标签

顶部标签

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 集群,适合处理日常运维任务以及排查问题。


概要信息

nodes

在 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

然后卸载完成。

;