GlassFish由一個或多個domain組成,一個domain是一個管理域,每個domain和一個administration server(也稱作Domain Administration server或者DAS)關聯,并可包含0到多個standalone instance或者cluster。每個cluster有一個或多個同類型的instance,一個instance運行于一個單獨的JVM中,domain中的instance可運行在不同的物理機器上。
下面介紹一下GlassFish中的組件構成:
Server Instance
一個server instance運行在一個單獨的JVM中,instance可分為兩種:standalong和cluster。DAS就是一個standalong的instance,可以完全不依賴cluster而存在。對于cluster的instance,可以對應到weblogic中的managed server,我們也稱作traffic server。
Administrative Domain
Glassfish中可以創建多個domain,一個domain管理一組server instance,一個instance屬于一個單獨的domain,domain中的instance可運行在不同的物理機器中。每個domain都有一套自己的配置、日志文件和部署區域,改變其中一個domain的配置不會影響到其它的domain。
Domain Administration Server(DAS)
一個domain有一個DAS,DAS是一個特別的server instance,它可以:驗證管理員、接收來自于管理工具的請求、與domain中的instance進行通訊。DAS通常叫做admin server或者default server,把它稱作default server是因為它是一個管理操作的默認目標。DAS中有一個倉庫保存domain的配置和部署的應用,如果DAS宕機了,不會影響其它instance的運行,但是不能對管理的配置進行修改了,這時你需要創建一個新的DAS去restore之前的配置。
Cluster
一個cluster表示一組server instance,cluster內可以共享相同的應用、資源和配置信息。cluster可以包含不同物理機器上的instance,通過DAS可以很容易的對多機上的cluster的生命周期進行管理。Cluster能夠讓你很容易的處理水平擴展、負載均衡和宕機保護等問題。因為cluster中所有的instance都擁有相同的資源和應用配置,當一個instance或機器宕了,load balancer可以發現失敗,并將traffic從失敗的instance上重定向到cluster中的其它可用的instance,并回復session的狀態。
Cluster、domain和instance之間的關系如下:
- 一個domain可以有0到多個cluster。
- 一個cluster可以有一到多個server instance。
- 一個cluster屬于一個單獨的domain。
Node Agent
Node agent運行在每個server instance的機器中,包括運行DAS的機器。node agent的作用是:
- 根據DAS的指示去啟動和停止instance。
- 重啟失敗的instance。
- 提供失敗的server的log,以幫助遠程診斷。
- 同步每個server instance的本地配置倉庫和DAS的中央倉庫。
- 當創建了一個新的instance時,它會創建instance所需的目錄,并同步DAS的中央倉庫到instance的本地倉庫。
- 當刪除instance時執行適當的清理。
每個物理機器至少需要一個node agent,如果一臺機器中的instance屬于多個domain,則每個domain都需要一個node agent,這種方式不推薦。因為node agent要監控server instance,所以node agnet必須要一直運行。
理解了GlassFish中各個組件的作用,在企業級環境部署時,就可以比較容易的搭建相應的服務器架構,以使應用程序得到最優的運行方式。