首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

SUSE Linux 透過 SSH 在 F5 負載均衡器後部署 JDK 與 Tomcat 完整實戰筆記

     編輯:Java 相關知識

前言

記錄在 F5 BIG-IP 負載均衡器後方的 SUSE Linux Enterprise Server 環境,透過 SSH 遠端部署 JDK 6 與 Tomcat 6 的完整流程,特別說明 F5 健康檢查機制導致的「空回應導致節點標記 Down」問題與解決方案。

環境資訊

  • 作業系統:SUSE Linux Enterprise Server
  • Java 版本:JDK 6u13 (64-bit RPM)
  • Tomcat 版本:6.0.18
  • 部署架構:Client → F5 VIP → SUSE 節點 (HTTP 80 埠)
  • 管理方式:SSH (Putty) 遠端操作

JDK 6 安裝與環境變數設定

1. 下載安裝檔

# 建立安裝目錄
mkdir -p /usr/java
cd /usr/java

# 下載 JDK (需先至 Oracle 官網取得下載連結)
wget https://download.oracle.com/.../jdk-6u13-linux-x64-rpm.bin

2. 安裝執行

chmod +x jdk-6u13-linux-x64-rpm.bin
./jdk-6u13-linux-x64-rpm.bin
# 自動解壓安裝至 /usr/java/jdk1.6.0_13/

3. 驗證安裝

java -version
# 輸出範例:
# java version "1.6.0_13"
# Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
# Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02, mixed mode)

4. 設定永久環境變數

vim /etc/profile

檔案末尾加入:

export JAVA_HOME=/usr/java/jdk1.6.0_13
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

生效驗證:

logout
# 重新 SSH 登入
echo $JAVA_HOME
# 輸出:/usr/java/jdk1.6.0_13

Tomcat 6 安裝與啟動

1. 下載與解壓

cd /usr/java
wget https://archive.apache.org/dist/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz
cp apache-tomcat-6.0.18.tar.gz /usr/local/
cd /usr/local
tar xvzf apache-tomcat-6.0.18.tar.gz
mv apache-tomcat-6.0.18 tomcat

2. 啟動測試

cd /usr/local/tomcat/bin
./startup.sh

瀏覽器存取 https://伺服器IP:8080 應顯示 Tomcat 貓咪歡迎頁。

關鍵問題:F5 健康檢查導致 80 埠異常 Down

問題現象

  • 應用部署在 Servlet 容器,監聽 80 埠 (需 root 權限或 authbind/setcap)
  • F5 設定 HTTP 健康檢查,每隔數秒發送請求至 /health 或根路徑
  • Servlet 邏輯識別 F5 監控請求 (特定 User-Agent/IP),直接 return 或回應空字串:
// 問題寫法
response.getWriter().print("");
return;

// 或直接
return;
  • 結果:過一段時間 F5 將該節點標記為 Down,80 埠無法存取
  • 移除過濾邏輯後,節點恢復 Up

根因分析

F5 HTTP 健康檢查預期收到有效的 HTTP 回應 (狀態碼 2xx/3xx、內容長度 > 0)。空回應 (Content-Length: 0) 或連線直接關閉會被視為服務異常,觸發節點下線。

解決方案

回應有效內容,即使是簡單字串:

// 修正寫法
response.getWriter().print("404");  // 或 "OK", "healthy", "1"
return;

或回應標準 JSON:

response.setContentType("application/json");
response.getWriter().print("{\"status\":\"UP\"}");

最佳實踐建議

  1. 專用健康檢查端點:建立 /health 或 /actuator/health,回應完整狀態資訊 (DB 連線、快取、下游服務)
  2. 正確 HTTP 狀態碼:健康回傳 200,異常回傳 503
  3. 避免業務邏輯干擾:健康檢查端點不應觸發業務流程、寫入日誌、更新統計
  4. F5 端設定:確認 Receive String 設定匹配回應內容 (如 "UP" 或 "healthy")

生產環境補充建議

項目建議
JDK 版本JDK 6 已停止公開更新,強烈建議升級至 JDK 8/11/17/21 LTS 版本
Tomcat 版本Tomcat 6 已 EOL,建議升級至 9.0.x 或 10.1.x
80 埠綁定避免 root 執行 Tomcat,使用 authbind、setcap 或 Nginx 反向代理
服務管理建立 systemd service 檔案,支援開機自啟、自動重啟
日誌切割配置 logrotate 處理 catalina.out、access log
監控整合啟用 JMX Exporter + Prometheus + Grafana 監控 JVM/Thread/GC/Request 指標

總結

本文記錄了傳統環境下 JDK/Tomcat 手動部署流程,重點揭示負載均衡器健康檢查對後端回應內容的要求。現代雲原生部署建議採用容器化 (Docker/K8s)、標準化健康檢查端點、自動化部署管線 (CI/CD),並升級至支援中的執行環境版本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved