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

Mik*_*key 29 cookies erlang rabbitmq

我正在使用带有grails的rabbitMQ,今天早上出现了一个问题.当我运行rabbitmqctl status时它会告诉我:

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==
Run Code Online (Sandbox Code Playgroud)

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

then you should make sure the erlang cookies are the same.
Run Code Online (Sandbox Code Playgroud)

这是什么意思,它是如何实现的?

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

Ste*_*rdi 16

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

一旦我将cookie复制C:\Windows到我的主文件夹中,一切都开始工作了.

  • 官方文档中描述了解决方案:https://www.rabbitmq.com/install-windows-manual.html (2认同)

slf*_*slf 12

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

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

默认 /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
Run Code Online (Sandbox Code Playgroud)

修改 /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
Run Code Online (Sandbox Code Playgroud)

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


小智 10

对于它的价值,在2018年,文档是错误的.在Windows 10中,cookie文件的默认位置似乎是:

C:\Windows\System32\config\systemprofile
Run Code Online (Sandbox Code Playgroud)

并不是

C:\Windows
Run Code Online (Sandbox Code Playgroud)

正如文档所说.

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

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

node           : rabbit@computername
home dir       : C:\WINDOWS\system32\config\systemprofile
Run Code Online (Sandbox Code Playgroud)


use*_*720 9

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


Ste*_*tin 9

关于您的具体问题的最终答案,在RabbitMQ网站上是http://www.rabbitmq.com/clustering.html

但是,从您的状态转储中,看起来这不是您的问题.它看起来好像你的节点已关闭.假设您没有运行群集,我是否正确?您无法连接的节点与运行命令的节点相同,这表明这一点.

如果RabbitMQ服务正在运行,那么运行rabbitmqctl start如果它没有运行,那么转到服务并启动它,然后再运行上面的服务.erlang cookie与非群集配置无关.