使用场景
公司的Hadoop、Spark平台都搭建在内网集群,需要通过先登录连接外网的跳板机,然后从跳板机访问内网服务器集群。但是问题来了,在本地无法通过浏览器访问hadoop、yarn的Web UI监控页面!
解决方案
用一台有公网地址的跳板机做代理,在浏览器里安装代理插件,并制定规则,凡是访问bi.bj2.xxx.com的http请求都走跳板机。
以mac为例
-
用ssh -D登陆跳板机124.250.xx.xx
localhost:~ gongenbo$ ssh -D 7065 124.250.xx.xx gongenbo@124.250.xx.xx's password: Last login: Thu Aug 3 13:49:08 2017 from 111.207.160.68 [gongenbo@login1.ops.bj2.xxx.com ~]$
- 为浏览器安装proxy插件,以chrome安装配置SwitchyOmega为例:
- a) 安装插件: 用chrome打开chrome://extensions/, 点击最下方’获取更多扩展程序’, 在 搜索店内应用 里输入’switchyOmega’, 找到’Proxy SwitchyOmega’, 点击’添加至CHROME’
- b) 设置代理: 点击 选项, 情景模式, 新建情景模式, 填写’情景模式名称’, 比如’hadoop’, SOCKS 代理:127.0.0.1, 端口: 7065, 选择’SOCKS v5’, 点击’保存’
- c) 设置规则: 点击 切换规则, 新建规则, 填写’规则名称’, 比如’bi.bj2.xxx.com’, ‘URL模式’里填写’bi.bj2.xxx.com’, ‘模式匹配’选择’通配符’, ‘情景模式’选择刚才输入的情景模式名称, 比如’hadoop’, 点击’保存’
- b) 设置切换规则: 点击浏览器 菜单栏 右上角的 小地球图标, 选择’自动切换规则’
- 打开设置好的浏览器就可以访问web界面了:
- YARN: http://presto1.bi.bj2.xxx.com:8088
- HDFS: http://presto1.bi.bj2.xxx.com:50070
- HBase: http://presto1.bi.bj2.xxx.com:16010
原理
在SwitchyOmega中配置hadoop的代理服务器为127.0.0.1
,端口7065
,添加了过滤规则后,当访问*bi.bj2.xxx.com域名时,就会自动转发到本地的7065端口。
在mac本地使用ssh -D 7065 124.250.xx.xx
登陆跳板机,实际上就是在本地与跳板机之间打通了一条隧道,所有发往7065端口的请求都发给了跳板机,这时候跳板机可以访问内网的Hadoop WebUI,所以外网也就可以访问了,惊不惊喜,意不意外!
参考
SSH隧道应用, 突破网络限制 http://www.cnblogs.com/yiwenshengmei/p/ssh_tunnel.html
阮一峰老师的SSH原理与运用(二):远程操作与端口转发 http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html
您的打赏是对我最大的鼓励!