RabbitMQ有Nodedown错误

时间:2015-02-01 01:09:33

标签: windows erlang rabbitmq

在Windows 7企业版机器上,我重新安装了Erlang 17.4和RabbitMQ 3.4.3 x64。安装成功且平安无事。

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

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

  

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

     

诊断

     

试图联系:[rabbit @ TPAJ05421843]

     

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

     

当前节点详细信息:
   - 节点名称:' rabbitmqctl-19884 @ TPAJ05421843'
   - 家庭目录:H:\
   - cookie hash:PD4QQCYrf0TME9vIko3Xuw ==

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

  

C:\ Program Files(x86)\ RabbitMQ Server \ 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 hash:PD4QQCYrf0TME9vIko3Xuw ==

好的,这几乎没有好转,因为至少它承认了RabbitMQ'在端口59301上运行。但是,这可能意味着" Erlang分发失败"?

当我尝试研究这个主题时,我发现文章说'#34;确保你有匹配的cookie。"基于此,我发现了this article,声称Cookie不匹配"与我无关,因为我没有创建(也不打算创建)RabbitMQ集群。

我该怎么办?

12 个答案:

答案 0 :(得分:108)

今天我遇到了同样的问题。没有cookie或防火墙问题,Windows报告该服务已成功运行。这就是最终解决它的问题:

  1. 以管理员身份运行RabbitMQ sbin命令提示符。
  2. 运行" rabbitmq-service remove"
  3. 运行" rabbitmq-service install"
  4. 由于某种原因,安装程序设置的服务未配置多个注册表项。运行此设置正确并允许服务运行。

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

答案 1 :(得分:25)

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

  • 服务器 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"

答案 2 :(得分:18)

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

#socialMediaIcons .fa a:link, #socialMediaIcons .fa a:visited

答案 3 :(得分:8)

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

  • 启动rabbitmq net start rabbitmq

  • 检查rabbitmq服务rabbitmqctl status

答案 4 :(得分:6)

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

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

答案 5 :(得分:2)

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

sudo service rabbitmq-server start

(这不是阻止命令)

答案 6 :(得分:2)

我在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”。

答案 7 :(得分:1)

请执行以下操作:

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

    rabbitmq-plugins启用rabbitmq_management

答案 8 :(得分:1)

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

答案 9 :(得分:0)

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

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

如何检查是否存在语法错误?

您可以在以下位置的sbin文件夹中运行rabbitmq-server restart
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文件夹中。

答案 10 :(得分:0)

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

  1. type" cmd"在Cortana搜索中或在" Run"适用于Windows的旧版本
  2. 右键单击并选择"以管理员身份运行"
  3. 转到兔子的sbin文件夹(cd" C:\ Program Files \ RabbitMQ Server \ rabbitmq_server-3.7.4 \ sbin")
  4. 运行:rabbitmq-service remove
  5. 运行:rabbitmq-service install
  6. 现在你可以跑了 6. rabbitmq-plugins启用rabbitmq_management 7. rabbitmq-service开始 8.最后,运行:start http://localhost:15672 9.以用户" guest"登录密码:"访客"就是这样。快乐的Rabbiting!

答案 11 :(得分:0)

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

以某种方式,Rabbit的全新安装是指旧的(未安装的版本),并且所有不匹配都在发生。线索是旧ERLANG版本中“服务”所指的Rabbit。