erlang Erl无法连接到本地EPMD,为什么?

kx7yvsdv  于 2022-12-08  发布在  Erlang
关注(0)|答案(3)|浏览(260)
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启动。

q9rjltbz

q9rjltbz1#

This is not a bug. Newer erlang versions restrict connections to epmd to local addresses by default. Most likely you have had routing issues or the reason is to masquerade all outgoing traffic with iptables without checking if the destination is 127.0.0.0/8.
调整MASQUERADE规则:

iptables -t nat -A POSTROUTING ! -d 127.0.0.0/8 -j MASQUERADE

和/或检查路由表。

mdfafbf1

mdfafbf12#

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

[root@ip-10-101-61-85 ec2-user]# erl -sname foo

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

jobtbby3

jobtbby33#

看起来这是CentOS Ec2上Erlang R14或更高版本的bug,我现在在Erlang R13上工作得很好

相关问题