我有多个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文件?
答案 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文件位置为:
C:\Users\%USERNAME%\.erlang.cookie
用户%USERNAME%
%USERPROFILE%\.erlang.cookie
(通常是C:\WINDOWS\system32\config\systemprofile
)在20.2之前的Erlang版本(例如19.3或20.1)上,cookie文件位置为:
C:\Users\%USERNAME%\.erlang.cookie
用户%USERNAME%
%WINDIR%\.erlang.cookie
(通常为C:\Windows\.erlang.cookie
)