RabbitMQ 出现 Nodedown 错误

RabbitMQ has Nodedown Error

在 Windows 7 Enterprise 机器上,我全新安装了 Erlang 17.4 和 RabbitMQ 3.4.3 x64。安装成功且顺利。

我还没有尝试创建我的第一个队列或交换器,但我已经看到了麻烦。这个问题类似于 another SO post,但另一个 post 似乎涉及聚类,而我没有。此外,其他 poster 可以通过重新启动 RabbitMQ 服务来绕过他的问题;这种方法对我不起作用。

我的 "nodedown" 问题在 RabbitMQ 命令提示符下很明显:

C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.3\sbin>rabbitmqctl status Status of node rabbit@TPAJ05421843 ...
Error: unable to connect to node rabbit@TPAJ05421843: nodedown

DIAGNOSTICS

attempted to contact: [rabbit@TPAJ05421843]

rabbit@TPAJ05421843:
* connected to epmd (port 4369) on TPAJ05421843
* epmd reports: node 'rabbit' not running at all
other nodes on TPAJ05421843: ['RabbitMQ']
* suggestion: start the node

current node details:
- node name: 'rabbitmqctl-19884@TPAJ05421843'
- home dir: H:\
- cookie hash: PD4QQCYrf0TME9vIko3Xuw==

基于以上,我选择检查明确命名为'RabbitMQ'的节点的状态。我明白了:

C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.3\sbin>rabbitmqctl -n RabbitMQ status
Status of node 'RabbitMQ@TPAJ05421843' ...
Error: unable to connect to node 'RabbitMQ@TPAJ05421843': nodedown

DIAGNOSTICS

attempted to contact: ['RabbitMQ@TPAJ05421843']

RabbitMQ@TPAJ05421843:
* connected to epmd (port 4369) on TPAJ05421843
* epmd reports node 'RabbitMQ' running on port 59301
* TCP connection succeeded but Erlang distribution failed
* suggestion: hostname mismatch?
* suggestion: is the cookie set correctly?

current node details:
- node name: 'rabbitmqctl-23076@TPAJ05421843'
- home dir: H:\
- cookie hash: PD4QQCYrf0TME9vIko3Xuw==

好吧,这好不了多少,因为至少它在端口 59301 上承认了 'RabbitMQ' 运行。但这到底意味着什么 "Erlang distribution failed"?

当我尝试研究这个主题时,我发现文章说 "be sure you have matched cookies." 基于我发现 this article,它声称 "cookie mismatch" 不属于我,因为我有未创建(也不打算创建)RabbitMQ 集群。

我该怎么办?

RabbitMQ 邮件列表上的相同问题:https://groups.google.com/forum/#!topic/rabbitmq-users/0s1ExFhl4hM

Erlang cookie 由 rabbitmqctl 以及服务器节点使用,因此可能需要对其进行处理(放置在正确的位置)。 请参阅 Windows quirks 上的 "Installing as a non-administrator user leaves .erlang.cookie in the wrong place"。

我今天遇到了同样的问题。没有 cookie 或防火墙问题,windows 报告该服务已成功 运行ning。这是最终修复它的方法:

  1. 运行 RabbitMQ sbin 命令提示符作为管理员。
  2. 运行 "rabbitmq-service remove"
  3. 运行 "rabbitmq-service install"

由于某种原因,安装程序设置的服务没有配置多个注册表项。 运行正确设置它们并允许服务 运行。

我注意到的一件事是,在执行此操作之前,Windows 服务视图中没有该服务的描述。使用 rabbitmq-service 命令安装后,描述可见。如果您遇到同样的问题,这可能是一个快速指示器。

从 RabbitMQ 命令提示符 sbin(运行 作为管理员)执行此命令:

rabbitmq-server restart 

在 Windown 中,出于某种原因删除 c:\Users\xxx\AppData\Roaming\RabbitMQ\db\ 中的所有文件夹(xxx 是您的用户名) 然后流 @Jerdev 回答和

  • 启动rabbitmqnet start rabbitmq

  • 检查rabbitmq服务rabbitmqctl status

正如@eddyP 评论的那样,我有两个不同的 Erlang cookie 文件:

  • 一个 server cookie 文件,位于 $env:WINDIR\system32\config\systemprofile\.erlang.cookie(在 Erlang 20.2 之前它位于 $env:WINDIR\.erlang.cookie)。
  • 一个客户端 cookie文件,位于$env:USERPROFILE\.erlang.cookie.

通过客户端复制服务器 cookie 文件,使两个文件相同,解决了我的问题。

有关详细信息,请参阅 "How Nodes (and CLI tools) Authenticate to Each Other: the Erlang Cookie"

如果您来这里寻找 linux 同一错误消息的答案,请尝试

sudo service rabbitmq-server start

(不是阻塞命令)

我就是这样解决 Windows 8 系统中的错误的:

检查放置在 Windows 的 AppData 文件夹中的 rabbitmq.config 文件中的语法错误。

如何检查是否有语法错误?

您可以 运行 rabbitmq-server restart 从 sbin 文件夹中:
Program Files/RabbitMQ/rabbitmq_server_x.x/sbin/

rabbitmq.config的内容替换为rabbitmq.config.example

您可能会在以下位置找到 rabbitmq.config.example:

Program Files/RabbitMQ/rabbitmq_server_x.x/etc/

警告,您将丢失之前使用 rabbitmq 保存的配置。

更改文件后,点击

rabbitmq-server restart

在上面提到的sbin文件夹中。

只需执行以下操作:

  1. 卸载rabbitmq和erlang。
  2. 删除 appdata 中存在的 rabbitmq 文件夹(如果你不 知道 appdata 的位置,只需在命令中输入 echo %AppData% 提示)
  3. 然后先安装erlang再安装rabbitmq
  4. 安装后,使用以下命令启用管理插件:

    rabbitmq-插件启用rabbitmq_management

我在 Windows 10 中解决了我的问题。

  1. 以管理员身份执行 RabbitMQ 命令提示符(sbin 目录)。
  2. 在(RabbitMQ 命令提示符)中执行 "rabbitmq-service remove"。
  3. 在 Windows 的 运行 对话框中执行 %AppData%。
  4. 删除RabbitMQ 文件夹中的所有文件。
  5. 在(RabbitMQ 命令提示符)中执行 "rabbitmq-service install"。
  6. 在(RabbitMQ 命令提示符)中执行 "rabbitmqctl start_app"。

对我来说,cookie 不匹配,就像其他评论一样,但对于那些与我有相同问题的人来说,位置在不同的路径中 C:\Windows\System32\config\systemprofile

发生这种情况是因为 Windows 上未正确安装 rabbit MQ(此错误具有误导性!)。所以要解决它,请执行以下操作:

  1. 在 Cortana 搜索中输入 "cmd" 或在 "Run" 中输入 Windows
  2. 的旧版本
  3. 右键单击并选择 "Run as Administrator"
  4. 转到兔子的 sbin 文件夹 (cd "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.4\sbin")
  5. 运行: rabbitmq-service 移除
  6. 运行: rabbitmq-service 安装

现在你可以运行 6. rabbitmq-plugins 启用 rabbitmq_management 7. rabbitmq-service开始 8. 最后,运行:开始 http://localhost:15672 9. 以用户 "guest" 身份登录,密码为:"guest" 就这样。兔子快乐!

我错过了重新启动我的 WINDOWS OS 然后删除旧版本的 ERLANG(我在重新启动之前卸载了它)。

不知何故,全新安装的 Rabbit 指的是旧版本(未安装的版本),所有的不匹配都在发生。线索是旧 ERLANG 版本中 'services' 提到的 Rabbit。