RabbitMQ-虚拟主机(vhost)

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

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

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 中的任何资源。

# 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。

    图片

  2. 命令行工具 (rabbitmqctl)

      [root@rabbitmq01 rabbitmq_server-3.8.35]# ./sbin/rabbitmqctl add_vhost /test01
      Adding vhost "/test01" ...
      [root@rabbitmq01 rabbitmq_server-3.8.35]# 

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

      rabbitmqctl set_permissions -p /test01 admin ".*" ".*" ".*"
        #列出所有vhost
        rabbitmqctl list_vhosts 
        
        #删除vhost
        rabbitmqctl delete_vhosts xxx

        运维小路

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

        关注微信公众号《运维小路》获取更多内容。

        评论
        添加红包

        请填写红包祝福语或标题

        红包个数最小为10个

        红包金额最低5元

        当前余额3.43前往充值 >
        需支付:10.00
        成就一亿技术人!
        领取后你会自动成为博主和红包主的粉丝 规则
        hope_wisdom
        发出的红包
        实付
        使用余额支付
        点击重新获取
        扫码支付
        钱包余额 0

        抵扣说明:

        1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
        2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

        余额充值