RabbitMQ,erlang:如何“确保erlang cookie是一样的”

时间:2012-03-12 19:00:58

标签: cookies erlang rabbitmq

我正在使用带有grails的rabbitMQ,今天早上出现问题。当我运行rabbitmqctl状态时,它会告诉我:

C:\Users\BuildnTest2>rabbitmqctl status
Status of node 'rabbit@BUILDNTEST2-PC' ...
Error: unable to connect to node 'rabbit@BUILDNTEST2-PC': nodedown diagnostics:
- nodes and their ports on BUILDNTEST2-PC: [{rabbit,49164},
                                        {rabbitmqctl27693,49286}]
- current node: 'rabbitmqctl27693@BuildnTest2-PC'
- current node home dir: C:\Users\BuildnTest2
- current node cookie hash: cSYB8tsT4mGGZHSUGQi08w==

当我进入兔子故障排除页面时:http://www.rabbitmq.com/troubleshooting.html他们说:

then you should make sure the erlang cookies are the same.

这意味着什么以及如何实现?

谷歌搜索发现此论坛帖子http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2011-January/010806.html声称有解决此问题的说明,但唉它只是重定向回兔子网站,但没有答案。

10 个答案:

答案 0 :(得分:16)

在我的情况下,由于某种原因,存储在.erlang.cookie下的Cookie(C:\Windows\)与我在家中存储的Cookie(%HOMEDRIVE% %HOMEPATH%不同,对我来说是C:\

将Cookie从C:\Windows复制到我的主文件夹后,一切都开始有效了。

答案 1 :(得分:12)

对于那些谷歌搜索,当您从环境配置中缺少HOME参数时,可能会发生同样的错误cookie错误。例如,在rabbitmq的默认ArchLinux安装上。

在这种情况下,服务以systemctl start rabbitmq启动,它会生成一个Cookie,但像rabbitmqctl status这样的cli工具不会开箱即用,因为他们不知道家的位置。

默认 /etc/rabbitmq/rabbitmq-env.conf

NODENAME=rabbit
NODE_IP_ADDRESS=0.0.0.0
NODE_PORT=5672

LOG_BASE=/var/log/rabbitmq
MNESIA_BASE=/var/lib/rabbitmq/mnesia

已修改 /etc/rabbitmq/rabbitmq-env.conf

NODENAME=rabbit
NODE_IP_ADDRESS=127.0.0.1
NODE_PORT=5672

HOME=/var/lib/rabbitmq
LOG_BASE=/var/log/rabbitmq
MNESIA_BASE=/var/lib/rabbitmq/mnesia

ref https://bbs.archlinux.org/viewtopic.php?id=191587

答案 2 :(得分:9)

在运行erlang进程的用户的主目录中,有隐藏文件.erlang.cookie。它包含负责erlang集群拓扑的字符串。确保要连接的所有节点上的字符串(cookie)相同。如果没有cookie,请创建一个。

答案 3 :(得分:9)

对于它的价值,在2018年,文档是错误的。在Windows 10中,cookie文件的默认位置显示为:

C:\Windows\System32\config\systemprofile

而不是

C:\Windows

正如文档所说。

最好的办法是查看日志文件,该文件通常位于用户%AppData%\Roaming\RabbitMQ\log目录中。

日志文件包含此条目,这有助于我确定cookie位置:

node           : rabbit@computername
home dir       : C:\WINDOWS\system32\config\systemprofile

答案 4 :(得分:4)

同步Erlang Cookie(运行手动安装的Windows服务时) 服务帐户和运行rabbitmqctl.bat的用户使用的Erlang Security Cookie必须同步才能使rabbitmqctl.bat正常运行。 要确保Erlang cookie文件包含相同的字符串,请从Windows目录(通常为C:\ WINDOWS.erlang.cookie)复制.erlang.cookie文件以替换用户.erlang.cookie。用户cookie将位于用户的主目录(%HOMEDRIVE %% HOMEPATH%)中,例如, C:\ Documents and Settings \%USERNAME%.erlang.cookie或C:\ Users \%USERNAME%.erlang.cookie(Windows Vista及更高版本)。

https://www.rabbitmq.com/install-windows-manual.html

答案 5 :(得分:2)

我将Cookie从C:\Windows复制到我的主文件夹( C:\Users\Current User\.erlang.cookie)中,一切正常。

答案 6 :(得分:1)

确保rabbitmq erlang.cookie与您用户目录中的erlang.cookie匹配:

rabbitmq erlang cookie ...

  

...通常位于/var/lib/rabbitmq/.erlang.cookie上   Unix系统和C:\ Users \ Current User.erlang.cookie或C:\ Documents   Windows系统上的和Settings \ Current User.erlang.cookie。   (http://www.rabbitmq.com/clustering.html#setup

确保与〜/ .erlang.cookie匹配。

答案 7 :(得分:1)

我正在尝试群集,即使匹配它也不会对我有用......唯一最终有效的是在我的环境变量中设置ERLANG_HOME变量。

在我设置之后,我能够将cookie从我的主代理复制到我想要聚类的那个,并且连接工作正常。

"将ERLANG_HOME设置为实际安装Erlang的位置,例如: C:\ Program Files \ erlx.x.x(完整路径)。 RabbitMQ批处理文件期望执行%ERLANG_HOME%\ bin \ erl.exe。

转到开始>设置>控制面板>系统>高级>环境变量。创建系统环境变量ERLANG_HOME并将其设置为包含bin \ erl.exe的目录的完整路径。 "

https://www.rabbitmq.com/install-windows-manual.html

答案 8 :(得分:0)

当克隆服务器通过名称更改生效时,我发现了这个问题。干净的rabbitmq和erlang安装后问题解决了。

答案 9 :(得分:0)

如果您在OSX上运行了RabbitPq-server的MacPorts版本,则需要检查~drugmq / .erlang.cookie文件。它必须匹配/opt/local/var/lib/rabbitmq/.erlang.cookie中的那个,否则" rabbitmqctl"无法连接。