更改 cookie 文件后 RabbitMQ 节点身份验证失败

RabbitMQ node authentification failed after changing cookie file

我在不同的机器上有多个 RabbitMQ 节点 运行。安装每个节点后,我未能为每个节点指定一个通用 cookie,因此我不得不返回并手动更改文件 .erlang.cookie 。我的问题是,在执行此操作后,我收到了相互矛盾的错误消息。如果我做 rabbitmqctl status 我收到以下错误:

DIAGNOSTICS

attempted to contact: ['rabbit@nc-mso-test01']

rabbit@nc-mso-test01: * connected to epmd (port 4369) on nc-mso-test01 * epmd reports node 'rabbit' running on port 25672 * TCP connection succeeded but Erlang distribution failed

  • Authentication failed (rejected by the remote node), please check the Erlang cookie

current node details: - node name: 'rabbitmq-cli-45@nc-mso-test01' - home dir: C:\Users\jol - cookie hash: 9/Hx6l+wLQv3NkmSDFqBog==

无论我调用什么脚本,我都会得到同样的错误。我尝试重新启动服务,通过 rabbitmq-service 删除和安装它。错误仍然存​​在。从我从其他帖子中收集到的信息来看,原因可能是节点和 erlang 代理在不同的用户上 运行,并且每个用户都有不同版本的 cookie,其中一个被旧版本卡住了。

如何让服务器和节点重新启动,以便它们都使用新的 cookie 文件?

我解决了我的问题。我错过了 RabbitMQ 设置有两个 cookie 文件的事实,一个在 c:\Windows 中用于 erlang 组件,另一个在 C:\Users\%USER% 中。据我了解,如果 erlan VM 是在它自己的应用程序用户上启动的,而 RabbitMQ 节点是在不同的用户上启动的,这本来就是我的情况,那么这两个 cookie 文件是不同的,我必须在同步之前同步它们集群 cookie。

文档说:

The cookie file used by the Windows service account and the user running CLI tools must be synchronised. RabbitMQ-Clustering Guide

在从 20.2 开始的 Erlang 版本中,cookie 文件位置为:

  • 对于用户 运行 CLI 工具 - 通常 C:\Users\%USERNAME%\.erlang.cookie 对于用户 %USERNAME%
  • 对于 RabbitMQ Windows 服务 - %USERPROFILE%\.erlang.cookie (通常 C:\WINDOWS\system32\config\systemprofile

在 20.2 之前的 Erlang 版本(例如 19.3 或 20.1)上,cookie 文件位置为:

  • 对于用户 运行 CLI 工具 - 通常 C:\Users\%USERNAME%\.erlang.cookie 对于用户 %USERNAME%
  • 对于 RabbitMQ Windows 服务 - %WINDIR%\.erlang.cookie(通常 C:\Windows\.erlang.cookie