我正在使用带有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声称有解决此问题的说明,但唉它只是重定向回兔子网站,但没有答案。
答案 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
答案 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及更高版本)。
答案 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的目录的完整路径。 "
答案 8 :(得分:0)
当克隆服务器通过名称更改生效时,我发现了这个问题。干净的rabbitmq和erlang安装后问题解决了。
答案 9 :(得分:0)
如果您在OSX上运行了RabbitPq-server的MacPorts版本,则需要检查~drugmq / .erlang.cookie文件。它必须匹配/opt/local/var/lib/rabbitmq/.erlang.cookie中的那个,否则" rabbitmqctl"无法连接。