[rabbitmq-discuss] Plz give me help about EPMD: Non-local peer connected

何斌 hebin7611 at hotmail.com
Mon Jul 9 11:50:00 BST 2012


Hi Tim,

`env hostname` returns game-01.
No other epmd daemon runs, it's started by RabbitMQ automatically.
The same error occurs if start epmd manually by 'epmd -d -d -d' then run RabbitMQ.

Thanks!

He Bin


Date: Mon, 9 Jul 2012 11:24:33 +0100
From: tim at rabbitmq.com
To: rabbitmq-discuss at lists.rabbitmq.com
CC: hebin7611 at hotmail.com
Subject: Re: [rabbitmq-discuss] Plz give me help about EPMD: Non-local peer connected


  
    
  
  
    What does `env hostname` return on your system and is there a
    difference in starting erlang with -sname rabbit and -sname
    rabbit@`env hostname` ?

    

    On 07/09/2012 10:27 AM, 何斌 wrote:
    
      
      
        Hi,

        

        [root at game-01 woyogame]# cat /etc/hosts

        # Do not remove the following line, or various programs

        # that require network functionality will fail.

        127.0.0.1    game-01 ZSWY76 localhost.localdomain localhost

        ::1        localhost6.localdomain6 localhost6

        

        

        [root at game-01 woyogame]# cat /etc/sysconfig/network

        NETWORKING=yes

        NETWORKING_IPV6=no

        HOSTNAME=game-01

        GATEWAY=183.*.*.*

        

        

        It seems OK.

        

        He Bin

        

        

        
          Date: Mon, 9 Jul 2012 10:17:54 +0100

          From: tim at rabbitmq.com

          To: rabbitmq-discuss at lists.rabbitmq.com

          CC: hebin7611 at hotmail.com

          Subject: Re: [rabbitmq-discuss] Plz give me help about EPMD:
          Non-local peer connected

          

          Ah ok great. I'm on CentOS 6, and I found that setting up the
          hostname so that Erlang was *happy* with it took a bit of
          fiddling around.

          

          My configuration looks like this:

          

          t4 at iske $ cat /etc/hosts

          127.0.0.1    localhost.localdomain localhost

          127.0.0.1    iske

          ::1    localhost

          

          t4 at iske $ cat /etc/sysconfig/network

          NETWORKING=yes

          NETWORKING_IPV6=no

          HOSTNAME=iske

          

          You can check this with system-config-network as well. Are you
          seeing something similar?

          

          Tim

          

          On 07/09/2012 10:13 AM, 何斌 wrote:
          
            
             Hi,

              

              My environment info:

              OS: CentOS 5.6

              Erlang: Compiled from otp_src_R15B01.tar.gz

              RabbitMQ: Compiled from rabbitmq-server-2.8.4.tar.gz

              

              ifconfig:

              eth0      Link encap:Ethernet  HWaddr 84:2B:2B:73:88:28  

                        inet addr:183.*.*.*  Bcast:183.60.44.127 
              Mask:255.255.255.192

                        UP BROADCAST RUNNING MULTICAST  MTU:1500 
              Metric:1

                        RX packets:77904379 errors:0 dropped:0
              overruns:0 frame:0

                        TX packets:65643095 errors:0 dropped:0
              overruns:0 carrier:0

                        collisions:0 txqueuelen:1000 

                        RX bytes:11615134852 (10.8 GiB)  TX
              bytes:61820973373 (57.5 GiB)

                 &nb sp;      Interrupt:66 Memory:da000000-da012800
              

              

              eth0:0    Link encap:Ethernet  HWaddr 84:2B:2B:73:88:28  

                        inet addr:112.*.*.*  Bcast:112.90.57.191 
              Mask:255.255.255.192

                        UP BROADCAST RUNNING MULTICAST  MTU:1500 
              Metric:1

                        Interrupt:66 Memory:da000000-da012800 

              

              eth1      Link encap:Ethernet  HWaddr 84:2B:2B:73:88:29  

                        inet addr:10.20.30.1  Bcast:10.20.30.255 
              Mask:255.255.255.0

                        UP BROADCAST RUNNING MULTICAST  MTU:1500 
              Metric:1

                        RX packets:94328707 errors:0 dropped:0
              overruns:0 frame:0

                         TX packets:78961028 errors:0 dropped:0
              overruns:0 carrier:0

                        collisions:0 txqueuelen:1000 

                        RX bytes:77337167993 (72.0 GiB)  TX
              bytes:15705231055 (14.6 GiB)

                        Interrupt:74 Memory:dc000000-dc012800 

              

              eth1:1    Link encap:Ethernet  HWaddr 84:2B:2B:73:88:29  

                        inet addr:10.20.30.251  Bcast:10.20.30.255 
              Mask:255.255.255.0

                        UP BROADCAST RUNNING MULTICAST  MTU:1500 
              Metric:1

                        Interrupt:74 Memory:dc000000-dc012800 

              

              lo        Link encap:Local Loopback  

                         inet addr:127.0.0.1  Mask:255.0.0.0

                        UP LOOPBACK RUNNING  MTU:16436  Metric:1

                        RX packets:2530738 errors:0 dropped:0 overruns:0
              frame:0

                        TX packets:2530738 errors:0 dropped:0 overruns:0
              carrier:0

                        collisions:0 txqueuelen:0 

                        RX bytes:155346660 (148.1 MiB)  TX
              bytes:155346660 (148.1 MiB)

              

              

              Thank you again.

              

              

              He Bin

              

              

              
                From: watson.timothy at gmail.com

                Date: Mon, 9 Jul 2012 10:00:33 +0100

                CC: rabbitmq-discuss at lists.rabbitmq.com

                To: rabbitmq-discuss at lists.rabbitmq.com

                Subject: Re: [rabbitmq-discuss] Plz give me help about
                EPMD: Non-local peer connected

                

                What OS and rabbit version are you running? I've
                  not seen this happen before but I'll investigate.

                  

                
                On 9 Jul 2012, at 07:32, 何斌 <hebin7611 at hotmail.com>

                  wrote:

                  

                
                
                  
                    
                     

                      Hi Tim,

                      

                      Thanks for your reply.

                      

                      I tried "erl -sname rabbit", it's OK.

                      

                      my /etc/hosts looks like following:

                      127.0.0.1    game-01 ZSWY76 localhost.localdomain
                      localhost

                      ::1        localhost6.localdomain6 localhost6

                      

                      EPMD can be started successfully, but always
                      reports "Non-local peer connected" then force
                      disconnecting rabbit-server.

                      

                      Did I forget any necessory configration for
                      RabbitMQ to use loopback interface to connect
                      epmd?

                      

                      Thanks a lot.

                      

                      He Bin

                      

                      

                      > Date: Fri, 6 Jul 2012 18:34:07 +0100

                        > From: tim at rabbitmq.com

                        > To: rabbitmq-discuss at lists.rabbitmq.com

                        > CC: hebin7611 at hotmail.com

                        > Subject: Re: [rabbitmq-discuss] Plz give me
                        help about EPMD: Non-local peer conne cted

                        > 

                        > Hi there,

                        > 

                        > On 06/07/2012 06:53, 何斌 wrote:

                        > > Hi all,

                        > >

                        > > I installed RabbotMQ & tried to
                        start it.

                        > >

                        > > But I always got error as following:

                        > >

                        > 

                        > Ok so first of all, let's see if we can get
                        you to start a stand alone 

                        > distributed Erlang node successfully.
                        Normally stack traces like that 

                        > occur when the host environment isn't set
                        up quite right (from Erlang's 

                        > perspective).

                        > 

                        > We need to be able to run `erl -sname
                        rabbit` on the command line and 

                        > see the Erlang emulator start successfully.
                        It should look something 

                        > like this:

                        > 

                        > ##############

                        > 

                        > t4 at malachi:systest $ erl -sname rabbit

                        > Erlang R15B01 (erts-5.9.1) [source]
                        [64-bit] [smp:2:2] [async-threads:0] 

                        > [hipe] [kernel-poll:false]

                        > 

                        > Eshell V5.9.1 (abort with ^G)

                        > (rabbit at malachi)1>

                        > 

                        > ##############

                        > 

                        > Can you start Erlang like that
                        successfully? I'm assuming not, but 

                        > please let us k now.

                        > 

                        > I'm also interested in understanding what
                        your hosts configuration 

                        > (e.g., /etc/hosts) looks like. On some
                        Operating Systems (such as CentOS 

                        > for example), failing to set an explicit
                        host name prevents you from 

                        > starting a distributed Erlang node.

                        > 

                        > >
                        {error_logger,{{2012,7,6},{13,32,21}},"Protocol:
                        ~p: register error:

                        > >
~p~n",["inet_tcp",{{badmatch,{error,epmd_close}},[{inet_tcp_dist,listen,1,[{file,"inet_tcp_dist.erl"},{line,70}]},{net_kernel,start_protos,4,[{file,"net_kernel.erl"},{line,1314}]},{net_kernel,start_protos,3,[{file,"net_kernel.erl"},{line,1307}]},{net_kernel,init_node,2,[{file,"net_kernel.erl"},{line,1197}]},{net_kernel,init,1,[{file,"net_kernel.erl"},{line,357}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,227}]}]}]}

                        > >
{error_logger,{{2012,7,6},{13,32,21}},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,[{file,"gen_server.erl"},{line,320}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,227}]}]}},{ancest

                        > >
ors,[net_sup,kernel_sup,<0.9.0>]},{messages,[]},{links,[#Port<0.90>,<0.17.0>]},{dictionary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,987},{stack_size,24},{reductions,551}],[]]}

                        > >
{error_logger,{{2012,7,6},{13,32,21}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pid,undefined},{name,net_kernel},{mfargs,{net_kernel,start_link,[[rabbitmqprelaunch1077,shortnames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}

                        > >
{error_logger,{{2012,7,6},{13,32,21}},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,7,6},{13,32,21}},std_info,[{application,kernel},{exited,{shutdown,{kernel,start,[normal,[]]}}},{type,permanent}]}

                        > > {"Kern el 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,[]]}}})

                        > >

                        > >

                        > > I ran it on a server with public IP
                        183.*.*.* .

                        > >

                        > > In Erlang src, I found that epmd
                        checks connection src.

                        > >

                        > > /* Determine if connection is from
                        localhost */

                        > > if (getpeername(s->fd,(struct
                        sockaddr*) &si,&st) ||

                        > > s t < sizeof(si)) {

                        > > /* Failure to get peername is regarded
                        as non local host */

                        > > s->local_peer = EPMD_FALSE;

                        > > } else {

                        > > /* Only 127.x.x.x and connections from
                        the host's IP address

                        > > allowed, no false positives */

                        > > s->local_peer =

                        > > (((((unsigned)
                        ntohl(si.sin_addr.s_addr)) & 0xFF000000U) ==

                        > > 0x7F000000U) ||

                        > > (getsockname(s->fd,(struct
                        sockaddr*) &di,&st) ?

                        > > EPMD_FALSE : si.sin_addr.s_addr ==
                        di.s in_addr.s_addr));

                        > > }

                        > > dbg_tty_printf(g,2,(s->local_peer)
                        ? "Local peer connected" :

                        > > "Non-local peer connected");

                        > >

                        > >

                        > > But unfortunately, si.sin_addr.s_addr
                        was 183.*.*.*, while

                        > > di.sin_addr.s_addr was 127.0.0.1

                        > >

                        & amp; gt; > My log:Checking peer
                        address, getsockname ret: 0, si_addr=0xb7??????,

                        > > di_addr=0x7f000001

                        > >

                        > >

                        > 

                        > I could be wrong, but I suspect this is a
                        red herring. You can restart 

                        > epmd with -d to get debugging information
                        as well, but I suspect this 

                        > isn't relevant.

                        > 

                        > Is there any way to force RabbitMQ server
                        connect epmd via a specified

                        > > address?

                        > >

                        > 

                        > I'm not really sure what you mean by this,
                        but I'm fairly confident that 

                        > it is not necessary to even attempt to do
                        something like that. Erlang 

                        > should be able to start up nodes with
                        `-sname <name>` or `-name 

                        > <name>@<host>` and if either
                        doesn't work, a little tweaking of the host 

                        > configuration should solve it.

                        > 

                        > Based on your original comment (starting
                        rabbitmq but always getting an 

                        > error) my understanding is that you're
                        trying to start rabbit on this 

                        > machine and it fails. AFAIK when a
                        distributed Erlang node connects to 

                        > EPMD on the localhost it should be treated
                        as such. The rabbitmq-server 

                        > script starts rabbit up with `-sname
                        rabbit` which implies that the node 

                        > name will be rabbit@<hostname> so you
                        should make sure that `erl -sname 

                        > rabbit` works first of all.

                      
                    
                  
                
                
                  _______________________________________________

                    rabbitmq-discuss mailing list

                    rabbitmq-discuss at lists.rabbitmq.com

                    https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss

                  
                
                

                _______________________________________________
                rabbitmq-discuss mailing list rabbitmq-discuss at lists.rabbitmq.com
                https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
            
            

            
            

            _______________________________________________
rabbitmq-discuss mailing list
rabbitmq-discuss at lists.rabbitmq.com
https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss

          
          

        
      
      

      
      

      _______________________________________________
rabbitmq-discuss mailing list
rabbitmq-discuss at lists.rabbitmq.com
https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss

    
    
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20120709/d512ace5/attachment.htm>


More information about the rabbitmq-discuss mailing list