RabbitMQ 出现 Nodedown 错误

Posted

技术标签:

【中文标题】RabbitMQ 出现 Nodedown 错误【英文标题】:RabbitMQ has Nodedown Error 【发布时间】:2015-03-31 06:10:07 【问题描述】:

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

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

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

C:\Program Files (x86)\RabbitMQ 服务器\rabbitmq_server-3.4.3\sbin>rabbitmqctl 状态 节点rabbit@TPAJ05421843的状态 ... 错误:无法连接到节点rabbit@TPAJ05421843:nodedown

诊断

尝试联系:[rabbit@TPAJ05421843]

兔子@TPAJ05421843: * 连接到 TPAJ05421843 上的 epmd(端口 4369) * epmd 报告:节点“兔子”根本没有运行 TPAJ05421843 上的其他节点:['RabbitMQ'] * 建议:启动节点

当前节点详情: - 节点名称:'rabbitmqctl-19884@TPAJ05421843' - 主目录:H:\ - cookie 哈希:PD4QQCYrf0TME9vIko3Xuw==

基于上述,我选择检查显式命名为“RabbitMQ”的节点的状态。我明白了:

C:\Program Files (x86)\RabbitMQ 服务器\rabbitmq_server-3.4.3\sbin>rabbitmqctl -n RabbitMQ 状态 节点“RabbitMQ@TPAJ05421843”的状态 ... 错误:无法连接到节点“RabbitMQ@TPAJ05421843”:nodedown

诊断

尝试联系:['RabbitMQ@TPAJ05421843']

RabbitMQ@TPAJ05421843: * 连接到 TPAJ05421843 上的 epmd(端口 4369) * epmd 报告节点“RabbitMQ”在端口 59301 上运行 * TCP 连接成功但 Erlang 分发失败 * 建议:主机名不匹配? * 建议:cookie设置正确吗?

当前节点详情: - 节点名称:'rabbitmqctl-23076@TPAJ05421843' - 主目录:H:\ - cookie 哈希:PD4QQCYrf0TME9vIko3Xuw==

好吧,这好不了多少,因为至少它承认“RabbitMQ”在端口 59301 上运行。但是“Erlang 分发失败”到底意味着什么?

当我尝试研究这个主题时,我发现有文章说“确保您有匹配的 cookie”。基于此,我找到了this article,它声称“cookie 不匹配”与我无关,因为我还没有创建(也不打算创建)RabbitMQ 集群。

我该怎么办?

【问题讨论】:

在我的情况下,这是因为我以管理员身份安装它,然后尝试以普通用户身份使用 sbin 脚本。 在我的例子中,cookie 不匹配 C:\Windows\.erlang.cookieC:\Users\my_user_name\.erlang.cookie。一个接一个地复制解决了这个问题。 【参考方案1】:

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

不知何故,全新安装的 Rabbit 指的是旧的(未安装的版本),所有的不匹配都发生了。线索是旧 ERLANG 版本中的“服务”引用 Rabbit。

【讨论】:

【参考方案2】:

正如@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"。

【讨论】:

也适合我。这是迄今为止最简单的解决方案! 当多次安装/卸载无济于事时,此解决方案确实有帮助。谢谢。我从用户复制到 windows,但确保两个文件相同。 ***.com/questions/40528775/… 可能存在重复。 @Lapacho,这个问题/答案不是重复的。这个问题是在 15 年 2 月 1 日提出的。我在 2016 年 9 月 1 日发布了我的工作答案。这个问题 (***.com/questions/40528775/…) 是在 2 个月后(2016 年 11 月 11 日)发布的。您在 1 年 3 个月后(2018 年 2 月 13 日)对该问题添加了评论。你认为哪一个是重复的?【参考方案3】:

这是因为 rabbit MQ 没有在 Windows 上正确安装(而且这个错误具有误导性!)。因此,要解决它,请执行以下操作:

    在 Cortana 搜索中输入“cmd”或在“运行”中输入旧版 Windows 右键单击并选择“以管理员身份运行” 进入 rabbit 的 sbin 文件夹(cd "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.4\sbin") 运行:rabbitmq-service 删除 运行:rabbitmq-service 安装

现在你可以运行了 6. rabbitmq-plugins 启用 rabbitmq_management 7.rabbitmq-服务启动 8. 最后,运行:start http://localhost:15672 9. 以用户“guest”身份登录,密码为“guest”,仅此而已。祝兔子快乐!

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

好东西 - 也帮我解决了问题! :~D【参考方案6】:

只需执行以下操作:

    卸载rabbitmq和erlang。 删除你的appdata中存在的rabbitmq文件夹(如果你不 知道 appdata 位置,只需在命令中输入 echo %AppData% 提示) 然后先安装erlang再安装rabbitmq。

    安装后,使用以下命令启用管理插件:

    rabbitmq-plugins 启用 rabbitmq_management

【讨论】:

【参考方案7】:

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

检查位于 Windows 的 AppData 文件夹中的 rabbitmq.config 文件中的语法错误。

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

您可以从 sbin 文件夹中运行 rabbitmq-server restartProgram 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-服务器重启

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

【讨论】:

【参考方案8】:

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

sudo service rabbitmq-server start

(不是阻塞命令)

【讨论】:

【参考方案9】:

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

启动rabbitmq net start rabbitmq

检查rabbitmq服务rabbitmqctl status

【讨论】:

这对我有用,因为我在从 Windows 7 升级到 Windows 10 后破坏了我的 Rabbit 安装! 这个答案与最佳答案相结合为我修复了它。谢谢 这个是为我做的(也有最佳答案)。谢谢,我正准备把我的笔记本电脑推出窗外。 为我工作。谢谢【参考方案10】:

从 RabbitMQ 命令提示符 sbin(以管理员身份运行)执行此命令:

rabbitmq-server restart 

【讨论】:

这个命令很有帮助。它向我显示了我能够找到真正错误的日志位置(erlang 版本对我来说太旧了) 这是一个阻塞命令.​​.服务器重新启动正常,但命令不返回终端..必须执行 ctrl+q 退出这停止了服务器..上面的 jerdev 答案非常有效好【参考方案11】:

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

    以管理员身份运行 RabbitMQ sbin 命令提示符。 运行“rabbitmq-service remove” 运行“rabbitmq-service install”

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

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

【讨论】:

是的,这似乎是 RabbitMQ 安装程序中没有正确注册服务的问题。 确认当服务 在 Windows 服务视图中正确可见但由于某种原因在没有此已发布解决方案的情况下仍无法正常工作时,此方法也有效。不过,一些相对较新的东西,我们已经在多台服务器上安装 rmq 几年了,这个问题似乎最近在某个地方被引入。那么感谢这个解决方法。 @Jerdev Run RabbitMQ sbin command prompt as administrator 是什么意思? @244boy 他的意思是以管理员身份运行命令提示符并导航到 RabbitMQ\sbin 文件夹。如 C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.6\sbin 然后运行命令删除并重新安装服务。它对我有用。谢谢。 对我来说,运行上述命令,然后运行 ​​rabbitmq-server restart 命令。【参考方案12】:

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

rabbitmqctl 以及服务器节点都使用 Erlang cookie,因此可能需要对其进行处理(放置在正确的位置)。 请参阅Windows quirks 上的“以非管理员用户身份安装会将 .erlang.cookie 留在错误的位置”。

【讨论】:

以上是关于RabbitMQ 出现 Nodedown 错误的主要内容,如果未能解决你的问题,请参考以下文章

OpenStack错误:Error: unable to connect to node rabbit@localhost: nodedown

rabbitmqctl 错误:无法连接到节点 rabbit@myserver nodedown

安装RabbitMQ,创建消息队列用户时报错怎么办???

安装RabbitMQ,创建消息队列用户时报错怎么办???

Rabbitmq 服务启动后停止 | Windows下启动报错Error: unable to connect to node rabbit@xxx: nodedown

[Linux]RabbitMQ - 解决Error: unable to connect to node rabbit@localhost: nodedown