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