ホームページ >バックエンド開発 >PHPチュートリアル >Nginx リバース プロキシに基づく SparkUI へのアクセス
Nginx リバース プロキシに基づく SparkUI へのアクセス
Spark クラスターのデプロイメントの場合、現時点では、マスターのみがパブリック IP を持ち、ワーカー マシンはパブリック IP を持ちません。 Run マシンにアクセスしたい場合、Master マシンの SparkUI で実行したい場合、Worker マシンのログを表示する必要がある場合、アクセスできないという問題が発生します。現時点での 1 つの解決策は、Nginx+SSH トンネル ポート リダイレクトを使用して、異なるマシンの異なるポートからのすべてのリクエストをマスター マシンのポート 80 に送信し、リバース プロキシとして Nginx 経由で転送することです。
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 チュートリアルに興味のある友人に役立つことを願っています。