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=]