尝试运行 Rabbitmq 时连接被拒绝

Posted

技术标签:

【中文标题】尝试运行 Rabbitmq 时连接被拒绝【英文标题】:Connection refused when trying to run Rabbitmq 【发布时间】:2016-11-07 04:16:41 【问题描述】:

最近我在 Ubuntu 14 上安装了 Rabbitmq 3.6.2,但是每当我运行 rabbitmq-server 命令时,它都会给我错误:

error_logger,2016,7,5,13,45,12,"Protocol: ~tp: register/listen error: ~tp~n",["inet_tcp",econnrefused]
error_logger,2016,7,5,13,45,12,crash_report,[[initial_call,net_kernel,init,['Argument__1'],pid,<0.21.0>,registered_name,[],error_info,exit,error,badarg,[gen_server,init_it,6,[file,"gen_server.erl",line,320],proc_lib,init_p_do_apply,3,[file,"proc_lib.erl",line,239]],ancestors,[net_sup,kernel_sup,<0.10.0>],messages,[],links,[#Port<0.93>,<0.18.0>],dictionary,[longnames,false],trap_exit,true,status,running,heap_size,376,stack_size,27,reductions,805],[]]
error_logger,2016,7,5,13,45,12,supervisor_report,[supervisor,local,net_sup,errorContext,start_error,reason,'EXIT',nodistribution,offender,[pid,undefined,name,net_kernel,mfargs,net_kernel,start_link,[[rabbitmqprelaunch1853,shortnames]],restart_type,permanent,shutdown,2000,child_type,worker]]
error_logger,2016,7,5,13,45,12,supervisor_report,[supervisor,local,kernel_sup,errorContext,start_error,reason,shutdown,failed_to_start_child,net_kernel,'EXIT',nodistribution,offender,[pid,undefined,name,net_sup,mfargs,erl_distribution,start_link,[],restart_type,permanent,shutdown,infinity,child_type,supervisor]]
error_logger,2016,7,5,13,45,12,crash_report,[[initial_call,application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4'],pid,<0.9.0>,registered_name,[],error_info,exit,shutdown,failed_to_start_child,net_sup,shutdown,failed_to_start_child,net_kernel,'EXIT',nodistribution,kernel,start,[normal,[]],[application_master,init,4,[file,"application_master.erl",line,133],proc_lib,init_p_do_apply,3,[file,"proc_lib.erl",line,239]],ancestors,[<0.8.0>],messages,['EXIT',<0.10.0>,normal],links,[<0.8.0>,<0.7.0>],dictionary,[],trap_exit,true,status,running,heap_size,376,stack_size,27,reductions,117],[]]
error_logger,2016,7,5,13,45,12,std_info,[application,kernel,exited,shutdown,failed_to_start_child,net_sup,shutdown,failed_to_start_child,net_kernel,'EXIT',nodistribution,kernel,start,[normal,[]],type,permanent]
"Kernel pid terminated",application_controller,"application_start_failure,kernel,shutdown,failed_to_start_child,net_sup,shutdown,failed_to_start_child,net_kernel,'EXIT',nodistribution,kernel,start,[normal,[]]"

我检查了 iptables 里面没有规则。我确信rabbitmq 没有运行并且端口可用。我不是 linux 大师,所以不知道在哪里搜索。

更新:

/etc/rabbitmq 文件夹是空的,可能是因为它没有用apt-get完成配置(并且没有rabbitmq-env.conf):

Setting up rabbitmq-server (3.6.2-1) ...
* Starting message broker rabbitmq-server
* FAILED - check /var/log/rabbitmq/startup_\log, _err\ [fail]
invoke-rc.d: initscript rabbitmq-server, action "start" failed.
dpkg: error processing package rabbitmq-server (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
rabbitmq-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

我的 ifconfig 看起来是这样的(出于隐私原因,在 ip 地址中添加了 xx):

 lo Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:56 errors:0 dropped:0 overruns:0 frame:0
      TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:2800 (2.8 KB)  TX bytes:2800 (2.8 KB)

 venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
      inet addr:127.0.0.2  P-t-P:127.0.0.2  Bcast:0.0.0.0  Mask:255.255.255.255
      UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
      RX packets:7323 errors:0 dropped:0 overruns:0 frame:0
      TX packets:8256 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:919045 (919.0 KB)  TX bytes:1688814 (1.6 MB)

 venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
      inet addr:185.xx.xx.176  P-t-P:185.xx.xx.176  Bcast:185.xx.xx.176  Mask:255.255.255.255
      UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

谢谢!

【问题讨论】:

请报告epmd -debug的输出 这里是 epmd -debug 的输出: epmd: Tue Jul 5 15:55:10 2016: epmd running - daemon = 0 epmd: Tue Jul 5 15:55:10 2016: error opening stream套接字:协议不支持地址族谢谢! 【参考方案1】:

查看您的环回接口,您似乎在您的机器上禁用了 IPv6(没有 inet6 条目)。

现在,根据this bug epmd 不支持 IPv6,因此他们对其进行了修补,但现在它需要启用 IPv6 才能启动(查看 cmets #16 和 #17) .

由于该错误没有其他活动,我建议尝试在您的计算机上启用 IPv6。

一种可能的解决方法是使用IPV4-mapped IPV6 address。

在您的/etc/rabbitmq/rabbitmq-env.conf 中添加以下行:

ERL_EPMD_ADDRESS=::ffff:127.0.1.1

旧答案

您的错误有很多不同的可能根本原因。我想您将 RabbitMq 配置为使用 IPv6 地址,或者您有一些没有 IPv4 的奇怪网络配置。

我认为值得尝试编辑 /etc/rabbitmq/rabbitmq-env.conf 并添加:

RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-proto_dist inet6_tcp"

如果不起作用,请发布/etc/rabbitmq/rabbitmq-env.conf 中的其他内容以及ifconfig 的输出,请

【讨论】:

我已经用需要的信息更新了我的问题,谢谢。 @TadasStra 如果没有,请尝试创建/etc/rabbitmq/rabbitmq-env.conf 并添加我在答案中写的行 - 安装没问题,只是安装后脚本失败(因为它不是无法开始) @TadasStra 实际上,我更新了答案,因为我发现了一个我认为相关的错误 我已经尝试使用 ERL_EPMD_ADDRESS 添加该行,我真的认为这会有所帮助,但遗憾的是没有:( 尝试启用 ipv6,但未成功显示消息:必须在内核中启用 IPv6 支持。有没有其他解决方案?比如降级rabbitmq或者erl,所以不需要ipv6?谢谢支持! @TadasStra tbh 我现在很缺乏想法。只需尝试在您启动rabbitmq的同一个bash中执行export ERL_EPMD_ADDRESS=::ffff:127.0.1.1,也许rabbitmq不会将它传递给epmd【参考方案2】:

解决办法是从官网下载最新的ErLang:

https://www.erlang-solutions.com/resources/download.html

我已经为 Ubuntu Precise 下载了 v19,现在它运行良好。

【讨论】:

以上是关于尝试运行 Rabbitmq 时连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ - ACCESS_REFUSED - 登录被拒绝

尝试连接数据库和 Web 容器时 SQLAlchemy 连接被拒绝

在docker中运行flyway时连接被拒绝

操作系统错误:尝试运行 hello world 区块链应用程序时,连接被拒绝,errno = 111,地址 = 127.0.0.1

Dockerizing springboot应用程序(在容器中)未连接到rabbitmq(在容器中):连接被拒绝

连接被拒绝,如何解决?