現狀
如果大資料團隊使用 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 頁面。