Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Apache + Tomcat 集群部署:mod_jk 負載均衡與 Session 複製全攻略

編輯:Linux 教學

生產環境常用 Apache 作為前端反向代理/負載均衡,後端多 Tomcat 實例提供服務。本文詳細記錄 mod_jk 連接器配置、workers.properties 負載策略、多實例端口隔離、以及 DeltaManager Session 複製配置。

架構拓撲

Client → Apache (mod_jk) → Tomcat1 (8081/8009)
                    ↘→ Tomcat2 (8082/8010)

1. 組件準備

  • JDK 1.5+
  • Apache HTTPD 2.0+
  • Tomcat 5.5+ / 6 / 7 / 8 / 9
  • mod_jk (源碼編譯或 yum install mod_jk / apt install libapache2-mod-jk)

2. Apache 配置:httpd.conf


# 載入模塊
LoadModule jk_module modules/mod_jk.so

# Jk 配置
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkShmFile logs/jk.shm

# 所有請求轉發給 workers 群組
JkMount /* workers
JkMount /status/ stat  # 可選:狀態頁

3. workers.properties 核心配置


# Worker 列表
worker.list=workers,tomcat1,tomcat2,stat

# Tomcat1 實例
worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost
worker.tomcat1.port=8009
worker.tomcat1.lbfactor=1          # 負載權重
worker.tomcat1.fail_on_status=500,503,404  # 錯誤碼標記不可用

# Tomcat2 實例
worker.tomcat2.type=ajp13
worker.tomcat2.host=localhost
worker.tomcat2.port=8010
worker.tomcat2.lbfactor=1
worker.tomcat2.fail_on_status=500,503,404

# 負載均衡控制器
worker.workers.type=lb
worker.workers.balance_workers=tomcat1,tomcat2
worker.workers.sticky_session=true      # 會話粘滯
worker.workers.sticky_session_force=false
worker.workers.method=Request           # 請求計數算法

# 狀態監控 worker
worker.stat.type=status

4. Tomcat 多實例端口隔離 (server.xml)





  ← mod_jk 連接端口

    





  ← 對應 workers.properties port=8010


關鍵點:jvmRoute 必須與 worker.tomcatX 名稱一致,用於 Session 粘滯路由。

5. Session 複製:DeltaManager (全備份模式)

在每個 Tomcat server.xml 的 <Engine> 內添加:




  

  
    
    
    
      
    
    
    
    
  

  

  

關鍵配置說明

  • DeltaManager:全量複製 Session 到所有節點,適合中小集群(<8 節點)
  • McastService:組播發現成員,需網絡支持組播(云環境常需改單播 StaticMembershipService)
  • Receiver.port:各實例必須不同(5002, 5003...)
  • ReplicationValve.filter:靜態資源不觸發 Session 複製
  • FarmWarDeployer:熱部署 WAR 到所有節點

6. web.xml 標記可分布式



放在應用 WEB-INF/web.xml 中,啟用 Session 複製。

驗證與監控

  • Apache 狀態頁:https://apache-ip/status/(需配置 JkMount /status stat)
  • Tomcat Manager:/manager/html 查看 Session 數、複製統計
  • 日誌:mod_jk.log、catalina.out 關鍵字 ReplicationValve、DeltaManager

總結

mod_jk + workers.properties + jvmRoute + DeltaManager 構建高可用 Tomcat 集群。核心要點:端口隔離、粘滯會話、組播網絡、靜態資源過濾。大規模集群建議改用 BackupManager 或 Redis 外部 Session 存儲。

Copyright © Windows教程網 All Rights Reserved