>  기사  >  백엔드 개발  >  Nginx 역방향 프록시 기반 SparkUI에 대한 액세스

Nginx 역방향 프록시 기반 SparkUI에 대한 액세스

WBOY
WBOY원래의
2016-08-08 09:22:471634검색

Nginx 역방향 프록시 기반 SparkUI 액세스

시나리오 및 솔루션

Spark 클러스터 배포의 경우 마스터만 공용 IP를 갖고 작업자 머신은 공용 IP를 갖습니다. 이때, Master 머신에서 실행 중인 SparkUI에 접속하고 Worker 머신에서 로그를 확인해야 하는 경우 접근이 불가능한 문제가 발생합니다. 현재 한 가지 해결 방법은 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. 호스트 파일을 수정하여 마스터 시스템과 작업자 시스템을 127.0.0.1에 바인딩합니다.

4. SSH에서 지원하는 포트 전달 원리를 사용하여 SparkUI에서 사용하는 포트를 모두 변경합니다. 원격 수신 Nginx 서비스의 포트 80으로 전달됩니다. 예를 들어 SparkUI는 작업자 시스템의 8081 포트, 마스터 시스템의 8080 포트, 마스터 시스템의 80 포트를 사용합니다. 그런 다음 마스터 및 작업자 시스템이 lo 네트워크 카드에 바인딩되어 있기 때문에 세 개의 로컬 포트를 모두 사용합니다. )은 원격 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를 열고 모든 Worker 머신의 로그에 액세스합니다.

PS: 실제로 SSH 포트 전달은 마스터 시스템을 프록시로 사용하여 요청을 작업자 시스템으로 전달할 수도 있습니다. 네트워크 경로는 Nginx의 역방향 프록시와 동일하지만 SSH 포트 전달은 레이어 4. 전송 레이어의 전달입니다. Nginx와 같은 레이어 7 전달(머신 이름을 식별하고 머신 이름을 기반으로 전달할 수 있음)을 달성할 수 없으므로 SSH 포트 전달만으로는 동일한 효과를 얻을 수 없습니다.

위 내용은 관련 내용을 포함하여 Nginx 역방향 프록시 기반의 SparkUI에 대한 액세스를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.