运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
348篇原创内容
公众号
中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:
Web服务器
代理服务器
ZooKeeper
Kafka
RabbitMQ(本章节)
我们前面在介绍Kafka的时候,有一个Topic概念,它不仅仅是一个逻辑隔离的概念,也是实际存储内容的地方。在RabbitMQ里面有一个类似的概念,就是虚拟主机(vhost),它只是起到一个逻辑隔离,本身并不存储数据。
RabbitMQ 中的 vhost(Virtual Host,虚拟主机)是一个核心概念,它提供了一种逻辑上的隔离机制,允许在同一个 RabbitMQ 服务器实例上创建多个相互独立的消息环境。
我们可以把一个 RabbitMQ 想象成一个公寓大楼,而 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。很多示例和默认配置都使用这个 vhost。默认的 guest 用户通常对这个 vhost 拥有管理员权限(但生产环境强烈建议禁用或修改该用户)。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