南昌网站建设冲浪者科技,类似于wordpress的网站吗,北京免费关键词优化,外包seo服务收费标准一、多租户与权限
1.1 vhost的概念
每一个 RabbitMQ服务器都能创建虚拟的消息服务器#xff0c;我们称之为虚拟主机(virtual host),简称为 vhost。每一个 vhost本质上是一个独立的小型RabbitMQ服务器#xff0c;拥有自己独立的队列、交换器及绑定关系等#xff0c;并且它拥…一、多租户与权限
1.1 vhost的概念
每一个 RabbitMQ服务器都能创建虚拟的消息服务器我们称之为虚拟主机(virtual host),简称为 vhost。每一个 vhost本质上是一个独立的小型RabbitMQ服务器拥有自己独立的队列、交换器及绑定关系等并且它拥有自己独立的权限。vhost 就像是虚拟机与物理服务器一样它们在各个实例间提供逻辑上的分离为不同程序安全保密地运行数据它既能将同一个RabbitMQ中的众多客户区分开又可以避免队列和交换器等命名冲突。vhost之间是绝对隔离的无法将 vhostl 中的交换器与 vhost2中的队列进行绑定这样既保证了安全性又可以确保可移植性。如果在使用 RabbitMQ达到一定规模的时候建议用户对业务功能、场景进行归类区分并为之分配独立的vhost。
vhost 是 AMQP概念的基础客户端在连接的时候必须制定一个vhost。RabbitMQ默认创建的vhost 为“/”如果不需要多个 vhost 或者对 vhost的概念不是很理解那么用这个默认的vhost 也是非常合理的使用默认的用户名 guest 和密码 guest 就可以访问它。但是为了安全和方便建议重新建立一个新的用户来访问它。
二、rabbitmqctl管理工具
下面我们用rabbitmqctl工具来进行后台管理工作
2.1 操作vhost
添加
I have no name!0d5cb60e3a06:/$ rabbitmqctl add_vhost vhost1
Adding vhost vhost1 ...查询
I have no name!0d5cb60e3a06:/$ rabbitmqctl list_vhosts
Listing vhosts ...
name
/
virtual01
vhost1删除 刚才创建的vhost1被删除了
I have no name!0d5cb60e3a06:/$ rabbitmqctl delete_vhost vhost1
Deleting vhost vhost1 ...
I have no name!0d5cb60e3a06:/$ rabbitmqctl list_vhosts
Listing vhosts ...
name
/
virtual012.2用户管理
创建用户
I have no name!0d5cb60e3a06:/$ rabbitmqctl add_user user1 123456
Adding user user1 ...
Done. Dont forget to grant the user permissions to some virtual hosts! See rabbitmqctl help set_permissions to learn more.-查询用户列表
I have no name!0d5cb60e3a06:/$ rabbitmqctl list_users
Listing users ...
user tags
admin [administrator]
hello [administrator]修改用户密码
I have no name!0d5cb60e3a06:/$ rabbitmqctl change_password user1 111111
Changing password for user user1 ...删除用户
I have no name!0d5cb60e3a06:/$ rabbitmqctl delete_user user1
Deleting user user1 ...2.3权限
在RabbitMQ中权限控制是以vhost为单位的。 当创建一个用户时用户通常会被指派给至少一个 vhost并且只能访问被指派的 vhost 内的队列、交换器和绑定关系等。因此RabbitMQ中的授予权限是指在vhost级别对用户而言的权限授予。
相关的授予权限命令为 rabbitmqctl set_permissions [-p vhost] {user) {conf}{write}{read} 其中各个参数的含义如下所述。 vhost授予用户访问权限的vhost名称可以设置为默认值即vhost为“/”。 user:可以访问指定 vhost的用户名。 conf一个用于匹配用户在哪些资源上拥有可配置权限的正则表达式。 write一个用于匹配用户在哪些资源上拥有可写权限的正则表达式。 read一个用于匹配用户在哪些资源上拥有可读权限的正则表达式。
注
可配置指的是队列和交换器的创建及删除之类的操作
可写指的是发布消息
可读指与消息有关的操作包括读取消息及清空整个队列等。添加权限
I have no name!0d5cb60e3a06:/$ rabbitmqctl set_permissions -p vhost1 user1 .* .* .*
Setting permissions for user user1 in vhost vhost1 ...“.*” 这个.*号代表什么呢 其实代码通配符看下面的例子
I have no name!0d5cb60e3a06:/$ rabbitmqctl set_permissions -p vhost1 user1 ^queue01.* .* .*
Setting permissions for user user1 in vhost vhost1 ...
I have no name!0d5cb60e3a06:/$ rabbitmqctl list_user_permissions user1
Listing permissions for user user1 ...
vhost configure write read
vhost1 ^queue01.* .* .*授权user1用户在以“queue01”开头的资源上有可配置的权限并在所有资源上有可写、可读的权限
查询用户权限
I have no name!0d5cb60e3a06:/$ rabbitmqctl list_permissions -p vhost1
Listing permissions for vhost vhost1 ...
user configure write read
user1 .* .* .*I have no name!0d5cb60e3a06:/$ rabbitmqctl list_user_permissions user1
Listing permissions for user user1 ...
vhost configure write read
vhost1 .* .* .*清除权限
I have no name!0d5cb60e3a06:/$ rabbitmqctl clear_permissions -p vhost1 user1
Clearing permissions for user user1 in vhost vhost1 ...2.4用户角色
用户角色作用在web管理插件下的不要与permissions相混淆
用户角色tags可分为五类
超级管理员(administrator)可登陆管理控制台(启用management plugin的情况下)可查看所有的信息并且可以对用户策略(policy)进行操作。监控者(monitoring) 可登陆管理控制台(启用management plugin的情况下)同时可以查看rabbitmq节点的相关信息(进程数内存使用情况磁盘使用情况等)策略制定者(policymaker)可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息。 与administrator的对比administrator能看到这些内容普通管理者(management) 仅可登陆管理控制台(启用management plugin的情况下)无法看到节点信息也无法对策略进行管理。 其他 无法登陆管理控制台通常就是普通的生产者和消费者。 了解了这些后就可以根据需要给不同的用户设置不同的角色以便按需管理。 设置用户角色的命令为
rabbitmqctl set_user_tags {User} {Tag} User为用户名 Tag为角色名(对应于上面的administratormonitoringpolicymakermanagement或其他自定义名称)。
也可以给同一用户设置多个角色例如
rabbitmqctl set_user_tags user001 monitoring policymaker management三、Web端管理
rabbitmqctl管理工具通过命令行的方式来进行管理工作。那有没有更友好的图形界面呢有的。 RabbitMQ management插件可以提供Web管理界面用来管理如前面所述的虚拟主机、用户等也可以用来管理队列、交换器、绑定关系、策略、参数等还可以用来监控 RabbitMQ服务的状态及一些数据统计类信息可谓是功能强大基本上能够涵盖所有RabbitMQ管理的功能。
在使用Web管理界面之前需要先启用 RabbitMQ management插件。RabbitMQ提供了很多的插件默认存放在$RABBITMQ_HOME/plugins 目录下如下所示。
3.1插件的管理
列出当前的启用的插件
I have no name!0d5cb60e3a06:/opt/bitnami/rabbitmq/plugins$ rabbitmq-plugins list
Listing plugins with pattern .* ...Configured: E explicitly enabled; e implicitly enabled| Status: * running on rabbitlocalhost|/
[ ] rabbitmq_amqp1_0 3.9.11
[ ] rabbitmq_auth_backend_cache 3.9.11
[ ] rabbitmq_auth_backend_http 3.9.11
[ ] rabbitmq_auth_backend_ldap 3.9.11
[ ] rabbitmq_auth_backend_oauth2 3.9.11
[ ] rabbitmq_auth_mechanism_ssl 3.9.11
[ ] rabbitmq_consistent_hash_exchange 3.9.11
[ ] rabbitmq_event_exchange 3.9.11
[ ] rabbitmq_federation 3.9.11
[ ] rabbitmq_federation_management 3.9.11
[ ] rabbitmq_jms_topic_exchange 3.9.11
[E*] rabbitmq_management 3.9.11
[e*] rabbitmq_management_agent 3.9.11
[ ] rabbitmq_mqtt 3.9.11
[ ] rabbitmq_peer_discovery_aws 3.9.11
[ ] rabbitmq_peer_discovery_common 3.9.11
[ ] rabbitmq_peer_discovery_consul 3.9.11
[ ] rabbitmq_peer_discovery_etcd 3.9.11
[ ] rabbitmq_peer_discovery_k8s 3.9.11
[ ] rabbitmq_prometheus 3.9.11
[ ] rabbitmq_random_exchange 3.9.11
[ ] rabbitmq_recent_history_exchange 3.9.11
[ ] rabbitmq_sharding 3.9.11
[ ] rabbitmq_shovel 3.9.11
[ ] rabbitmq_shovel_management 3.9.11
[ ] rabbitmq_stomp 3.9.11
[ ] rabbitmq_stream 3.9.11
[ ] rabbitmq_stream_management 3.9.11
[ ] rabbitmq_top 3.9.11
[ ] rabbitmq_tracing 3.9.11
[ ] rabbitmq_trust_store 3.9.11
[e*] rabbitmq_web_dispatch 3.9.11
[ ] rabbitmq_web_mqtt 3.9.11
[ ] rabbitmq_web_mqtt_examples 3.9.11
[ ] rabbitmq_web_stomp 3.9.11
[ ] rabbitmq_web_stomp_examples 3.9.11其中[E*]表示显示启动[e*] 为隐式启动
如何启用一个插件 以上面代码为例启用rabbitmq_web_mqtt插件
I have no name!0d5cb60e3a06:/opt/bitnami/rabbitmq/plugins$ rabbitmq-plugins enable rabbitmq_web_mqtt
Enabling plugins on node rabbitlocalhost:
rabbitmq_web_mqtt
The following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_mqttrabbitmq_web_dispatchrabbitmq_web_mqtt
Applying plugin configuration to rabbitlocalhost...
The following plugins have been enabled:rabbitmq_mqttrabbitmq_web_mqttstarted 2 plugins.再查询一下插件rabbitmq_web_mqtt那一行有了[E*]表示启用了
I have no name!0d5cb60e3a06:/opt/bitnami/rabbitmq/plugins$ rabbitmq-plugins list
Listing plugins with pattern .* ...Configured: E explicitly enabled; e implicitly enabled| Status: * running on rabbitlocalhost|/
....
[E*] rabbitmq_web_mqtt 3.9.11
....3.2 web管理页面
能进入web管理页面的前提是启用了后台管理插件rabbitmq_management 访问地址http://192.168.56.201:15672/ 其中192.168.56.201是我本机装有rabbitmq的机器ip
先按上面学的知识添加一个用户并且具有配置、读、写所有资源的权限并且设置好administrator权限然后我们再用此用户登录管理后台
I have no name!0d5cb60e3a06:~$ rabbitmqctl add_user user1 123456
Adding user user1 ...
Done. Dont forget to grant the user permissions to some virtual hosts! See rabbitmqctl help set_permissions to learn more.
I have no name!0d5cb60e3a06:~$ rabbitmqctl set_permissions user1 .* .* .*
Setting permissions for user user1 in vhost / ...
I have no name!0d5cb60e3a06:~$ rabbitmqctl set_user_tags user1 administrator
Setting tags for user user1 to [administrator] ...
I have no name!0d5cb60e3a06:~$ rabbitmqctl list_permissions
Listing permissions for vhost / ...
user configure write read
user1 .* .* .*
admin .* .* .*I have no name!0d5cb60e3a06:~$ rabbitmqctl list_users
Listing users ...
user tags
admin [administrator]
user1 [administrator]
hello [administrator]登录成功
3.3 virtual host的管理 3.4用户的管理 3.5 Connection,Channel,Exchange,Queues的管理