rabbitmq 访问 vhost 被拒绝
rabbitmq access to vhost denied
我用 rabbitmq-server 运行 设置了一个控制器主机。从 nova 主机上,我看到无法访问 nova-conductor。我检查了控制器主机,并在日志中看到以下内容:
access to vhost 'None' refused for user 'openstack'
我在控制器主机上对 rabbitmq 进行了以下配置设置:
rabbitmqctl list_users
Listing users ...
guest [administrator]
openstack []
当我列出权限时,我看到 openstack 可以访问所有资源
list_permissions
Listing permissions in vhost "/" ...
guest .* .* .*
openstack .* .* .*
我能够通过 rabbitmq-server 进行身份验证 - 只是无法访问 /vhost。为了进行调试,我想进行设置,以便任何客户端都可以访问任何资源(完全关闭访问控制)。可以吗
谢谢
access to vhost 'None' refused for user 'openstack'
有人试图访问名为 None
的虚拟主机,该虚拟主机不存在。默认虚拟主机名为 /
。由于 None
是 Python 中的关键字,我怀疑某处存在应用程序错误或配置错误。
无法禁用访问控制,因此我建议创建一个众所周知的用户和密码来使用。
这是由于 Kombu 或 oslo.messages 的一个相对较新的变化引起的。以前,如果未提供 virtual_host,则默认为 /
。这已不再是这种情况。
要使其正常工作,您的 transport_url
至少需要在末尾有一个 /
。
transport_url = rabbit://stackrabbit:secretrabbit@127.0.0.1:5672/
你可以看看例如devstack here作为参考。
问题的实际上游修复程序可用 here。
您还可以向 vhost 发送 http 请求以获得 get/set 用户权限。您必须将主机名指定为 url 的一部分,但由于默认虚拟主机是“/”,您必须将其替换为 '%2F' 即 http://:<端口>/api/vhosts/%2F/permissions
例如
curl -i -u guest:guest -h "content-type:application/json" -GET http://localhost:15672/api/permissions/%2F/guest
您可以访问 http://:/api/index.html[= 找到 api 选项的完整列表20=]
我用 rabbitmq-server 运行 设置了一个控制器主机。从 nova 主机上,我看到无法访问 nova-conductor。我检查了控制器主机,并在日志中看到以下内容:
access to vhost 'None' refused for user 'openstack'
我在控制器主机上对 rabbitmq 进行了以下配置设置:
rabbitmqctl list_users
Listing users ...
guest [administrator]
openstack []
当我列出权限时,我看到 openstack 可以访问所有资源
list_permissions
Listing permissions in vhost "/" ...
guest .* .* .*
openstack .* .* .*
我能够通过 rabbitmq-server 进行身份验证 - 只是无法访问 /vhost。为了进行调试,我想进行设置,以便任何客户端都可以访问任何资源(完全关闭访问控制)。可以吗
谢谢
access to vhost 'None' refused for user 'openstack'
有人试图访问名为 None
的虚拟主机,该虚拟主机不存在。默认虚拟主机名为 /
。由于 None
是 Python 中的关键字,我怀疑某处存在应用程序错误或配置错误。
无法禁用访问控制,因此我建议创建一个众所周知的用户和密码来使用。
这是由于 Kombu 或 oslo.messages 的一个相对较新的变化引起的。以前,如果未提供 virtual_host,则默认为 /
。这已不再是这种情况。
要使其正常工作,您的 transport_url
至少需要在末尾有一个 /
。
transport_url = rabbit://stackrabbit:secretrabbit@127.0.0.1:5672/
你可以看看例如devstack here作为参考。
问题的实际上游修复程序可用 here。
您还可以向 vhost 发送 http 请求以获得 get/set 用户权限。您必须将主机名指定为 url 的一部分,但由于默认虚拟主机是“/”,您必须将其替换为 '%2F' 即 http://
例如
curl -i -u guest:guest -h "content-type:application/json" -GET http://localhost:15672/api/permissions/%2F/guest
您可以访问 http://