ホームページ  >  記事  >  バックエンド開発  >  Nginx リバース プロキシに基づく SparkUI へのアクセス

Nginx リバース プロキシに基づく SparkUI へのアクセス

WBOY
WBOYオリジナル
2016-08-08 09:22:471636ブラウズ

Nginx リバース プロキシに基づく SparkUI へのアクセス

シナリオとソリューション

Spark クラスターのデプロイメントの場合、現時点では、マスターのみがパブリック IP を持ち、ワーカー マシンはパブリック IP を持ちません。 Run マシンにアクセスしたい場合、Master マシンの SparkUI で実行したい場合、Worker マシンのログを表示する必要がある場合、アクセスできないという問題が発生します。現時点での 1 つの解決策は、Nginx+SSH トンネル ポート リダイレクトを使用して、異なるマシンの異なるポートからのすべてのリクエストをマスター マシンのポート 80 に送信し、リバース プロキシとして Nginx 経由で転送することです。

ステップの内訳

  1. Spark クラスターをデプロイし、マスターで SparkUI を実行します。
  2. Nginx をマスター マシンにデプロイし、$NGINX_HOME/conf/nginx.conf ファイルを変更して、作業マシンとマスター マシンのリバース プロキシ ロジックを追加します。例:

    <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. hosts ファイルを変更してマスター マシンとワーカー マシンを 127.0.0.1 にバインドします。

4. SSH でサポートされているポート転送原理を使用して、SparkUI で使用されるすべてのポートをリモート モニタリングの Nginx サービス 80 ポートに転送します。たとえば、SparkUI はワーカー マシンの 8081 ポート、マスター マシンの 8080 ポート、およびマスター マシンの 80 ポートを使用し、次に 3 つのローカル ポートすべてを使用します (マスター マシンとワーカー マシンはネットワーク カードにバインドされているため)。 ) はリモート 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 を開き、ワーカー マシンのログにアクセスします。

追記: 実際、SSH ポート転送はマスター マシンをプロキシとして使用してリクエストをワーカー マシンに転送することもできます。ネットワーク パスは Nginx のリバース プロキシと同じですが、SSH ポート転送はレイヤー 4 のみを実現できます。転送層は、Nginx のようなレイヤー 7 転送(マシン名を識別して、マシン名に基づいて転送できる)を実現できないため、SSH ポート転送だけでは同じ効果を達成できません。

上記では、Nginx リバース プロキシに基づく SparkUI へのアクセスを、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。