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

时间:2016-11-10 13:25:33

标签: windows cookies server rabbitmq messaging

我有多个RabbitMQ节点在不同的机器上运行。安装每个节点后,我没有为每个节点指定一个共同的cookie,所以我不得不返回并手动更改文件.erlang.cookie。我的问题是,在这样做之后,我得到了冲突的错误消息。如果我做rabbitmqctl状态 我收到以下错误:

  

诊断

     

试图联系:[' rabbit @ nc-mso-test01']

     

rabbit @ nc-mso-test01:*连接到epmd(端口4369)   nc-mso-test01 * epmd报告节点' rabbit'在端口25672上运行*   TCP连接成功但Erlang分发失败

     
      
  • 身份验证失败(被远程节点拒绝),请检查   Erlang cookie
  •   
     

当前节点详细信息:    - 节点名称:' rabbitmq-cli-45 @ nc-mso-test01'    - 主目录:C:\ Users \ jol    - cookie hash:9 / Hx6l + wLQv3NkmSDFqBog ==

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

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

2 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:6)

文档说:

  

必须同步Windows服务帐户和运行CLI工具的用户使用的cookie文件。 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