How are the internal IP addresses set up? If all three nodes have their internal IP addresses in the same subnet then you can set a route on the two private-only nodes.
So for instance: Node 1 eth0: 192.168.0.1/24 Node 1 eth1: 128.220.233.214/24 Node 2 eth0: 192.168.0.2/24 Node 3 eth0: 192.168.0.3/24 If you have an IP setup like that then you can run on node 2 and node 3: route add -host 128.220.233.214 gw 192.168.0.1 On Thu, Nov 11, 2010 at 8:19 AM, Buttler, David <buttl...@llnl.gov> wrote: > Instead of specifying an ip address can you specify an internal dns name > and only map that name to the internal ip? > Dave > > -----Original Message----- > From: Da Zheng [mailto:zhengda1...@gmail.com] > Sent: Wednesday, November 10, 2010 10:24 PM > To: user@hbase.apache.org > Subject: specify the IP address of the master node > > Hello, > > I tried to setup HBase on 3 nodes. One of them has two network interface, > one > has public IP address and the other has private address. The other two > nodes are > inside a private network, so they cannot connect to the public address of > the > first node. I set the first node (with two interfaces) as the master > server, the > other two as region servers. The problem now is that the zookeeper keeps > giving > the public IP address of the master node to the two other nodes and thus > HBase > fails to run. The error is shown below. Is there any way I can specify the > IP > address of the master node myself? I tried hbase.master.info.bindAddress > but it > doesn't work. I searched hbase-default.xml, but cannot find anything close. > > 2010-11-11 00:10:17,339 DEBUG > org.apache.hadoop.hbase.zookeeper.ZooKeeperWrapper: Set watcher on master > address ZNode /hbase/master > 2010-11-11 00:10:17,489 DEBUG > org.apache.hadoop.hbase.zookeeper.ZooKeeperWrapper: Read ZNode > /hbase/master got > 128.220.233.214:60000 > 2010-11-11 00:10:17,489 INFO > org.apache.hadoop.hbase.regionserver.HRegionServer: > Telling master at 128.220.233.214:60000 that we are up > 2010-11-11 00:10:17,734 WARN > org.apache.hadoop.hbase.regionserver.HRegionServer: > Unable to connect to master. Retrying. Error was: > java.net.SocketException: Network is unreachable > at sun.nio.ch.Net.connect(Native Method) > at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:507) > at > > org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:192) > at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:404) > at > > org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:308) > at > org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:844) > at > org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:716) > at > org.apache.hadoop.hbase.ipc.HBaseRPC$Invoker.invoke(HBaseRPC.java:333) > at $Proxy0.getProtocolVersion(Unknown Source) > at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:489) > at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:465) > at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:512) > at > org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:423) > at > > org.apache.hadoop.hbase.regionserver.HRegionServer.getMaster(HRegionServer.java:1299) > at > > org.apache.hadoop.hbase.regionserver.HRegionServer.reportForDuty(HRegionServer.java:1317) > at > > org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:434) > at java.lang.Thread.run(Thread.java:662) > > > Best, > Da >