首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RabbitMQ-虚拟主机(vhost)

RabbitMQ-虚拟主机(vhost)

作者头像
运维小路
发布2025-06-17 09:17:26
发布2025-06-17 09:17:26
6120
举报
文章被收录于专栏:运维小路运维小路

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

348篇原创内容

公众号

图片
图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ(本章节)

我们前面在介绍Kafka的时候,有一个Topic概念,它不仅仅是一个逻辑隔离的概念,也是实际存储内容的地方。在RabbitMQ里面有一个类似的概念,就是虚拟主机(vhost),它只是起到一个逻辑隔离,本身并不存储数据。

RabbitMQ 中的 vhost(Virtual Host,虚拟主机)是一个核心概念,它提供了一种逻辑上的隔离机制,允许在同一个 RabbitMQ 服务器实例上创建多个相互独立的消息环境。

我们可以把一个 RabbitMQ 想象成一个公寓大楼,而 vhost 就是这栋楼里独立的公寓单元。

vhost 的核心作用与特性

  1. 资源隔离:这是 vhost 最主要的目的。每个 vhost 拥有自己完全独立的:交换器,队列(这里才是消息的核心存储位置),绑定。不同 vhost 中的同名交换器、队列是完全不同的实体,彼此不可见、不互通。一个 vhost 中的消息无法直接路由到另一个 vhost 的队列。连接、通道、用户权限也都限定在特定的 vhost 内。
  2. 权限控制的基础:用户权限(读、写、配置)是基于 vhost 授予的。一个用户可以被授权访问一个或多个 vhost,在每个 vhost 中可以有不同的权限组合(例如,在 vhost A 有读写权限,在 vhost B 只有读权限)。没有权限的用户无法访问或操作其未被授权的 vhost 中的任何资源。
代码语言:javascript
复制
# 3. 授予所有虚拟主机(vhost)“/”操作权限(配置,写,读)
./sbin/rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

3.连接隔离:客户端在连接 RabbitMQ 时,必须指定要连接到的 vhost,连接建立后,该连接及其创建的通道只能操作该 vhost 内的资源。

4.命名空间隔离:交换器、队列的名称只在它们所属的 vhost 内需要唯一。不同 vhost 中可以有完全同名的交换器或队列,它们不会冲突。

5.多租户支持:这是 vhost 最重要的应用场景之一。允许在同一个 RabbitMQ 集群上为不同的项目、团队、客户(租户)创建独立的 vhost。每个租户在自己的 vhost 内操作,感觉像是拥有一个“私有”的 RabbitMQ 实例,无需担心资源命名冲突或被其他租户干扰。

6.环境隔离:在开发、测试、预生产、生产环境中使用不同的 vhost,可以严格隔离数据流,避免测试消息污染生产环境。

默认 vhost: "/"是RabbitMQ 安装后默认存在一个名为 / (斜杠) 的 vhost。很多示例和默认配置都使用这个 vhost。默认的 guest 用户通常对这个 vhost 拥有管理员权限(但生产环境强烈建议禁用或修改该用户)。

如何管理 vhost

  1. RabbitMQ Management UI:通过management的创建的vhost,登录management的用户默认就有权限操作该vhost。
图片
图片
  1. 命令行工具 (rabbitmqctl)
代码语言:javascript
复制
[root@rabbitmq01 rabbitmq_server-3.8.35]# ./sbin/rabbitmqctl add_vhost /test01
Adding vhost "/test01" ...
[root@rabbitmq01 rabbitmq_server-3.8.35]# 

命令行创建的vhost,还需要手工添加权限,类似下面这样。

代码语言:javascript
复制
rabbitmqctl set_permissions -p /test01 admin ".*" ".*" ".*"
代码语言:javascript
复制
#列出所有vhost
rabbitmqctl list_vhosts 

#删除vhost
rabbitmqctl delete_vhosts xxx
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • vhost 的核心作用与特性
  • 默认 vhost: "/"是RabbitMQ 安装后默认存在一个名为 / (斜杠) 的 vhost。很多示例和默认配置都使用这个 vhost。默认的 guest 用户通常对这个 vhost 拥有管理员权限(但生产环境强烈建议禁用或修改该用户)。
  • 如何管理 vhost
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档