詳述集群負(fù)載均衡
集群中使用負(fù)載均衡技術(shù)已經(jīng)是大家所熟知的事情了,那么,這兩者的關(guān)系式如何發(fā)展而來的呢?這就讓我們一起來看看吧。首先我們來說下我們的系統(tǒng)設(shè)計需求,以及集群的概念,然后是對負(fù)載均衡的解釋。
Tomcat5自帶一個基于規(guī)則的負(fù)載均衡應(yīng)用。根據(jù)兩種負(fù)載均衡策略(擴(kuò)展自規(guī)則API,分別是round-robin和random算法)來重定向進(jìn)入的請求。講述運(yùn)行在集群環(huán)境中的樣例Web應(yīng)用的性能評測。通過負(fù)載測試工具JMeter模擬多個Web用戶的方式來研究負(fù)載均衡機(jī)制。
◆大型系統(tǒng)的設(shè)計
企業(yè)級的Web門戶應(yīng)用必須提供可升級能力(scalability)和高可用性(HA),在同一個網(wǎng)站下為數(shù)以百萬計的用戶提供服務(wù)。可升級是系統(tǒng)可以通過增加服務(wù)器來支持更多的數(shù)量的用戶。高可靠性是系統(tǒng)提供基本的冗余能力。在集群中的某個成員失效時,其他成員能透明的接替處理對Web服務(wù)的請求。在集群的環(huán)境中部署一個Web門戶應(yīng)用能提供門戶網(wǎng)站需要的可升級和高可用性的能力。基本上,集群的主要目的是防止某些站點(diǎn)出現(xiàn)當(dāng)機(jī)的問題,應(yīng)付系統(tǒng)的單點(diǎn)失效。
大型系統(tǒng)的設(shè)計目的是在企業(yè)應(yīng)用環(huán)境中提供穩(wěn)定的服務(wù),確保最少的當(dāng)機(jī)時間和最大的可升級能力。運(yùn)行的不是單一的服務(wù)器,有多個協(xié)作服務(wù)器也同時在運(yùn)行。為了達(dá)到可升級的能力,集群能任意增加機(jī)器數(shù)量,而為了最少的當(dāng)機(jī)時間,集群中每一個組件都是可冗余的。大型系統(tǒng)的主要因素就是集群,包含負(fù)載均衡、容錯、session狀態(tài)持久化等特性。在集群中,通常負(fù)載均衡器(硬件或軟件)布置在應(yīng)用服務(wù)器的前面。這些負(fù)載均衡器通過使用重定向Web交易到相應(yīng)的集群成員來在集群的節(jié)點(diǎn)內(nèi)分發(fā)負(fù)載,并且在同時檢查集群內(nèi)是否有服務(wù)器失效。
◆集群
集群的定義好比一組應(yīng)用服務(wù)器透明的運(yùn)行J2EE應(yīng)用,就象在一臺機(jī)器上執(zhí)行一樣。有兩種方式的集群:垂直縮放和水平縮放。垂直縮放可以通過提高單臺機(jī)器上的運(yùn)行服務(wù)的數(shù)量來達(dá)到,水平縮放就要提高集群內(nèi)機(jī)器的數(shù)量。水平縮放比垂直縮放更可靠。使用垂直縮放,機(jī)器的處理能力、CPU的使用情況和JVM堆內(nèi)存配置都是決定應(yīng)該在這臺機(jī)器上運(yùn)行多少的服務(wù)器實例的主要因素(眾所周知的server-to-cpu比率)。
J2EE集群內(nèi)的服務(wù)器一般使用三種配置選項的一種:
獨(dú)立(independent),每個服務(wù)都有屬于自己的一份應(yīng)用程序文件的拷貝;
共享文件系統(tǒng)(sharedfilesystem),集群內(nèi)所有的服務(wù)器擁有一個共同的存儲設(shè)備,所有服務(wù)器的應(yīng)用文件都是從該設(shè)備取得;
第三方的配置方法(managed),有一臺管理服務(wù)器控制對應(yīng)用內(nèi)容的訪問,通過"pushing“相應(yīng)的應(yīng)用內(nèi)容到管理服務(wù)器作為響應(yīng)。管理服務(wù)器能保證集群中所有的成員的應(yīng)用有效。當(dāng)部署應(yīng)用時,所有的服務(wù)器都會更新,而反部署時,所有的服務(wù)器都會將應(yīng)用刪除。
集群可以在J2EE應(yīng)用的各個層次使用,包括數(shù)據(jù)層。一些數(shù)據(jù)庫提供商提供集群數(shù)據(jù)庫,支持多個數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)復(fù)制、客戶透明訪問(servlet容器或者應(yīng)用服務(wù)器無須知道從那個數(shù)據(jù)庫服務(wù)器中取的數(shù)據(jù))。JDBC集群的例子是Oracle9i'sRealApplicationClusters(RAC)和集群JDBC(C-JDBC)。RAC支持?jǐn)?shù)據(jù)庫連接的失敗重啟、透明變更JDBC連接、請求到一臺恢復(fù)后的數(shù)據(jù)庫節(jié)點(diǎn)。C-JDBC是一個開放源的數(shù)據(jù)庫集群,允許Web應(yīng)用通過JDBC透明的訪問數(shù)據(jù)庫集群。實現(xiàn)數(shù)據(jù)庫節(jié)點(diǎn)內(nèi)的負(fù)載均衡和失敗重啟。





















