Heim >Backend-Entwicklung >PHP-Tutorial >Zugriff auf SparkUI basierend auf dem Nginx-Reverse-Proxy

Zugriff auf SparkUI basierend auf dem Nginx-Reverse-Proxy

WBOY
WBOYOriginal
2016-08-08 09:22:471679Durchsuche

Zugriff auf SparkUI basierend auf Nginx-Reverse-Proxy

Szenarien und Lösungen

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.

Aufschlüsselung der Schritte

  1. Stellen Sie den Spark-Cluster bereit und führen Sie SparkUI auf dem Master aus.
  2. 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.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn