Tomcat 叢集三大主流方案:
- DNS 輪詢
- Apache mod_proxy (R-proxy)
- Apache mod_jk
方案一:DNS 輪詢
缺點:
- 節點故障時,DNS 快取導致用戶無法存取,需待 DNS 解析更新或節點重啟
- 所有服務埠暴露公網,無 Apache 前置代理安全性差,佔用大量公網 IP
- Tomcat 需處理靜態資源,影響效率
優點:叢集配置最簡單,DNS 設定極簡單。
方案二:mod_proxy (R-proxy)
缺點:節點停機時 Apache 仍轉發請求導致 502 錯誤(重啟後恢復)。
方案三:mod_jk
優點:Apache 自動偵測停機節點停止轉發。
缺點:節點重啟後 Apache 偵測不到,持續不轉發請求。
mod_proxy 與 mod_jk 共同優點
- 僅 Apache 置於公網,節省公網 IP
- 可配置 Apache 專責靜態資源,Tomcat 專責 JSP/Servlet 動態請求
共同缺點
前置 Apache 代理單點故障:Apache 掛掉全叢集無法對外服務。
靜態資源處理與負載均衡
兩者均可配置優化靜態請求處理。三方案對最佳負載均衡均有不足,mod_jk 相對較佳可設 lbfactor 分配任務,但 mod_jk2 不推薦使用且已停止更新。