CentOS 7 环境下 RabbitMQ 的部署与 Web 管理界面基本使用指南

目录

前言

这篇博客讲述如何在centos7系统上安装、配置目前业内使用最广泛的消息中间件RabbitMQ,以及web控制台的基本操作,这篇博客是通过docker进行安装部署的,对docker不熟悉的朋友可以参考我的这篇博客docker详解

1.安装docker

如果你的系统还没有安装 Docker,需要先安装docker,centos系统直接通过yum工具安装即可,可以通过以下命令安装并启动 Docker

bash 复制代码
sudo yum update -y                # 更新系统包
sudo yum install -y docker       # 安装 Docker
sudo systemctl start docker      # 启动 Docker 服务
sudo systemctl enable docker     # 设置 Docker 开机自启

2.防火墙开放端口

RabbitMQ有两个重要的访问端口,web控制台服务和消息收发服务,一定要确保防火墙开放了这两个端口,(注意默认端口占用的情况)

bash 复制代码
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent   # AMQP 协议端口
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent  # 管理界面 Web 端口
sudo firewall-cmd --reload  # 重新加载防火墙配置

3. docker部署

  1. 拉取 RabbitMQ 镜像

    我们要拉取包含 Web 控制台界面的 management版本镜像,这样可以通过浏览器方便地管理 RabbitMQ。

    bash 复制代码
    # 拉取当前官方认定的最新稳定版本,且该版本已预装了 RabbitMQ 的控制台插件
    sudo docker pull rabbitmq:management
    # 如果需要拉取特定版本的带控制台插件的 RabbitMQ 镜像,需要指定具体版本号
    sudo docker pull rabbitmq:3.12.0-management
  2. 配置数据卷,创建数据持久化目录

    为了防止容器删除或重启时数据丢失,我们要将 RabbitMQ 的数据目录挂载到宿主机上。这个目录是用来持久化RabbitMQ 的交换机、队列、消息等数据。

    bash 复制代码
    # 这个目录用于映射容器内的 /var/lib/rabbitmq目录
    sudo mkdir -p /usr/local/rabbitmq/data  # 或者其他你喜欢的路径
  3. 运行 RabbitMQ 容器

    使用 docker run命令启动 RabbitMQ 容器

    bash 复制代码
    sudo docker run -d \
      --name rabbitmq \
      -p 5672:5672 \       # 映射 AMQP 协议端口
      -p 15672:15672 \     # 映射管理界面 Web 端口
      -v /usr/local/rabbitmq/data:/var/lib/rabbitmq \  # 挂载数据卷用于持久化
      -e RABBITMQ_DEFAULT_USER=admin \    # 设置默认用户名
      -e RABBITMQ_DEFAULT_PASS=admin123 \ # 设置默认用户密码
      --restart=unless-stopped \          # 容器异常退出时自动重启(可选)
      rabbitmq:management
  4. 查看容器状态和日志

    运行状态为up, 启动日志中没有error信息,就说明部署成功

    bash 复制代码
    sudo docker ps  
    sudo docker logs -f rabbitmq  

4.访问 Web 控制台界面

  1. 打开浏览器,访问 http://<你的CentOS服务器IP地址>:15672。
  2. 使用你在 docker run命令中通过环境变量设置的用户名(admin)和密码(admin123)登录。如果能看到 RabbitMQ 的管理后台,说明安装成功

5.详解RabbitMQ控制台

Web 管理界面概览

登陆成功后,我们会看到上面几个重要的选项,这些选项组成了RabbitMQ 的核心操作和功能。

选项 核心功能
​​Overview (概览)​ 监控全局消息堆积数(Ready, Unacked, Total)、消息流转速率、连接/信道/队列/消费者总数,以及节点资源状态(内存、磁盘)
​​Connections (连接)​ 查看所有生产者和消费者的 TCP 连接状态(运行中 running 或空闲 idle)、客户端地址等
​​​​Channels (信道)​​ 监控基于连接创建的轻量级信道详情,如未确认消息数 (Unacked)、预取数 (Prefetch) 和消息处理速率
​​Exchanges (交换机)​​ 管理所有交换机,查看其类型(direct, fanout, topic, headers)、绑定和消息路由速率
​​Queues (队列) ​​​核心监控区​​。查看各队列的消息数(Ready, Unacked)、状态、消费者数量,并可进行发布消息、清空队列等操作
Admin (管理)​​ ​​​集中管理用户、虚拟主机 (vhost)、策略 (Policies) 和权限

用户与权限规则

  1. 在Admin选项中我们可以创建用户信息,包括用户、密码、角色标签 。用户创建在RabbitMQ中是一个非常重要的操作,因为rabbitMQ基于多租户隔离 机制,一般情况下,用户会创建或者归属于 某一个或者多个虚拟主机(vhost)​​ ,而虚拟主机(vhost)​​拥有自己​​完全独立​​的交换机、队列、绑定和权限体系。因此,客户端与RabbitMQ建立连接时,需要指定用户、虚拟主机信息,才能访问目标交换机和队列

  2. 在 ​​Admin > Users​​ 中管理用户,其权限由 ​​角色标签 (Tags)​​ 决定,从高到低如下

角色 权限说明
administrator ​最高权限,可管理用户、vhost、策略、插件等一切事务。
monitoring 可查看所有连接、信道、节点状态等监控信息,但不能修改配置
policymaker 可在其有权限的 vhost 内管理策略和参数
management 普通管理者,可管理其有权限的 vhost 内的资源(队列、交换机等
​​none 无管理权限,通常是普通的生产或消费用户

虚拟主机 (vhost) 逻辑隔离

  1. 我们可以在Admin选项中方便创建当前用户的虚拟主机,然后在当前虚拟主机上创建交换机和队列

  2. 虚拟主机 (vhost)​​ 是 RabbitMQ 中实现​​逻辑隔离和多租户支持​​的核心机制,作用类似于pg或者mysql数据库中的schema和database,每个虚拟主机vhost相当于一个独立的迷你 RabbitMQ 服务器**,拥有自己​​完全独立​​的交换机、队列、绑定和权限体系**。不同 vhost 下的资源互不可见,即使同名也互不干扰。

  3. 默认vhost​​:安装后存在一个名为 / 的默认虚拟主机vhost。

  4. 总结一下,虚拟主机 (vhost)​​ 主要是用于隔离不同环境(如 /dev, /test, /prod)或不同项目/团队,客户端连接时必须指定要访问的 vhost

交换机(Exchanges)和队列(Queues)

  1. 交换机和队列是消息中间件最重要的两个概念,一般实际开发中,交换机负责将消息路由到指定队列,然后队列将消息发送到监听的消费者客户端。
  2. 我们在Exchanges选项可以方便的创建交换机,创建或管理交换机时需特别关注:
  • 类型:决定了消息路由到队列的规则
类型 规则
Direct 定向路由,精确匹配 Routing Key
Fanout 广播到所有绑定队列
Topic 主题路由, 使用通配符 (*, #) 匹配 Routing Key
Headers 基于消息头 (Headers) 键值对匹配
  • 特性:可设置为 持久化 (Durable),以在 Broker 重启后依然存在
  1. 在队列( Queues) 选项卡中,队列的行为和特性可通过多种参数精细控制,包括持久化、自动删除、队列长度限制、死信交换机等等,可以在创建队列时进行配置。
相关推荐
Roam-G4 小时前
在 Mac 上使用 Docker 安装 Milvus 2.6.2
docker·容器·milvus
敲上瘾5 小时前
Docker镜像构建指南:Dockerfile语法与docker build命令全解析
linux·服务器·docker·微服务·容器
北海-cherish8 小时前
vue中的 watchEffect、watchAsyncEffect、watchPostEffect的区别
前端·javascript·vue.js
YC运维9 小时前
Dockerfile实战案例详解
运维·docker·容器
2501_915909069 小时前
HTML5 与 HTTPS,页面能力、必要性、常见问题与实战排查
前端·ios·小程序·https·uni-app·iphone·html5
white-persist10 小时前
Python实例方法与Python类的构造方法全解析
开发语言·前端·python·原型模式
Java 码农11 小时前
Centos7 maven 安装
java·python·centos·maven
新中地GIS开发老师11 小时前
Cesium 军事标绘入门:用 Cesium-Plot-JS 快速实现标绘功能
前端·javascript·arcgis·cesium·gis开发·地理信息科学
Superxpang11 小时前
前端性能优化
前端·javascript·vue.js·性能优化