Erl无法连接到本地EPMD。为什么? Erlang R14B04(erts-5.8.5)[源代码][64位][rq:1][异步线程:0[内核轮询:false] Eshell V5.8.5(使用^G中止) [root@ip-10-101-61-85 ec2用户]#厄尔-斯纳姆·福 {3,17,8},{3,7},{3,7},{3,7},{3{错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误,epmd.关闭},{{2012,12,12,12,12,12,7,7,7,7,7,7,7,协议.p:注册错误.注册错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误,epmd,epmd.关闭{,epmd.关闭},,},,,,,{{{{{{{{{5,epmd,epmd,epmd.关闭},},},,,,},,,,,,,,,,{{{{{{{{{{{{{{{{{{{{{{{{5,epmd.你不申请,3}]} {3,17,8,}崩溃报告,[{{{{最初的调用调用,{net内核,init,{'错误.错误.错误.错误.错误.7,7,7,7,7,7.错误.错误.错误.7,7,7,7,7.错误.错误.错误.7,7,7,7.错误.错误.7,7,{3,7,7,7,{{3,7,7,7.错误.错误.7,7,7,7.错误.错误.错误.错误.7,7,7,{3,7,7,7,7,7,{{{3,7,7,7,7,7,7,7,7,7,7,7,5,7,7,7,7,{{{{{{{{{{{{{{{{{{{{{{{{5.初始的初步的初步的初步的初步的初步的初步的初步的调用调用调用调用.]},{dictionary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,377},{stack_size,24},{reduces,453}],]} {error\u logger,{2012,12,7},{3,17,8},supervisor\u report,[{supervisor,{local,net\u sup},{errocontext,start\u error},{reason,{EXIT',nodistribution},{inner,[{pid,undefined},},{name,net\u内核,{mfargs,{net\u内核,start\u链接,[[foo,shortnames]},},{restart类型,shutdown类型,关机,2000},{child worker},{ {error\u logger,{2012,12,7},{3,17,8},supervisor\u report,[{supervisor,{local,kernel\u sup},{error context,start\u error},{reason,shutdown},{inner,[{pid,未定义的},{name,net\sup u},{mfargs,{erl\u分布,start\u链接,[},},{restart\u类型,永久性},{shutdown,无限大},{child\u类型,supervisor} {error_logger,{2012,12,7},{3,17,8},std_info,[{应用程序,内核},{退出,{关闭,{内核,启动,[normal,[]},{类型,永久}} {“内核pid终止”,应用程序控制器,{应用程序启动失败,内核,{shutdown,{Kernel,start,[normal,[]}} 崩溃转储已写入:erl_Crash.dump 内核pid终止(应用程序控制器)(应用程序启动失败,内核,{shutdown,{Kernel,start,[normal,[]]})

Erl无法连接到本地EPMD。为什么? Erlang R14B04(erts-5.8.5)[源代码][64位][rq:1][异步线程:0[内核轮询:false] Eshell V5.8.5(使用^G中止) [root@ip-10-101-61-85 ec2用户]#厄尔-斯纳姆·福 {3,17,8},{3,7},{3,7},{3,7},{3{错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误,epmd.关闭},{{2012,12,12,12,12,12,7,7,7,7,7,7,7,协议.p:注册错误.注册错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误.错误,epmd,epmd.关闭{,epmd.关闭},,},,,,,{{{{{{{{{5,epmd,epmd,epmd.关闭},},},,,,},,,,,,,,,,{{{{{{{{{{{{{{{{{{{{{{{{5,epmd.你不申请,3}]} {3,17,8,}崩溃报告,[{{{{最初的调用调用,{net内核,init,{'错误.错误.错误.错误.错误.7,7,7,7,7,7.错误.错误.错误.7,7,7,7,7.错误.错误.错误.7,7,7,7.错误.错误.7,7,{3,7,7,7,{{3,7,7,7.错误.错误.7,7,7,7.错误.错误.错误.错误.7,7,7,{3,7,7,7,7,7,{{{3,7,7,7,7,7,7,7,7,7,7,7,5,7,7,7,7,{{{{{{{{{{{{{{{{{{{{{{{{5.初始的初步的初步的初步的初步的初步的初步的初步的调用调用调用调用.]},{dictionary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,377},{stack_size,24},{reduces,453}],]} {error\u logger,{2012,12,7},{3,17,8},supervisor\u report,[{supervisor,{local,net\u sup},{errocontext,start\u error},{reason,{EXIT',nodistribution},{inner,[{pid,undefined},},{name,net\u内核,{mfargs,{net\u内核,start\u链接,[[foo,shortnames]},},{restart类型,shutdown类型,关机,2000},{child worker},{ {error\u logger,{2012,12,7},{3,17,8},supervisor\u report,[{supervisor,{local,kernel\u sup},{error context,start\u error},{reason,shutdown},{inner,[{pid,未定义的},{name,net\sup u},{mfargs,{erl\u分布,start\u链接,[},},{restart\u类型,永久性},{shutdown,无限大},{child\u类型,supervisor} {error_logger,{2012,12,7},{3,17,8},std_info,[{应用程序,内核},{退出,{关闭,{内核,启动,[normal,[]},{类型,永久}} {“内核pid终止”,应用程序控制器,{应用程序启动失败,内核,{shutdown,{Kernel,start,[normal,[]}} 崩溃转储已写入:erl_Crash.dump 内核pid终止(应用程序控制器)(应用程序启动失败,内核,{shutdown,{Kernel,start,[normal,[]]}),erlang,rabbitmq,Erlang,Rabbitmq,我在本地机器上工作得很好,但在AmazonEC2上没有,我想知道这是否是网络相关的问题 如何检查?EPMD日志显示我的连接来自非本地地址和块 这将影响我的RabbitMQ启动。我认为这与主机名设置有关 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-u

我在本地机器上工作得很好,但在AmazonEC2上没有,我想知道这是否是网络相关的问题

如何检查?EPMD日志显示我的连接来自非本地地址和块


这将影响我的RabbitMQ启动。

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

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,[]]}}})
根据您上面的shell信息,当前主机名为“ip-10-101-61-85 ec2用户”,它可能由操作系统安装程序分配。
请尝试重置主机名,不要在主机名中使用
空格
,然后重试。

这似乎是CentOS Ec2上erlang R14或更高版本的一个错误,我现在在erlang R13上工作正常

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

调整伪装规则:

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

和/或检查您的路由表。

ip-10-101-61-85应该是主机名,ec2 user应该是当前用户名,我猜这将是ipfw规则。我目前无法访问Mac,但
man ipfw
应该可以帮助您开始。是否有选项禁用单端口伪装?有
--dport
两个选项de>--sport使规则特定于端口的选项。
iptables -t nat -A POSTROUTING ! -d 127.0.0.0/8 -j MASQUERADE