Table of Contents

  1. 多租户模式:虚拟主机和隔离
    1. 概述
    2. 如何创建vhost

每个RabbitMQ服务器都能创建虚拟的消息服务器,我们称之为虚拟主机(vhost)每一个vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器和绑定等等

多租户模式:虚拟主机和隔离

概述

  • 每个RabbitMQ服务器都能创建虚拟的消息服务器,我们称之为虚拟主机(vhost)每一个vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器和绑定等等
  • 更重要的是,他拥有自己的权限机制这使得你能够安全地使用一个RabbitMQ服务器来服务众多的应用程序
  • vhost就像是虚拟机之与物理服务器一样:他们在各个实例间提供逻辑上的分离,允许你为不同程序安全保密地运行数据,它既能将同一个Rabbit的众多客户区分开来,又可以避免队列和交换器命名冲突
  • vhost是AMQP概念的基础,你必须在连接时进行指定
  • RabbitMQ包含了一个开箱即用的默认vhost:”/“,如果你不需要多个vhost,那么就使用默认的吧,使用缺省的guest用户名和密码guest就可以访问默认的vhost
  • 当你在RabbitMQ集群上创建vhost,整个集群上都会创建该vhost,vhost不仅消除了为基础架构中的每一层运行一个RabbitMQ服务器的需要,同样也避免了为每一层创建不同集群

如何创建vhost

vhost和权限控制非常独特,他们是AMQP中唯一无法通过AMQP协议的基元(不同与队列,交换器和绑定)

创建vhost

你需要通过RabbitMQ的安装路径下的./sbin/目录中的rabbitmqctl工具来创建

运行:

1
rabbitmqctl add_vhost[vhost_name]

可以创建一个vhost,其中[vhost_name]就是你想要创建的vhost

删除vhost

1
rabbitmqctl delete_vhost[vhsost_name]

查看Rabbit服务器上运行着那些vhost

1
rabbitmqctl list_vhost

你就会看到如下所示的内容

1
2
3
4
5
6
$ ./sbin/rabbitmqctl list_vhosts
Listing vhosts ...
/
oak
sycamore
...done.

管理远程RabbitMQ节点

1
-n rabbit@[server_name]

rabbit表示Erlang应用程序名称
[server_name]表示ip

(注:内容整理自《RabbitMQ实战》)