Mac通過SSH轉(zhuǎn)發(fā)端口在本地訪問內(nèi)網(wǎng)HBase集群

操作背景

目的:想要在本地debug和hbase有關(guān)的服務(wù),但hbase在內(nèi)網(wǎng)沒有外網(wǎng)IP無法直連,通過部署看日志的方式效率又比較低,而且難以通過斷點(diǎn)方式直觀下判斷。所以想要可以在本地就能直接連接內(nèi)網(wǎng)中的hbase集群。

現(xiàn)有條件:

  • hbase集群,2個(gè)節(jié)點(diǎn),同一個(gè)端口
  • 一臺(tái)跳板機(jī),有外網(wǎng)IP可以本機(jī)連接,同時(shí)也能訪問hbase集群
  • 一臺(tái)mac筆記本,為什么要強(qiáng)調(diào)是mac呢,因?yàn)楹竺嬉粭l命令跟OS有關(guān)系

操作流程

首先明確,需要做的就是,能讓我的請(qǐng)求通過跳板機(jī)轉(zhuǎn)發(fā)到hbase集群的對(duì)應(yīng)端口,那么依賴的端口有什么呢,hbase的服務(wù)包括zk的端口2181和集群本身的端口60020。其實(shí)本來從需要的配置文件上來看只需要zk的端口的,但是實(shí)際操作中程序會(huì)跳 UnknownHostException ,提示Hbase的域名未知,應(yīng)該是信息是存儲(chǔ)在ZK中,程序先去ZK中取回了Hbase集群的端口信息回來本地,在從本地區(qū)訪問的集群,所以Hbase的IP信息也是需要配置的。

  1. 首先使用SSH命令打通SSH隧道 ssh -N -L 2181:zk域名:2181 跳板機(jī)user@hostname,這里我沒有加-f掛在后臺(tái),因?yàn)橹皇钦{(diào)試用,調(diào)試結(jié)束要關(guān)閉把端口讓出來的,掛后臺(tái)容易忘了殺進(jìn)程。
  2. 測(cè)試是否可用,telnet localhost 2181,測(cè)試通過
  3. 編輯本機(jī)的/etc/hosts文件,添加對(duì)hbase域名的解析,這里說下為什么前面的ZK不需要解析。其實(shí)也可以解析,但是我在程序的配置文件中將ZK的域名已經(jīng)修改為localhost了,所以就不用,而hbase的域名是zk去取回來的無法配置,只能通過hosts文件做DNS劫持為本機(jī)回環(huán)IP。
127.0.0.1 hbase1
127.0.0.2 hbase2
  1. ping自己的127.0.0.2發(fā)現(xiàn)無法訪問,這里和操作系統(tǒng)有關(guān)系了,OSX似乎是因?yàn)榉阑饓Φ年P(guān)系,這里執(zhí)行這個(gè)命令可以打開127.0.0.2sudo ifconfig lo0 alias 127.0.0.2 netmask 0xFFFFFFFF,測(cè)試ping通。
  2. 最后再做hbase兩個(gè)域名的隧道即可
ssh -N -L 127.0.0.1:60020:hbase1:60020 跳板機(jī)user@hostname
ssh -N -L 127.0.0.2:60020:hbase2:60020 跳板機(jī)user@hostname

完事收工

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容