——用JBoss群集實作高可用性企業服務
群集系統(Clustering)允許我們在多台平行的伺服器(群集節點)上運作一個應用程式。負載分布在不同的伺服器上,即使其中任何一台崩潰,應用程式還是可以在其他群集節點(cluster nodes)上運作。群集對于可擴充性企業級應用程式是很關鍵的,因為你簡單地把更多節點加入到群集系統裡就可以提高性能。
JBoss 應用伺服器(AS)預設支援群集系統。最簡單的啟動 JBoss 伺服器群集的方法就是在同一本地網絡裡啟動多個 JBoss 執行個體,每個執行個體都可以用 run -c all 指令來運作。這些按照 all 配置檔案啟動的執行個體,可以檢測到對方而自動組成一個群集系統。
在本章的第一部分,我們将讨論 JBoss 群集服務的基本概念。在閱讀本章後面的内容之前,先了解這些概念是很重要的。在這部分内容之後,我們将介紹怎樣為特定類型的應用程式配置群集系統。
群集系統是節點(node)的集合。在 JBoss 群集系統裡,節點是一個 JBoss 伺服器執行個體。是以,為了建立一個群集,JBoss 執行個體必須組合在一起(通稱"partition")。在同一個網絡裡,我們可能有不同的群集。為了區分,每個群集都必須有一個唯一的名字。
圖1.1“叢集服務節點”, 展示了網絡裡的 JBoss 伺服器執行個體被分到三個群集系統裡,有的群集系統隻有一個節點。在任何時候,你都可以在群集裡加入或删除節點。
<b> </b>圖 1.1. 叢集和服務節點
每個 JBoss 伺服器執行個體(節點)在 deploy/cluster-service.xml 檔案的 ClusterPartition MBean 裡指定了它所加入的群集(也就是 partition)。所有具有相同 ClusterPartition MBean 配置的節點加入到同一個群集系統裡。是以,如果你想把同一個網絡裡的 JBoss 節點分開到兩個群集裡,你可以使用兩個不同的 ClusterPartition MBean 配置,每個節點可以根據它所需要加入的群集來選擇其中一個配置。如果節點啟動的時候,它指定的群集不存在,這個群集将被建立。相同地,當群集系統的所有節點都被删除後,這個群集也将被删除。
下例展示了标準 JBoss AS 發行版本裡的 MBean 的定義。如果你在本地網絡裡用預設的群集設定來啟動 JBoss 伺服器,你将得到一個叫 DefaultPartition 的預設群集,它包括了所有作為節點的伺服器執行個體。
在這裡,我們忽略了這個群集的詳細的 JGroups 協定配置(protocal configuration)。JGroups 處理節點之間底層的點到點通信,我們将在 Section 1, “JGroups配置”裡讨論它的配置。下面的清單展示了 ClusterPartition MBean裡可用的配置屬性。
u <b>PartitionName </b><b>是用來指定節點名稱的可選屬性。它的預設值是 DefaultPartition。</b>
u <b>NodeAddress </b><b>是一個可選屬性,指定這個節點所綁定的IP位址。</b>
u <b>DeadlockDetection </b><b>是用來通知 Jgroups 為每個請求運作消息死鎖檢測算法(message deadlock detection algorithms)的可選布爾值屬性。它的預設值是 false。</b>
u <b>StateTransferTimeout </b><b>是用來指定跨群集的狀态複制(state replication)的逾時時間(以毫秒為機關)的可選屬性。它的預設值是 30000。</b>
u <b>PartitionConfig </b><b>是一個用來為這個群集</b>(見Section 1, “JGroups 配置”) <b>指定 JGroup 配置選項的元素(element)。.</b>
為了組成一個群集系統,它們必須有剛好一樣的 PartitionName 和 ParitionConfig 元素。隻改變其中一些而不是全部節點會導緻群集的分離。通常來說,修改 ParitionConfig(即:位址/端口)而不是 PartitionName 來運作多個群集系統會比較容易,因為後者需要在其他配置檔案裡的多個地方修改。然而,在 4.0.2+ 以後的版本裡,修改 PartitionName 反而更友善了。因為使用了 ${jboss.partition.name} 屬性,它允許通過單個的 jboss.partition.name 系統屬性來修改群集系統的名字。
你可以用浏覽器通路群集系統裡的任何 JBoss 執行個體的 JMX 控制台來檢視目前的群集資訊(如,[url]http://hostname:8080/jmx-console/[/url]),點選 jboss:service=DefaultPartition MBean(如果這個節點沒有加入 DefaultPartition,你可以改變 MBean 名來反映群集名)。CurrentView 字段會顯示目前群集的 IP 位址的清單。
本文轉自xudayu 51CTO部落格,原文連結:http://blog.51cto.com/xudayu/64728,如需轉載請自行聯系原作者