VirtualHost 作用及用法
Virtual Hosts的使用場景
多租戶的使用場景,比如主機資源緊缺情況下開發和測試共用一個RabbitMQ,可以使用Virtual Hosts将開發和測試隔離開
1.管理界面
2.VirtualHost介紹
從上圖可以看到,Admin界面可以看到User、VirtulalHost、Policies、Limits、Cluster 等幾個選項,今天要介紹的VirtualHost就在其中
RabbitMq的 VirtualHost(虛拟消息伺服器),每個VirtualHost相當于一個相對獨立的RabbitMQ伺服器,像mysql有資料庫的概念并且可以指定使用者對庫和表等操作的權限。每個VirtualHost之間是互相隔離的,exchange-交換機、queue-隊列、message-消息 不能互通
拿資料庫(用MySQL)來對比:RabbitMq相當于MySQL,RabbitMq中的VirtualHost就相當于MySQL中的一個db庫,你可以在mysql中建立很多庫,設定庫的權限操作。
建立一個VirtualHost ,可以看到
預設的 / host下面有兩個使用者 admin、guest
建立的 jzj 下面隻有1個使用者 admin
3.User資訊
我們先看User資訊,有2個User,admin和guest,點開Virtual 也可以看到使用者資訊
建立一個User資訊test
4.将virtualHost和User 權限綁定賦權
選擇jzj 虛拟消息伺服器,然後選擇使用者test,賦予test權限
可以看到 virtualHost jzj 已經添加了使用者 test,現在擁有兩個使用者admin和test
當然我們也可以用指令來建立使用者和賦予權限,參考 RabbitMQ系列(一)https://editor.csdn.net/md/?articleId=106609072
建立使用者并配置權限
建立使用者:
rabbitmqctl add_user 使用者名 密碼
例如:
rabbitmqctl add_user test test
為使用者配置權限:
rabbitmqctl set_permissions -p / 使用者名 ".*" ".*" ".*"
例如:
rabbitmqctl set_permissions -p jzj test ".*" ".*" ".*"
其中[/]可以通路預設虛拟伺服器(virtual host),如果改成虛拟伺服器名稱jzj,表示該使用者能通路這個虛拟伺服器
配置角色:
rabbitmqctl set_user_tags 使用者名 角色類型
例如:
rabbitmqctl set_user_tags test administrator
5.角色管理
配置角色
rabbitmqctl set_user_tags [user] [role]
RabbitMQ中的角色分為如下五類:none、management、policymaker、monitoring、administrator
5.1 none
不能通路 management plugin
5.2 management
使用者可以通過AMQP做的任何事外加:
列出自己可以通過AMQP登入的virtual hosts
檢視自己的virtual hosts中的queues, exchanges 和 bindings
檢視和關閉自己的channels 和 connections
檢視有關自己的virtual hosts的“全局”的統計資訊,包含其他使用者在這些virtual hosts中的活動。
5.3 policymaker
management可以做的任何事外加:
檢視、建立和删除自己的virtual hosts所屬的policies和parameters
5.4 monitoring
management可以做的任何事外加:
列出所有virtual hosts,包括他們不能登入的virtual hosts
檢視其他使用者的connections和channels
檢視節點級别的資料如clustering和memory使用情況
檢視真正的關于所有virtual hosts的全局的統計資訊
5.5 administrator
policymaker和monitoring可以做的任何事外加:
建立和删除virtual hosts
檢視、建立和删除users
檢視建立和删除permissions
關閉其他使用者的connections
下一篇介紹 實戰 RabbitMQ進階-Queue隊列特性 (一)簡單隊列