Cloudera Manager 前後端分離部署方法

iKinson發表於2024-11-01

現狀

如果大資料團隊使用 Cloudera Manager 產品,那極有可能會遇到以下場景:
有多套環境,需要維護各個環境的 scm server 地址(http://10.x.x.x:7180
給每個 scm server 申請域名,但域名的變更需要走流程

方案

採取前後端分離部署方案(niginx + 域名),將 cloudera-scm-server 的前端靜態檔案分離出來置於 Nginx 伺服器,
透過不同的域名配置,實現同一份前端檔案 + 不同的後段介面服務。

實踐操作

環境:Cloudera Manager 6.3.1

前端檔案

仔細探索 Cloudera Manager 的安裝目錄,不難發現其前端檔案目錄 /opt/cloudera/cm/webapp

# ll /opt/cloudera/cm/webapp
total 68
-rw-r--r--  1 root root  4559 Sep 25  2019 favicon-BLACK.png
-rw-r--r--  1 root root   430 Sep 25  2019 favicon-BLUE.png
-rw-r--r--  1 root root   442 Sep 25  2019 favicon-BROWN.png
-rw-r--r--  1 root root   432 Sep 25  2019 favicon-DARKBLUE.png
-rw-r--r--  1 root root   367 Sep 25  2019 favicon-GRAY.png
-rw-r--r--  1 root root   443 Sep 25  2019 favicon-GREEN.png
-rw-r--r--  1 root root 12871 Sep 25  2019 favicon.ico
-rw-r--r--  1 root root   385 Sep 25  2019 favicon-PINK.png
-rw-r--r--  1 root root   420 Sep 25  2019 favicon-PURPLE.png
-rw-r--r--  1 root root   438 Sep 25  2019 favicon-RED.png
-rw-r--r--  1 root root   411 Sep 25  2019 favicon-TEAL.png
-rw-r--r--  1 root root   423 Sep 25  2019 favicon-YELLOW.png
-rw-r--r--  1 root root    63 Sep 25  2019 index.html
drwxr-xr-x 11 root root   119 Feb 21  2023 static
drwxr-xr-x  3 root root    35 Feb 21  2023 WEB-INF

將該目錄下所有內容放置於 Nginx 伺服器目錄 /usr/share/nginx/cloudera-scm-ui

Nginx配置

分析 Cloudera Manager 前後端主要介面,包含

/cmf :主要介面
/j_spring_security_ :登入相關
/api :開放api

使用 scm-upstreams.conf 檔案維護不同環境不同主機的 upstream

upstream cloudera-manager-test {
    server 10.1.1.1:7180 max_fails=60 fail_timeout=10s;
    keepalive 60;
}

upstream cloudera-manager-dev {
    server 10.1.1.2:7180 max_fails=60 fail_timeout=10s;
    keepalive 60;
}

upstream cloudera-manager-prd {
    server 10.1.1.3:7180 max_fails=60 fail_timeout=10s;
    keepalive 60;
}

配置例子 /etc/nginx/conf.d/scm-test.abc.xyz.conf

server {
    listen 80;
    server_name scm-test.abc.xyz;

    root /usr/share/nginx/cloudera-scm-ui;

    index index.html;

    try_files $uri $uri/ /index.html;

    location ~ ^/(api|cmf|j_spring_security_) {
        proxy_pass http://cloudera-manager-test;
    }
}

配置完成,執行 nginx reload 生效配置

# nginx -s reload

經過以上配置後,透過申請域名或者本地配置 hosts 方式,即可實現不同的環境共用一個前端, 開啟 scm-test.abc.xyz 訪問 Cloudera Manager 頁面。

相關文章