首頁 > 後端開發 > php教程 > 基於Nginx反向代理的SparkUI的訪問

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-08-08 09:22:47
原創
1768 人瀏覽過

基於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機器的反向代理邏輯,例如:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    <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端口。指令如下:

1

2

3

4

<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
最新問題
ruby - rails server 啟動報錯,內詳
來自於 1970-01-01 08:00:00
0
0
0
提交管理員密碼後報錯500 internal server error
來自於 1970-01-01 08:00:00
0
0
0
nginx設定server模組的問題
來自於 1970-01-01 08:00:00
0
0
0
phpstudy apache http server已停止運作
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板