[ https://issues.apache.org/jira/browse/HBASE-18124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16031113#comment-16031113 ]
liubangchen commented on HBASE-18124: ------------------------------------- Hi,[~ted_yu], by the way ,why not keep both host(used as vip) and ipc address(used as physical ip address)? > Make Hbase Communication Support Virtual Network > ------------------------------------------------ > > Key: HBASE-18124 > URL: https://issues.apache.org/jira/browse/HBASE-18124 > Project: HBase > Issue Type: New Feature > Components: Client, hbase, master > Reporter: liubangchen > Assignee: liubangchen > Attachments: 1.jpg, HBASE-18124.pdf > > > Hbase only have one way to locate hmaster or hregionserver not like hdfs has > two way to locate datanode used by name or hostname. > I'm a engineer of cloud computing , and I'm in charge of to make Hbase as a > cloud service. > Our Hbase cloud service architecture shown as follows: 1.jpg > 1.VM > User’s Hbase client work in vm and use virtual ip address to access hbase > cluster. > 2.NAT > Network Address Translation, vip(Virtual Network Address) to pip > (Physical Network Address) > 3. HbaseCluster Service > HbaseCluster Service work in physical network > Problem > Vm use vip to communicate with hbase cluster, but hbase have only one > way to communicate with each server using host which is setting by parameters > hbase.regionserver.hostname or hbase.master.hostname. When HMaster startup > will publish master address and meta region server address in zookeeper, > then the address is pip(Physical Network Address) . Because hbase cluster > work in physical network. But the problem is that when vm get the address > from zookeeper is pip, not vip. If I set host as vip, it will has problems > for hbase cluster communication inside. so it needs two ways for > communication setting by parameters. > Solution > 1. protocol extend > change strcut ServerName as > {code} > message ServerName { > required string host_name = 1; > optional uint32 port = 2; > optional uint64 start_code = 3; > optional string name=4; //new field > } > {code} > It will be publish in zookeeper. We can choose host_name or name > configured by parameters hbase.client.use.hostname > 2. metatable extend > Add a column to hbase:meta named info:namelocation . So the original > column info:server configured with hbase.regionserver.hostname, and the new > column info:namelocation configured with hbase.regionserver.servername > 3. hbase-server > When regionserver startup, configured hbase.regionserver.hostname as > pip and configured hbase.regionserver.servername as vip. Then > hbase.regionserver.hostname will be writed in ServerName's host_name, and > hbase.regionserver.servername will be writed in ServerName's name.When > hmaster startup, configured hbase.hmaster.hostname as pip and configured > hbase.hmaster.servername as vip. Then hbase.hmaster.hostname will be writed > in ServerName's host_name, and hbase.hmaster.servername will be writed in > ServerName's name. > 4. hbase-client > Add a parameters named hbase.client.use.hostname to use vip or pip. > This patch is base on Hbase-1.3.0 -- This message was sent by Atlassian JIRA (v6.3.15#6346)