首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erl无法连接到本地EPMD。为什么?

Erl无法连接到本地EPMD。为什么?
EN

Stack Overflow用户
提问于 2012-12-07 11:24:01
回答 3查看 3.5K关注 0票数 3
代码语言:javascript
复制
Erlang R14B04 (erts-5.8.5) [source] [64-bit] [rq:1] [async-threads:0 [kernel-poll:false]

Eshell V5.8.5  (abort with ^G)

[root@ip-10-101-61-85 ec2-user]# erl -sname foo
{error_logger,{{2012,12,7},{3,17,8}},"Protocol: ~p: register error: ~p~n",["inet_tcp",{{badmatch,{error,epmd_close}},[{inet_tcp_dist,listen,1},{net_kernel,start_protos,4},{net_kernel,start_protos,3},{net_kernel,init_node,2},{net_kernel,init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}]}
{error_logger,{{2012,12,7},{3,17,8}},crash_report,[[{initial_call,{net_kernel,init,['Argument__1']}},{pid,<0.20.0>},{registered_name,[]},{error_info,{exit,{error,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[net_sup,kernel_sup,<0.9.0>]},{messages,[]},{links,[#Port<0.55>,<0.17.0>]},{dictionary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,377},{stack_size,24},{reductions,453}],[]]}
{error_logger,{{2012,12,7},{3,17,8}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pid,undefined},{name,net_kernel},{mfargs,{net_kernel,start_link,[[foo,shortnames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
{error_logger,{{2012,12,7},{3,17,8}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined},{name,net_sup},{mfargs,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]}]}
{error_logger,{{2012,12,7},{3,17,8}},std_info,[{application,kernel},{exited,{shutdown,{kernel,start,[normal,[]]}}},{type,permanent}]}
{"Kernel pid terminated",application_controller,"{application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}"}

Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}})

我在本地机器上工作得很好,但在亚马逊EC2上却不行,我想知道这是不是与网络有关的问题。

我该怎么检查呢?EPMD日志记录显示我连接来自非本地地址和阻止。

这会影响我的RabbitMQ启动。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-15 03:16:29

这不是一个bug。默认情况下,较新的erlang版本将到epmd的连接限制为本地地址。您很可能遇到了路由问题,或者原因是使用iptables伪装所有传出流量,而不检查目的地是否为127.0.0.0/8。

调整您的伪装规则:

代码语言:javascript
复制
iptables -t nat -A POSTROUTING ! -d 127.0.0.0/8 -j MASQUERADE

和/或检查您的路由表。

票数 8
EN

Stack Overflow用户

发布于 2012-12-07 20:31:34

我认为这与您的主机名设置有关。

代码语言:javascript
复制
[root@ip-10-101-61-85 ec2-user]# erl -sname foo

根据您上面的外壳信息,当前主机名为"ip-10-101-61-85 ec2-user",可能是由操作系统安装程序分配的。尝试重置您的主机名,并且不在主机名中使用whitespace,然后重试。

票数 0
EN

Stack Overflow用户

发布于 2012-12-28 11:03:19

这似乎是CentOS Ec2上的erlang R14或更高版本的错误,我现在在erlang R13上工作得很好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13756463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档