1.使用DNS輪詢.
2.使用Apache R-proxy方式。
3.使用Apache mod_jk方式.
DNS輪詢的缺點是,當集群中某臺服務器停止之后,用戶由于dns緩存的緣故,便無法訪問服務,
必須等到dns解析更新,或者這臺服務器重新啟動。
還有就是必須把集群中的所有服務端口暴露給外界,沒有用apache做前置代理的方式安全,
并且占用大量公網IP地址,而且tomcat還要負責處理靜態網頁資源,影響效率。
優點是集群配置最簡單,dns設置也非常簡單。
R-proxy的缺點是,當其中一臺tomcat停止運行的時候,apache仍然會轉發請求過去,導致502網關錯誤。
但是只要服務器再啟動就不存在這個問題。
mod_jk方式的優點是,Apache 會自動檢測到停止掉的tomcat,然后不再發請求過去。
缺點就是,當停止掉的tomcat服務器再次啟動的時候,Apache檢測不到,仍然不會轉發請求過去。
R-proxy和mod_jk的共同優點是.可以只將Apache置于公網,節省公網IP地址資源。
可以通過設置來實現Apache專門負責處理靜態網頁,讓Tomcat專門負責處理jsp和servlet等動態請求。
共同缺點是:如果前置Apache代理服務器停止運行,所有集群服務將無法對外提供。
R-proxy和mod_jk對靜態頁面請求的處理,都可以通設置來選取一個盡可能優化的效果。
這三種方式對實現最佳負載均衡都有一定不足,mod_jk相對好些,可以通過設置lbfactor參數來分配請求任務,但又因為mod_jk2方式不被推薦,mod_jk2已經不再被更新了。郁悶中……