hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Anderson (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-6429) Server listener binds to wrong IP address for domain name given
Date Thu, 10 Dec 2009 16:18:18 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-6429?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12788768#action_12788768
] 

Eric Anderson commented on HADOOP-6429:
---------------------------------------

Here's more configuration information.  The internal DNS name and ip address are {{sdr.esl}}
and {{10.138.207.6}}, respectively.  The external counterparts are {{sdr.cs.colorado.edu}}
and {{128.138.207.6}}.

{noformat}
andersoe@sdr: ~ $ java -version
java version "1.6.0_0"
OpenJDK  Runtime Environment (build 1.6.0_0-b11)
OpenJDK 64-Bit Server VM (build 1.6.0_0-b11, mixed mode)
andersoe@sdr: ~ $ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:1e:68:0f:25:d8 brd ff:ff:ff:ff:ff:ff
    inet 128.138.207.6/26 brd 128.138.207.63 scope global eth0
    inet6 fe80::21e:68ff:fe0f:25d8/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0
qlen 1000
    link/ether 00:1e:68:0f:25:dc brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0
qlen 1000
    link/ether 00:1e:68:0f:25:da brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0
qlen 1000
    link/ether 00:1e:68:0f:25:db brd ff:ff:ff:ff:ff:ff
    inet 169.254.5.247/16 brd 169.254.255.255 scope link eth3:avahi
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue 
    link/ether 00:1e:68:0f:25:dc brd ff:ff:ff:ff:ff:ff
    inet 10.138.207.6/16 brd 10.138.255.255 scope global bond0
    inet6 fe80::21e:68ff:fe0f:25dc/64 scope link 
       valid_lft forever preferred_lft forever
7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
    link/ether 92:f2:d3:0a:89:1e brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global vnet0
    inet6 fe80::90f2:d3ff:fe0a:891e/64 scope link 
       valid_lft forever preferred_lft forever
andersoe@sdr: ~ $ dig sdr.esl

; <<>> DiG 9.4.2-P2.1 <<>> sdr.esl
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64307
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;sdr.esl.			IN	A

;; ANSWER SECTION:
sdr.esl.		0	IN	A	10.138.207.6

;; Query time: 0 msec
;; SERVER: 10.138.207.2#53(10.138.207.2)
;; WHEN: Thu Dec 10 09:12:05 2009
;; MSG SIZE  rcvd: 41

andersoe@sdr: ~ $ dig sdr.cs.colorado.edu

; <<>> DiG 9.4.2-P2.1 <<>> sdr.cs.colorado.edu
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 209
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;sdr.cs.colorado.edu.		IN	A

;; ANSWER SECTION:
sdr.cs.colorado.edu.	0	IN	A	128.138.207.6

;; Query time: 0 msec
;; SERVER: 10.138.207.2#53(10.138.207.2)
;; WHEN: Thu Dec 10 09:12:10 2009
;; MSG SIZE  rcvd: 53

andersoe@sdr: ~ $ uname -a
Linux sdr 2.6.24-25-server #1 SMP Tue Oct 20 07:20:02 UTC 2009 x86_64 GNU/Linux
andersoe@sdr: ~ $ 
{noformat}

> Server listener binds to wrong IP address for domain name given
> ---------------------------------------------------------------
>
>                 Key: HADOOP-6429
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6429
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: ipc
>    Affects Versions: 0.22.0
>         Environment: Ubuntu Linux,  kernel 2.6.24-25-server, x86_64 architecture.  Java
1.6.0., OpenJDK.  Server has 4 physical Ethernet cards,  configured as follows: {{eth0}} is
assigned an IP address {{external-ip}}.  {{eth1}}-{{eth3}} are bonded as {{bond0}}, which
is assigned an IP address {{internal-ip}}.  This server has two dns entries: {{external-dns}}
which resolves to {{external-ip}} and {{internal-dns}} which resolves to {{internal-ip}}.
>            Reporter: Eric Anderson
>
> High-level: 
> In my configuration files, I specifiy:
> {code:xml} 
> <property>
>     <name>fs.default.name</name>
>     <value>hdfs://{{internal-dns}}:8020</value>
>  </property>
> {code}
> The name node server binds to address {{external-ip}}:8020, while all the data nodes
try to connect to {{internal-ip}}:8020, and nothing works.
> Low-level: I've traced this down as far as {{org.apache.hadoop.ipc.Server}}, private
class {{Listener}}.  
> {code:java}
>   /** Listens on the socket. Creates jobs for the handler threads*/
>   private class Listener extends Thread {
>     
>     private ServerSocketChannel acceptChannel = null; //the accept channel
>     private Selector selector = null; //the selector that we use for the server
>     private InetSocketAddress address; //the address we bind at
>     private Random rand = new Random();
>     private long lastCleanupRunTime = 0; //the last time when a cleanup connec-
>                                          //-tion (for idle connections) ran
>     private long cleanupInterval = 10000; //the minimum interval between 
>                                           //two cleanup runs
>     private int backlogLength = conf.getInt("ipc.server.listen.queue.size", 128);
>     
>     public Listener() throws IOException {
>       address = new InetSocketAddress(bindAddress, port);
>       LOG.info("in Server/Listener. bindAddress=" + bindAddress + ", address="+address);
   //Added by EA for testing
>       // Create a new server socket and set to non blocking mode
>       acceptChannel = ServerSocketChannel.open();
>       acceptChannel.configureBlocking(false);
>       // Bind the server socket to the local host and port
>       bind(acceptChannel.socket(), address, backlogLength);
>       port = acceptChannel.socket().getLocalPort(); //Could be an ephemeral port
> {code}
> The problem  seems to be in the line {code}address = new InetSocketAddress(bindAddress,
port);{code}.  bindAddress  contains the DNS name of the *internal* interface, but address
comes out with the IP address of the *external* interface.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message