記錄在 F5 BIG-IP 負載均衡器後方的 SUSE Linux Enterprise Server 環境,透過 SSH 遠端部署 JDK 6 與 Tomcat 6 的完整流程,特別說明 F5 健康檢查機制導致的「空回應導致節點標記 Down」問題與解決方案。
# 建立安裝目錄
mkdir -p /usr/java
cd /usr/java
# 下載 JDK (需先至 Oracle 官網取得下載連結)
wget https://download.oracle.com/.../jdk-6u13-linux-x64-rpm.bin
chmod +x jdk-6u13-linux-x64-rpm.bin
./jdk-6u13-linux-x64-rpm.bin
# 自動解壓安裝至 /usr/java/jdk1.6.0_13/
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)
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
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
cd /usr/local/tomcat/bin
./startup.sh
瀏覽器存取 https://伺服器IP:8080 應顯示 Tomcat 貓咪歡迎頁。
/health 或根路徑return 或回應空字串:// 問題寫法
response.getWriter().print("");
return;
// 或直接
return;
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\"}");
/health 或 /actuator/health,回應完整狀態資訊 (DB 連線、快取、下游服務)| 項目 | 建議 |
|---|---|
| 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),並升級至支援中的執行環境版本。