首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

GlassFish 2 叢集架構完整指南:高可用性與水平擴展實作

     編輯:Java 相關知識

前言

GlassFish V2 (Sun Java System Application Server 9.1) 提供企業級叢集功能,支援高可用性 (High Availability, HA) 與水平擴展。本文系統性介紹其核心架構、記憶體複寫機制、故障轉移流程、安裝與配置步驟,適合架構師與資深工程師參考。

核心概念

術語定義
Server Instance單一 Java EE 伺服器進程,執行部署的應用程式
Node Agent運行於每台實體主機的輕量代理進程,管理該機器上 Instance 的生命週期
Cluster邏輯群組,包含多個設定相同的 Server Instance,視為單一實體管理
DAS (Domain Administration Server)管理整個行政域的中央控制進程,提供 Admin Console、CLI、JMX 介面
GMS (Group Management Service)基於 JXTA 的群組通訊服務,處理叢集成員變更、故障偵測、記憶體複寫協調

域管理架構

域管理架構圖

  • 一個 Domain 對應一個 DAS
  • DAS 管理多個 Node Agent,每個 Node Agent 管理該主機上的多個 Instance
  • Instance 組成 Cluster,Cluster 部署相同應用
  • 管理客戶端:Admin Console (Web)、asadmin (CLI)、NetBeans IDE、JConsole (JMX)

叢集運作架構:記憶體複寫與故障轉移

環狀拓撲

Instance 依名稱字母序形成環,每個 Instance 將 Session 狀態複寫給下一個 Instance (Replication Partner)。

叢集環狀拓撲

兩種故障轉移情境

  1. 本地備份可用:Load Balancer 將請求轉給已持有 Session 備份的 Instance,直接接管
  2. 本地無備份:新 Instance 廣播 SASE (Self-Addressed Stamped Envelope) 請求,持有備份的 Instance 回應並移交擁有權

故障轉移情境一

故障轉移情境二

動態叢集重組

Instance 故障或下線時,GMS 偵測到成員變更,剩餘 Instance 自動重新形成環,複寫夥伴關係即時調整。

偵測故障 Instance

叢集動態重組

記憶體複寫 vs HADB

特性記憶體複寫 (GlassFish V2 內建)HADB (高可用資料庫)
可用性99.99% (四個 9)99.999% (五個 9)
安裝複雜度低,無外部資料庫高,需獨立 HADB 叢集
資源消耗佔用 Instance Heap 記憶體獨立資料庫資源
適用場景中小型部署、開發測試核心金融、電信級生產環境

安裝與叢集配置步驟

1. 安裝 GlassFish

java -jar glassfish-installer-v2-b58g.jar

2. 建立叢集域 (使用 Ant 腳本)

cd glassfish
lib/ant/bin/ant -f setup-cluster.xml

產生 domains/domain1,已啟用叢集支援、GMS、預設 persistence-type=replicated。

3. 啟動 DAS 並透過 Admin Console 管理

bin/asadmin start-domain domain1

瀏覽器開啟 https://localhost:4848,預設帳號 admin/adminadmin。

4. 建立叢集與 Instance (CLI 範例)

asadmin create-cluster --host das-host --port 4848 mycluster
asadmin create-instance --cluster mycluster --nodeagent nodeagent1 instance1
asadmin create-instance --cluster mycluster --nodeagent nodeagent2 instance2
asadmin start-cluster mycluster

5. 部署支援叢集的應用

  • web.xml 加入 <distributable/>
  • 所有 Session 屬性物件必須實作 Serializable
  • Admin Console 部署時勾選 Availability Enabled

JVM 參數調校建議

<jvm-options>-Xmx1024m</jvm-options>
<jvm-options>-Xms1024m</jvm-options>

企業級部署建議 Heap 設 1GB 以上,預留記憶體複寫空間。

HTTP Load Balancer 外掛

支援 Sun Web Server、Apache HTTPD、Microsoft IIS。負載平衡器維護可用 Instance 清單,自動進行故障轉移。詳細設定請參閱 Sun Java System Application Server 9.1 High Availability Administration Guide 第 5 章。

總結

  • GlassFish V2 提供開箱即用的叢集 HA 方案,架構清晰 (DAS + Node Agent + Instance + GMS)
  • 記憶體複寫採環狀拓撲 + JXTA 通訊,故障轉移透明、自動重組
  • 適合中大型 Java EE 系統,若需五個 9 可用性可整合 HADB
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved