RabbitMQ无法启动,TCP连接成功但Erlang分发失败

时间:2017-12-18 19:12:21

标签: server rabbitmq erlang

我刚刚开始在Windows系统上学习和安装RabbitMQ。

我在自定义文件夹中安装Erlang VM和RabbitMQ,而不是默认文件夹(两者都有)。

然后我重新启动了我的电脑。

顺便说一下,我的电脑名称是“空”

我cd到 RabbitMQ / sbin 文件夹并使用命令:

rabbitmqctl status

但是返回的信息是:

  

节点兔子@ NULL的状态......

     

错误:无法对节点'rabbit @ NULL'执行操作。   请参阅下面的诊断信息和建议。

     

最常见的原因是:

     
      
  • 目标节点无法访问(例如,由于主机名解析,TCP连接或防火墙问题)
  •   
  • CLI工具无法通过服务器进行身份验证(例如,由于CLI工具的Erlang cookie与服务器不匹配)
  •   
  • 目标节点未运行
  •   
     

除了下面的诊断信息:

           

诊断

     

试图联系:[rabbit @ NULL]

     

兔@ NULL:

     
      
  • 在NULL
  • 上连接到epmd(端口4369)   
  • epmd报告节点'rabbit'使用端口25672进行节点间和CLI工具流量
  •   
  • TCP连接成功但Erlang分发失败

  •   
  • 身份验证失败(被远程节点拒绝),请检查Erlang cookie

  •   
     

当前节点详细信息:

     
      
  • 节点名称:rabbitmqcli70 @ NULL
  •   
  • 有效用户的主目录:C:\ Users \ Jerry Song
  •   
  • Erlang cookie hash:51gvGHZpn0gIK86cfiS7vp ==
  •   

我尝试重新启动RabbitMQ,我得到的是:

  

错误:名称为“rabbit”的节点已在“NULL”上运行

  

顺便说一句,我的电脑名称是“空”   我已启用防火墙中的所有端口。

10 个答案:

答案 0 :(得分:5)

如果您在Windows10中使用开发工具/软件的专用驱动器文件夹位置(不是Windows默认位置),可以按https://www.rabbitmq.com/cli.html所述同步erlang cookie的一种方法是复制cookie,如说明下面。

请注意,在我的情况下,HOMEDRIVE和HOMEPATH环境变量都设置。

" C:\ Windows \ system32 \ config \ systemprofile \ .erlang.cookie" 复制到 & #34; C:\ Users \%USERNAME%\。erlang.cookie"

错误" tcp连接成功但Erlang分发失败" 已解决。

现在我可以使用" rabbitmqctl.bat status"命令成功。因此,没有必要安装在默认位置来解决此错误,因为同步cookie将解决该错误。

答案 1 :(得分:4)

https://groups.google.com/forum/#!topic/rabbitmq-users/a6sqrAUX_Fg 描述了在全新安装的Rabbit MQ上存在cookie不匹配的问题。 Windows上的简单解决方案是同步cookie

此处还介绍了:http://www.rabbitmq.com/clustering.html#erlang-cookie

确保Cookie在下面的1,2和3之下同步

  1. %HOMEDRIVE%%HOMEPATH%\.erlang.cookie(对于用户%USERNAME%,通常为C:\Users\%USERNAME%\.erlang.cookie)如果同时设置了HOMEDRIVE和HOMEPATH环境变量

  2. %USERPROFILE%\.erlang.cookie(通常C:\Users\%USERNAME%\.erlang.cookie)如果 HOMEDRIVE HOMEPATH 未同时设置

  3. 对于RabbitMQ Windows服务 - %USERPROFILE%\.erlang.cookie(通常为C:\WINDOWS\system32\config\systemprofile
  4. Windows服务帐户使用的Cookie文件和运行CLI工具的用户必须通过复制C:\WINDOWS\system32\config\systemprofile文件夹中的文件来同步。

答案 2 :(得分:1)

使用默认设置窗口

在我的计算机中重新安装RabbitMQ

然后检查命令:

rabbitmqctl status

现在工作,而不是Erlang VM的问题。(意味着Er可以安装在其他的foler上)

如果我们不使用RabbitMQ 默认设置需要填充(C:\ Program Files),这将导致一些我现在无法发现的问题(比如这个问题) \ RabbitMQ Server)

如果有人发现,我希望你能告诉我为什么以及如何解决。

答案 3 :(得分:1)

我遇到这样的错误,我只是用关闭端口25672停止了RabbitMQ linux语法:
kill -9 $(lsof -t -i:25672)

错误图片:

enter image description here

答案 4 :(得分:1)

我是如何解决我的

这主要是由于新安装的Rabbit MQ cookie不匹配造成的

按照这两个步骤

1. copy the .erlang.cookie file from C:\Windows\System32\config\systemprofile paste it into 
C:\Users\["your user nameusername"] folder

2. run rabbitmq-service.bat stop and rabbitmq-service.bat start

当你运行 'rabbitmqctl start_app' 时,现在应该可以工作了,祝你好运。

请注意,如果您有多个用户,请将其放入正确的用户文件夹

答案 5 :(得分:0)

在Centos。

  1. 将ip nodename对添加到每个节点上的/ etc / hosts。

  2. 在每个从属节点上重启rabbitmq-server服务。

  3. 适合我。

答案 6 :(得分:0)

只要增加我的经验,就可以帮助其他人。

我写了一个Powershell .ps1脚本来安装和配置RabbitMQ,这将是为Packer提供服务器的步骤之一。

我在新的AWS W2016 Server构建中编写了代码。当在盒子上运行时(以管理员身份,从admin PS控制台运行),它运行良好,但是当将相同的代码移到Packer构建服务器上时,尽管通过Packer进行Rabbitmqctl.bat配置步骤,但仍会失败(据我所知)管理员可以运行脚本。

这在编码盒上起作用了

$pathvargs = {cmd.exe /c "rabbitmqctl.bat" add_user Username Password}
Invoke-Command -ScriptBlock $pathvargs
$pathvargs = {cmd.exe /c "rabbitmqctl.bat" set_user_tags User administrator}
Invoke-Command -ScriptBlock $pathvargs
$pathvargs = {cmd.exe /c "rabbitmqctl.bat" set_permissions -p "/" User "^User-.*" ".*" ".*"}
Invoke-Command -ScriptBlock $pathvargs
Write-Host "Did RabbitMQ"

但是我不得不以此作为前奏……

copy "C:\Windows\system32\config\systemprofile\.erlang.cookie" "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.17\sbin\.erlang.cookie"
copy "C:\Windows\system32\config\systemprofile\.erlang.cookie" $env:userprofile\.erlang.cookie -force

...在Packer框上。

我猜正在发生一些上下文问题,但是我正在使用

"winrm_username":       "Administrator",

在Packer构建器块中,所以我认为就足够了。

TL; DR-即使在某些情况下不使用Cookie也可以使用Cookie。

答案 7 :(得分:0)

在Windows 10中使用默认安装文件夹安装Erlang VM和RabbitMQ之后,我遇到了相同的错误。设法启动管理并通过HTTP访问它,但是状态因此错误而失败。

在所有文件夹(%HOMEDRIVE%%HOMEPATH%%USERPROFILE%C:\WINDOWS\system32\config\systemprofile)中,cookie都很好。

我必须重新启动Windows才能使其正常运行。重新启动后,它会设置一些要在启动时运行的内容+要求在防火墙中进行例外处理的权限。

答案 8 :(得分:0)

以我为例,该文件位于c:\\Windows\.erlang.cookie,只需将其复制到C:\ Users {USERNAME}即可完成所有工作,

答案 9 :(得分:0)

在我的情况下,通过将 .erlang.cookie 文件从 Windows 系统目录 - C:\Windows\system32\config\systemprofile\.erlang.cookie 复制到 %HOMEDRIVE%%HOMEPATH%\.erlang.cookie(其中 {{ 1}} 分别设置为 %HOMEDRIVE%H:%HOMEPATH%

为 Windows、Erlang OTP 24 和 RabbitMQ 3.8.19 快速设置 TODO

  1. 从以下位置下载并安装 Erlang [OTP 24](需要管理员权限): https://www.erlang.org/downloads
  2. set \应该指向安装目录
  3. 从以下位置下载并安装最近的 [3.8.19] RabbitMQ(需要管理员权限): https://github.com/rabbitmq/rabbitmq-server/releases/
  4. 关注:https://www.rabbitmq.com/install-windows.html 和/或 https://www.rabbitmq.com/install-windows-manual.html
  5. set ERLANG_HOME应该指向安装目录
  6. 通过添加以下内容更新 RABBITMQ_SERVER%PATH%
  7. 从上面修复 Erlang-cookie 问题,请遵循:https://www.rabbitmq.com/cli.html#erlang-cookie
  8. 通过运行以下命令启用 Web UI:;%RABBITMQ_SERVER%\sbin
  9. 由于缺少文件,第 8 项(以上)出错:%RABBITMQ_SERVER%/sbin/rabbitmq-plugins.bat enable rabbitmq_management -> 必须创建它 并再次运行 %USERPROFILEDIR%/AppData/Roaming/RabbitMQ/enabled_plugins
  10. 可能需要在途中运行/重启
  11. 最后,登录到:http://localhost:15672/ (guest:guest) RabbitMQ web UI

,或通过 cURL 检查: %RABBITMQ_SERVER%/sbin/rabbitmq-plugins.bat enable rabbitmq_management 应该收到如下回复:

curl -i -u guest:guest http://localhost:15672/api/vhosts

附言一些有用的 RabbitMQ CLI 命令(copy-paste):

  • HTTP/1.1 200 OK cache-control: no-cache content-length: 186 content-security-policy: script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self' content-type: application/json date: Tue, 13 Jul 2021 11:21:12 GMT server: Cowboy vary: accept, accept-encoding, origin [{"cluster_state":{"rabbit@hostname":"running"},"description":"Default virtual host","metadata":{"description":"Default virtual host","tags":[]},"name":"/","tags":[],"tracing":false}]
  • %RABBITMQ_SERVER%/sbin/rabbitmqctl start_app
  • %RABBITMQ_SERVER%/sbin/rabbitmqctl stop_app

P.P.S. 更新:关于这个主题的好文章:https://www.journaldev.com/11655/spring-rabbitmq