Zugriff auf SparkUI basierend auf Nginx-Reverse-Proxy
Bei der Spark-Cluster-Bereitstellung verfügt nur der Master über eine öffentliche IP und die Worker-Maschine bereits Sie haben keine öffentliche IP. Wenn Sie zu diesem Zeitpunkt auf SparkUI zugreifen möchten, das auf dem Master-Computer ausgeführt wird, und die Protokolle auf dem Worker-Computer anzeigen müssen, besteht ein Problem der Unzugänglichkeit. Eine Lösung besteht derzeit darin, die Portumleitung des Nginx-SSH-Tunnels zu verwenden, um alle Anforderungen von verschiedenen Ports auf verschiedenen Computern an Port 80 des Master-Computers zu leiten und sie dann über Nginx als Reverse-Proxy weiterzuleiten.
Stellen Sie Nginx auf der Master-Maschine bereit und ändern Sie die Datei $NGINX_HOME/conf/nginx.conf, um Reverse-Proxy-Logik für die Arbeits- und Master-Maschinen hinzuzufügen, zum Beispiel:
<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>
Verwendung des Nginx-Maschinennamenzuordnungsprinzips für den Reverse-Proxy.
3. Binden Sie den Master-Computer und den Worker-Computer an 127.0.0.1, indem Sie die Hosts-Datei ändern.
4. Verwenden Sie das von SSH unterstützte Portweiterleitungsprinzip, um den von SparkUI verwendeten Port zu ändern wird an Port 80 des Remote-Listening-Nginx-Dienstes weitergeleitet. SparkUI verwendet beispielsweise den 8081-Port des Worker-Computers, den 8080-Port des Master-Computers und den 80-Port des Master-Computers. Anschließend werden alle drei lokalen Ports verwendet (da der Master- und der Worker-Computer an die Lo-Netzwerkkarte gebunden sind). ) wird an den Remote-Port 80 weitergeleitet. Der Befehl lautet wie folgt:
<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. Greifen Sie zu diesem Zeitpunkt auf den Port 127.0.0.1:8080 zu, um die SparkUI des Remote-Computers zu öffnen und auf die Protokolle eines beliebigen Worker-Computers zuzugreifen.
PS: Tatsächlich kann die SSH-Portweiterleitung auch den Master-Computer als Proxy verwenden, um die Anforderung an den Worker-Computer weiterzuleiten. Der Netzwerkpfad ist der gleiche wie der Reverse-Proxy von Nginx, die SSH-Portweiterleitung kann jedoch nur erreicht werden Schicht 4. Dies ist die Weiterleitung der Transportschicht. Sie kann keine Schicht-7-Weiterleitung wie Nginx erreichen (kann den Maschinennamen identifizieren und anhand des Maschinennamens weiterleiten), sodass allein durch die SSH-Portweiterleitung nicht derselbe Effekt erzielt werden kann.
Das Obige stellt den Zugriff auf SparkUI basierend auf dem Nginx-Reverse-Proxy vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die an PHP-Tutorials interessiert sind.