基於Nginx反向代理的SparkUI的訪問
spark集群部署的情況下,只有Master有公網IP,Worker機器沒有公網IP,此時要如果要訪問Run在Master機器上的SparkUI,並且需要查看Worker機器上的日誌時,就會有無法存取的問題。此時的一個解決方案就是採用 Nginx+SSH Tunnel 端口重定向的方式,將不同機器不同端口的請求全部導向到Master機器的80端口,然後由Nginx做反向代理轉發。
在Master機器上部署Nginx,並修改$NGINX_HOME/conf/nginx.conf文件,加入Work和Master機器的反向代理邏輯,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|
採用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端口。指令如下:
1 2 3 4 |
|
5.此時存取 127.0.0.1:8080連接埠即可開啟遠端機器的SparkUI,並且可以存取任一台Worker機器的日誌了。
PS:其實SSH 連接埠轉送也可以採用Master機器做為代理,將請求轉送到Worker機器上,網路通路和Nginx的反向代理一致,但是SSH埠轉送只能做到4層也就是傳輸層的轉發,不能像Nginx那樣做到7層的轉發(能夠識別機器名,並根據機器名做轉發),所以僅僅通過SSH的端口轉發,還不能做到同樣的效果。
以上就介紹了基於Nginx反向代理的SparkUI的訪問,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。