解讀Tomcat和負載均衡的意思
關于Tomact我們都知道它是一種嵌入的腳本軟件,基本上我們在Linux下來來完成負載均衡。那么針對負載均衡和Tomact我們來進行一個具體的說明吧。之后再對他們的設定過程給出具體的內容。
◆Tomcat的集群
在Tomcat先前的版本中(4.1)可以通過第三方的jar文件來實現集群。在一個集群內安裝和配置多個Tomcat實例不是一件容易的事情。將集群的能力增加到開放源的servlet容器(Tomcat)和應用服務(JBoss)中,JavaGroups是一個不錯的選擇。在最新版本的Tomcat,集群已經成為主要安裝包的一部分。將第三方的集群實現對Tomcat服務器的影響減少到最低。
在典型的集群環境中,為了讓成員之間相互協作和復制狀態,它們之間需要互相通信。
組的通信可以使用point-to-pointRMI(TCP-IP)或者IP多播兩種方式。
大部分的J2EE應用服務器(如JBoss、Oracle、WebLogic和Borland)都是使用IP多播讓集群成員進行通信,在集群內發送state/update/heartbeat數據給其他成員。
Tomcat集群成員的通信是如下進行的:所有的集群成員用多播ping消息來對話。每一個Tomcat實例將發送一個消息,廣播其IP地址和TCP監聽端口(為sessionreplication)。如果在給定的時間幀內,某個實例沒有接收到這些信息,那么該實例就會被認為是當機。
另一個比較流行的概念是farming,提供集群范圍內的Web應用的熱部署。在服務器farm內,一個Web應用通過拷貝war文件到集群內的一個節點上進行部署,farming將會把這個Web應用部署到整個集群中。類似的,從一個集群節點上刪除war文件,farming將會在集群內所有的節點上反部署這個Web應用。Tomcat的集群文檔中講到在接下來的版本中將會支持farming能力。
◆負載均衡
一種機制,能將服務器的負載被分發到集群的不同節點上。基于負載均衡策略,應用不再在單一的服務器上執行,而是在動態選擇的服務器上。當客戶請求服務,一個或多個協作服務器處理這個請求。負載均衡為集群提供單一的入口,就如直接和獨立的Web或者應用服務器交互一樣,這對客戶來說是透明的。
兩種比較流行的負載均衡方法分別是DNS輪循和硬件負載均衡。DNS輪循提供單個邏輯名稱,返回集群內某臺機器的ip地址。這種方式是廉價、簡單并且容易配置,但它并沒有提供服務器之間的聯系和高可靠性的能力。相對來說,硬件負載均衡通過虛擬ip地址來解決DNS輪循存在的問題。負載均衡器有一個單獨的ip地址,映射到集群內的每一個節點上。負載均衡器接收到請求,然后重寫頭部來指向集群內的其他機器。如果我們從集群內移出一些機器,那么這個改變馬上生效。硬件負載均衡的好處是服務器的聯系性和高效。缺點是昂貴并且設置復雜。(作者在這里沒有提到這種硬件的負載均衡方式可以用軟件實現,這種方式稱為VitrualServer)。
對于負載的分發有多種算法,下面是一些較為常用的算法:
round-robin輪循
random隨機
weight-based權重
minimumload最小負載
lastaccesstime最后訪問時間
programmaticparameter-based負載均衡器根據方法中的參數來選擇服務器
負載均衡算法涉及統計上的差異,速度和簡單性。舉個例子,weight-based算法比其他的算法需要更長的計算時間。想得到對負載均衡的更詳細的解釋,參考ONJava的文章“LoadBalancingWebApplications"