安装步骤
rabbitmq使用erlang开发,依赖于erlang,所以需要先下载erlang,且版本要兼容:
可在官网查看
erlang
与rabbitmq
的版本对应关系
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下载、安装包下载,这里演示
linux
中CentOS7
使用安装包方式下载及安装
点击如下内容:
在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 brokerLoaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)Active: active (running) since 五 2024-11-15 09:22:27 CST; 11s agoProcess: 8477 ExecStop=/usr/sbin/rabbitmqctl shutdown (code=exited, status=0/SUCCESS)Main PID: 8522 (beam.smp)Tasks: 25CGroup: /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_monitor11月 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_managementrabbitmq_management_agentrabbitmq_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: defaulticmp-block-inversion: nointerfaces: ens33sources: services: dhcpv6-client sshports: 15672/tcp 5672/tcp 6379/tcp 8088/tcp 22/tcp 3306/tcp 8888/tcp 8080/tcp 8719/tcp 9001/tcp 443/tcp 9000/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
之后便可以通过浏览器使用15672端口访问管理页面:
新增管理用户
新增管理员用户,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 管理界面中的顶部标签(Overview、Connections、Channels、Exchanges、Queues and Streams、Admin)提供了对 RabbitMQ 集群的不同方面的管理和监控功能。以下是各个标签的详细含义和作用:
1. Overview(概览)
- 功能:
- 提供 RabbitMQ 集群或单个节点的总体运行状态。
- 显示有关队列、交换机、连接、通道等的统计信息。
- 包含的主要信息:
- Totals:队列中的消息总数、消息速率(每分钟发布/确认/投递的消息数量)。
- Nodes:显示所有节点的资源使用(内存、磁盘、CPU、Erlang 进程等)。
- Churn Statistics:统计连接的创建和关闭速率。
2. Connections(连接)
- 功能:
- 显示所有客户端到 RabbitMQ 的 TCP 连接。
- 允许您查看每个连接的详细信息。
- 包含的主要信息:
- 客户端 IP 和端口号。
- 协议(如 AMQP 0-9-1)。
- 与该连接相关的通道数量。
- 状态(如
running
或idle
)。
- 操作:
- 可以强制关闭不需要的连接(Terminate)。
3. Channels(通道)
- 功能:
- 显示 RabbitMQ 中所有的 AMQP 通道。
- 通道是 RabbitMQ 的逻辑通信通道,客户端通过它们与 RabbitMQ 交换数据。
- 包含的主要信息:
- 通道的状态(如空闲或活动)。
- 与通道关联的连接。
- 消息流速率(如发布、确认)。
- 操作:
- 可以关闭特定通道以强制客户端重新创建。
4. Exchanges(交换机)
- 功能:
- 列出 RabbitMQ 中的所有交换机。
- 交换机用于根据路由键将消息转发到适当的队列。
- 包含的主要信息:
- 交换机的类型(如
direct
、fanout
、topic
、headers
)。 - 是否持久化(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 的虚拟主机。
- Users(用户管理):
- 操作:
- 管理用户和策略。
- 设置与虚拟主机和插件相关的参数。
这些标签页面让用户可以从不同维度监控和管理 RabbitMQ 集群,适合处理日常运维任务以及排查问题。
概要信息
在 RabbitMQ 管理界面的 Nodes 节点中,以下是各列的具体含义:
- Name (名称)
- 表示 RabbitMQ 节点的名称,格式通常为
rabbit@主机名
。 - 这个名称是由 RabbitMQ 启动时的主机名和 RabbitMQ 服务名称组成的,用来标识当前节点。
- 表示 RabbitMQ 节点的名称,格式通常为
- File Descriptors (文件描述符)
- 当前节点使用的文件描述符数量和可用文件描述符的上限。
- 绿色部分显示当前使用的文件描述符数。
- 右侧数字显示总文件描述符限制(例如
1048576 available
)。 - 如果达到上限,可能会影响 RabbitMQ 的正常运行,因为文件描述符用于连接、日志等操作。
- Erlang Processes (Erlang 进程)
- 当前节点的 Erlang 虚拟机(BEAM)运行的进程数量和可用进程上限。
- 绿色部分显示当前运行的 Erlang 进程数。
- 右侧数字显示总进程限制(例如
1048576 available
)。 - Erlang 进程是 RabbitMQ 的基础构件,用于处理消息、通道、连接等。
- Memory (内存)
- 当前 RabbitMQ 节点使用的内存大小。
- 绿色部分表示当前使用的内存量(例如
183 MiB
)。 - 右侧数字显示内存的高水位值(例如
4.6 GiB high watermark
)。超过高水位时,RabbitMQ 可能会暂停处理消息以防止过载。
- Disk Space (磁盘空间)
- 当前 RabbitMQ 节点使用的磁盘空间量。
- 绿色部分表示磁盘可用空间(例如
11 GiB
)。 - 右侧数字表示低水位值(例如
48 MiB low watermark
)。如果磁盘可用空间小于低水位值,RabbitMQ 会停止接受新消息。
- Uptime (运行时间)
- 当前节点从启动到现在的运行时间,格式为
时:分:秒
(例如7m 3s
表示已运行 7 分钟 3 秒)。
- 当前节点从启动到现在的运行时间,格式为
- Cores (核心数)
- 当前节点使用的 CPU 核心数(例如
128
)。 - 核心数量可能与系统分配的资源有关。
- 当前节点使用的 CPU 核心数(例如
- Info (信息)
- 包括节点的运行状态、类型或其他信息标志。
basic
表示基本信息。- 其他标志(如
rss
)可能与内存管理有关。
- 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
然后卸载完成。