很多公司爲了安全,hadoop、hbase集羣都是不對外開放,只有一臺入口機對外,那麼當要查看hadoop、hbase集羣機器狀態等信息時,就沒辦法了。css
而要實現內網機器給外網訪問,要解決的問題是: 1.hadoop、hbase頁面上的url替換成外網能訪問的url 2.經過有限的端口、外網ip對外提供整集羣訪問html
強大的nginx正好能解決這個問題。而nginx要替換返回的頁面內容,雖然它本身有模塊能夠實現,但據瞭解只能替換一次,而網上比較經常使用的是第三方的替換模塊nginx_substitutions_filter,其主頁:nginx
整個實現步驟爲:git
-
下載nginx_substitutions_filter並解壓: 根據官方的建議: git clone git://github.com/yaoweibin/ngx_下載nginx穩定版並解壓: wgetgithub
-
編譯安裝 根據本身須要選擇要適應的模塊,而且指定substitutions4nginx模塊的路徑 ./configure --prefix=/usr/local/nginx --pid-path=/usr/local/nginx.pid --with-http_dav_module --with-http_flv_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-debug --add-module=/home/hadoop/nginx/third-party-md/ngx_http_substitutions_filter_module/安全
make make installoop
- 配置nginx.conf #替換hbase server { listen 8000; location / { proxy_pass http://master; subs_filter_types text/html text/css text/xml; subs_filter hd1:60030 192.168.1.25:8000/hd11; subs_filter hd2:60030 192.168.1.25:8000/hd22; } location /hd11/ { proxy_pass ; } location /hd22/ { proxy_pass ; } } #替換hadoop jt server { listen 8001; location / { proxy_pass http://master2; subs_filter_types text/html text/css text/xml; subs_filter hd1:50060 192.168.1.25:8001/hd11; subs_filter hd2:50060 192.168.1.25:8001/hd22; } location /hd11/ { proxy_pass ; } location /hd22/ { proxy_pass ; } } #替換hadoop nn server { listen 8002; location / { proxy_pass http://master3; subs_filter_types text/html text/css text/xml; subs_filter hd1:50075 192.168.1.25:8002/hd11; subs_filter hd2:50075 192.168.1.25:8002/hd22; } location /hd11/ { proxy_pass ; } location /hd22/ { proxy_pass ; } } upstream master { server 192.168.1.30:60010; } upstream master2 { server 192.168.1.25:50030; } upstream master3 { server 192.168.1.25:50070; }
重啓ng服務讓配置生效。url
這樣就能夠經過統一ng入口訪問內網集羣了,後面若是有須要添加的修改nginx.conf就行。debug