JBoss企業(yè)級應(yīng)用服務(wù)平臺群集指南(一)

版權(quán)聲明:原創(chuàng)作品,如需轉(zhuǎn)載,請與作者聯(lián)系。否則將追究法律責(zé)任。
1.集群
——用JBoss群集實現(xiàn)高可用性企業(yè)服務(wù)
1.1 前言
群集系統(tǒng)(Clustering)允許我們在多臺平行的服務(wù)器(群集節(jié)點(diǎn))上運(yùn)行一個應(yīng)用程序。負(fù)載分布在不同的服務(wù)器上,即使其中任何一臺崩潰,應(yīng)用程序還是可以在其他群集節(jié)點(diǎn)(cluster nodes)上運(yùn)行。群集對于可擴(kuò)展性企業(yè)級應(yīng)用程序是很關(guān)鍵的,因為你簡單地把更多節(jié)點(diǎn)加入到群集系統(tǒng)里就可以提高性能。
JBoss 應(yīng)用服務(wù)器(AS)缺省支持群集系統(tǒng)。最簡單的啟動 JBoss 服務(wù)器群集的方法就是在同一本地網(wǎng)絡(luò)里啟動多個 JBoss 實例,每個實例都可以用 run -c all 命令來運(yùn)行。這些按照 all 配置文件啟動的實例,可以檢測到對方而自動組成一個群集系統(tǒng)。
在本章的第一部分,我們將討論 JBoss 群集服務(wù)的基本概念。在閱讀本章后面的內(nèi)容之前,先理解這些概念是很重要的。在這部分內(nèi)容之后,我們將介紹怎樣為特定類型的應(yīng)用程序配置群集系統(tǒng)。
1.1.1 群集系統(tǒng)的定義
群集系統(tǒng)是節(jié)點(diǎn)(node)的集合。在 JBoss 群集系統(tǒng)里,節(jié)點(diǎn)是一個 JBoss 服務(wù)器實例。因此,為了建立一個群集,JBoss 實例必須組合在一起(通稱"partition")。在同一個網(wǎng)絡(luò)里,我們可能有不同的群集。為了區(qū)分,每個群集都必須有一個唯一的名字。

圖 1.1. 集群和服務(wù)節(jié)點(diǎn)

每個 JBoss 服務(wù)器實例(節(jié)點(diǎn))在 deploy/cluster-service.xml 文件的 ClusterPartition MBean 里指定了它所加入的群集(也就是 partition)。所有具有相同 ClusterPartition MBean 配置的節(jié)點(diǎn)加入到同一個群集系統(tǒng)里。因此,如果你想把同一個網(wǎng)絡(luò)里的 JBoss 節(jié)點(diǎn)分開到兩個群集里,你可以使用兩個不同的 ClusterPartition MBean 配置,每個節(jié)點(diǎn)可以根據(jù)它所需要加入的群集來選擇其中一個配置。如果節(jié)點(diǎn)啟動的時候,它指定的群集不存在,這個群集將被創(chuàng)建。相同地,當(dāng)群集系統(tǒng)的所有節(jié)點(diǎn)都被刪除后,這個群集也將被刪除。

在這里,我們忽略了這個群集的詳細(xì)的 JGroups 協(xié)議配置(protocal configuration)。JGroups 處理節(jié)點(diǎn)之間底層的點(diǎn)到點(diǎn)通信,我們將在 Section 1, “JGroups配置”里討論它的配置。下面的列表展示了 ClusterPartition MBean 里可用的配置屬性。
u PartitionName 是用來指定節(jié)點(diǎn)名稱的可選屬性。它的缺省值是 DefaultPartition。
u NodeAddress 是一個可選屬性,指定這個節(jié)點(diǎn)所綁定的IP地址。
u DeadlockDetection 是用來通知 Jgroups 為每個請求運(yùn)行消息死鎖檢測算法(message deadlock detection algorithms)的可選布爾值屬性。它的缺省值是 false。
u StateTransferTimeout 是用來指定跨群集的狀態(tài)復(fù)制(state replication)的超時時間(以毫秒為單位)的可選屬性。它的缺省值是 30000。
u PartitionConfig 是一個用來為這個群集(見Section 1, “JGroups 配置”) 指定 JGroup 配置選項的元素(element)。.
為了組成一個群集系統(tǒng),它們必須有剛好一樣的 PartitionName 和 ParitionConfig 元素。只改變其中一些而不是全部節(jié)點(diǎn)會導(dǎo)致群集的分離。通常來說,修改 ParitionConfig(即:地址/端口)而不是 PartitionName 來運(yùn)行多個群集系統(tǒng)會比較容易,因為后者需要在其他配置文件里的多個地方修改。然而,在 4.0.2+ 以后的版本里,修改 PartitionName 反而更方便了。因為使用了 ${jboss.partition.name} 屬性,它允許通過單個的 jboss.partition.name 系統(tǒng)屬性來修改群集系統(tǒng)的名字。

posted on 2011-08-07 13:48 w@ns0ng 閱讀(224) 評論(0) 編輯 收藏 所屬分類: jboss