当前位置:首页 >> 跨学科知识体系 >> 【RabbitMQ实战】05 RabbitMQ后台管理,移联名商

【RabbitMQ实战】05 RabbitMQ后台管理,移联名商

cpugpu芯片开发光刻机 跨学科知识体系 1
文件名:【RabbitMQ实战】05 RabbitMQ后台管理,移联名商 【RabbitMQ实战】05 RabbitMQ后台管理 一、多租户与权限 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 vhost1Adding vhost "vhost1" ... 查询 I have no name!@0d5cb60e3a06:/$ rabbitmqctl list_vhostsListing vhosts ...name/virtual01vhost1 删除 刚才创建的vhost1被删除了 I have no name!@0d5cb60e3a06:/$ rabbitmqctl delete_vhost vhost1Deleting vhost "vhost1" ...I have no name!@0d5cb60e3a06:/$ rabbitmqctl list_vhostsListing vhosts ...name/virtual01 2.2用户管理 创建用户 I have no name!@0d5cb60e3a06:/$ rabbitmqctl add_user user1 123456Adding user "user1" ...Done. Don't 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_usersListing users ...usertagsadmin[administrator]hello[administrator] 修改用户密码 I have no name!@0d5cb60e3a06:/$ rabbitmqctl change_password user1 111111Changing password for user "user1" ... 删除用户 I have no name!@0d5cb60e3a06:/$ rabbitmqctl delete_user user1Deleting 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 user1Listing permissions for user "user1" ...vhostconfigurewritereadvhost1^queue01.*.*.*

授权user1用户,在以“queue01”开头的资源上有可配置的权限,并在所有资源上有可写、可读的权限

查询用户权限 I have no name!@0d5cb60e3a06:/$ rabbitmqctl list_permissions -p vhost1Listing permissions for vhost "vhost1" ...userconfigurewritereaduser1.*.*.* I have no name!@0d5cb60e3a06:/$ rabbitmqctl list_user_permissions user1Listing permissions for user "user1" ...vhostconfigurewritereadvhost1.*.*.* 清除权限 I have no name!@0d5cb60e3a06:/$ rabbitmqctl clear_permissions -p vhost1 user1Clearing 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为角色名(对应于上面的administrator,monitoring,policymaker,management,或其他自定义名称)。

也可以给同一用户设置多个角色,例如

rabbitmqctl set_user_tags user001 monitoring policymakertoring 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 listListing plugins with pattern ".*" ...Configured: E = explicitly enabled; e = implicitly enabled| Status: * = running on rabbit@localhost|/[ ] 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_mqttEnabling plugins on node rabbit@localhost:rabbitmq_web_mqttThe following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_mqttrabbitmq_web_dispatchrabbitmq_web_mqttApplying plugin configuration to rabbit@localhost...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 listListing plugins with pattern ".*" ...Configured: E = explicitly enabled; e = implicitly enabled| Status: * = running on rabbit@localhost|/....[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 123456Adding user "user1" ...Done. Don't 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 administratorSetting tags for user "user1" to [administrator] ...I have no name!@0d5cb60e3a06:~$ rabbitmqctl list_permissionsListing permissions for vhost "/" ...userconfigurewritereaduser1.*.*.*admin.*.*.*I have no name!@0d5cb60e3a06:~$ rabbitmqctl list_usersListing users ...usertagsadmin[administrator]user1[administrator]hello[administrator]

登录成功

3.3 virtual host的管理

3.4用户的管理

3.5 Connection,Channel,Exchange,Queues的管理

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接