基于Nginx反向代理的SparkUI的访问

基于Nginx反向代理的SparkUI的访问

场景和方案

spark集群部署的情况下,只有Master有公网IP,Worker机器没有公网IP,此时要如果要访问Run在Master机器上的SparkUI,并且需要查看Worker机器上的日志时,就会存在不能访问的问题。此时的一个解决方案就是采用 Nginx+SSH Tunnel 端口重定向的方式,将不同机器不同端口的请求全部导向到Master机器的80端口,然后由Nginx做反向代理转发。

步骤分解
  1. 部署Spark集群,将SparkUI在Master上run起来。
  2. 在Master机器上部署Nginx,并修改$NGINX_HOME/conf/nginx.conf文件,添加Work和Master机器的反向代理逻辑,例如:

    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;
            }
        }       
    }
    

采用nginx的机器名映射的原理,来做反向代理。

3.将Master机器和Worker机器通过修改hosts文件的方式全部绑定到127.0.0.1.

4.采用SSH支持的端口转发原理,将SparkUI用到的端口全部转发到远程的监听Nginx服务的80端口。例如SparkUI会用到Worker机器的8081端口,Master机器的8080端口和Master机器的80端口,那么就将这3个本地端口(因为Master和Worker机器全部绑定到了lo网卡)全部转发到远程的80端口。命令如下:

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

5.此时访问 127.0.0.1:8080端口即可打开远程机器的SparkUI,并且可以访问任意一台Worker机器的日志了。

PS:其实SSH 端口转发也可以采用Master机器做为代理,将请求转发到Worker机器上,网络通路和Nginx的反向代理一致,但是SSH端口转发只能做到4层也就是传输层的转发,不能像Nginx那样做到7层的转发(能够识别机器名,并根据机器名做转发),所以仅仅通过SSH的端口转发,还不能做到同样的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值