首頁  >  文章  >  後端開發  >  基於Nginx反向代理的SparkUI的訪問

基於Nginx反向代理的SparkUI的訪問

WBOY
WBOY原創
2016-08-08 09:22:471617瀏覽

基於Nginx反向代理的SparkUI的訪問

場景和方案

spark集群部署的情況下,只有Master有公網IP,Worker機器沒有公網IP,此時要如果要訪問Run在Master機器上的SparkUI,並且需要查看Worker機器上的日誌時,就會有無法存取的問題。此時的一個解決方案就是採用 Nginx+SSH Tunnel 端口重定向的方式,將不同機器不同端口的請求全部導向到Master機器的80端口,然後由Nginx做反向代理轉發。

步驟分解

  1. 部署Spark集群,將SparkUI在Master上run起來。
  2. 在Master機器上部署Nginx,並修改$NGINX_HOME/conf/nginx.conf文件,加入Work和Master機器的反向代理邏輯,例如:

    <code>worker_processes  1;
    error_log  logs/error.log;
    error_log  logs/error.log  notice;
    error_log  logs/error.log  info;
    pid        logs/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include         mime.types;
        default_type    pplication/octet-stream;
        sendfile        off;
        keepalive_timeout  20;
        gzip  on;
        proxy_intercept_errors  off;
    
        upstream server_spark_master {
    
            server 127.0.0.1:8080;
    
        }
        upstream server_jyvhyguguiu-slave-0 {
    
            server 10.110.1.1:8081;
    
        }
        upstream server_jyvhyguguiu-slave-1 {
    
            server 10.110.1.2:8081;
    
        }
        server {
            listen 80;
            server_name spark_master;
            location / {
                    proxy_pass http://server_spark_master;
            }
    
        }
        server {
            listen 80;
            server_name jyvhyguguiu-slave-0;
            location / {
                    proxy_pass http://server_jyvhyguguiu-slave-0;
            }
        }
        server {
            listen 80;
            server_name jyvhyguguiu-slave-1;
            location / {
                    proxy_pass http://server_jyvhyguguiu-slave-1;
            }
        }       
    }
    </code>

採用nginx的機器名稱映射的原理,來做反向代理。

3.將Master機器和Worker機器透過修改hosts檔案的方式全部綁定到127.0.0.1.

4.採用SSH支援的連接埠轉送原理,將SparkUI用到的連接埠全部轉送到遠端的監聽Nginx服務的80埠。例如SparkUI會用到Worker機器的8081端口,Master機器的8080端口和Master機器的80端口,那麼就將這3個本地端口(因為Master和Worker機器全部綁定到了lo網卡)全部轉發到遠端的80端口。指令如下:

<code>ssh -N -f -L 8081:127.0.0.1:80 username@ip
ssh -N -f -L 8080:127.0.0.1:80 username@ip
ssh -N -f -L 80:127.0.0.1:80 username@ip
</code>

5.此時存取 127.0.0.1:8080連接埠即可開啟遠端機器的SparkUI,並且可以存取任一台Worker機器的日誌了。

PS:其實SSH 連接埠轉送也可以採用Master機器做為代理,將請求轉送到Worker機器上,網路通路和Nginx的反向代理一致,但是SSH埠轉送只能做到4層也就是傳輸層的轉發,不能像Nginx那樣做到7層的轉發(能夠識別機器名,並根據機器名做轉發),所以僅僅通過SSH的端口轉發,還不能做到同樣的效果。

以上就介紹了基於Nginx反向代理的SparkUI的訪問,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn