Sun Java System Application Server 9.1 部署規劃指南

Application Server 元件

本節說明 Sun Java System Application Server 中的元件:

下圖描述這些 Application Server 元件如何使用提供高可用性的簡易拓樸範例進行互動。在此拓樸範例中,一位管理員管理兩部組織為叢集的機器。HADB 與 Application Server 程序位於相同的機器上。Domain Administration Server 可能在另一台機器上由本身代管,或在任何一部代管應用程式伺服器實例的機器上。圖中的線條表示通訊或控制。

瀏覽器型的管理主控台等管理工具會與 Domain Administration Server (DAS) 通訊,再由其與節點代理程式和伺服器實例通訊。

伺服器實例

伺服器實例是在單一 Java 虛擬機器 (JVM) 程序中執行的 Application Server。Application Server 經 Java 2 Standard Edition (J2SE) 5.0 與 1.4 認證。建議的 J2SE 發行軟體隨附於 Application Server 安裝中。

由於 Application Server 與伴隨的 JVM 皆設計為可擴充為多顆處理器,因此在一部機器上建立一個伺服器實例通常已足夠。但是,在一部機器上建立多個實例有助於應用程式隔離與輪替升級。在某些情況下,具有多項實例的大型伺服器可用在管理網域以外的地方。管理工具可簡化在多部機器之間建立、刪除及管理伺服器實例的作業。

管理網域

管理網域 (或簡稱網域) 是一組共同管理的伺服器實例。伺服器實例屬於單一管理網域。網域中的實例可於不同實體主機上執行。

您可以從一個 Application Server 安裝建立多個網域。不同的組織和管理員可將所有伺服器實例分組為個別的網域,以共用單一的 Application Server 安裝。每個網域都有自己的獨立於其他網域的配置、記錄檔和應用程式部署區域。變更一個網域的配置並不會影響其他網域的配置。同理,在一個網域上部署應用程式,並不會將其部署至其他網域或使其顯示於其他網域中。管理員無論何時都只能向一個網域認證,因而僅能執行該網域的管理作業。

Domain Administration Server (DAS)

網域具有一個 Domain Administration Server (DAS),此為特別指定用於代管管理應用程式的應用程式伺服器實例。DAS 將認證管理員、接受來自管理工具的請求,並與網域中的伺服器實例進行通訊以執行請求。

管理工具包含 asadmin 指令行工具與瀏覽器型的管理主控台。Application Server 也提供 JMX 型的 API 以進行伺服器管理。管理員一次可檢視並管理一個網域,從而強制執行安全隔離。

DAS 有時也稱為管理伺服器預設伺服器。稱為預設伺服器是因為它是某些管理作業的預設目標。

由於 DAS 是應用程式伺服器實例,因此也可因測試目的而代管 J2EE 應用程式。但是,請勿用於代管生產應用程式。例如,若尚未建立將代管生產應用程式的叢集與實例,最好將應用程式部署至 DAS。

DAS 會保留一個儲存庫,內含網域與所有已部署的應用程式配置。若 DAS 停用或關機,不會影響使用中的伺服器實例之效能或可用性,但會無法進行管理變更。在某些情況下,基於安全的考量,刻意停止 DAS 程序相當有助益;例如可用於固定生產環境的配置。

管理指令的功能是備份與復原網域配置與應用程式。透過標準備份與復原程序,您可以快速復原有效配置。若 DAS 主機故障,您必須建立新的 DAS 安裝以復原先前的網域配置。如需相關指示,請參閱「Sun Java System Application Server 9.1 管理指南」中的「重新建立網域管理伺服器」

Sun Cluster Data Services 透過容錯移轉 DAS 主機 IP 位址及使用全域檔案系統,提供高可用性的 DAS。 此解決方案在面對許多失敗類型時,幾乎可不間斷地使用 DAS 與儲存庫。Sun Cluster Data Services 隨附於 Sun Java Enterprise System 中,或隨 Sun Cluster 另外購買。如需更多資訊,請參閱 Sun Cluster Data Services 的文件。

叢集

叢集是共用相同的應用程式、資源與配置資訊之已命名的伺服器實例集合。可以將不同機器上的伺服器實例分組為一個邏輯叢集,然後將其做為一個單位來管理。可以使用 DAS 輕鬆控制多機器叢集的生命週期。

叢集可啟用水平可延伸性、負載平衡和容錯移轉保護。根據定義,叢集中的所有實例均具有相同的資源和應用程式配置。叢集中的伺服器實例或機器故障時,負載平衡器會偵測到該故障,並將通訊從出現故障的實例重新導向至叢集中的其他實例,然後回復使用者階段作業狀態。因為相同應用程式和資源均位於叢集中的所有實例上,因此實例可以容錯移轉至叢集中的任何其他實例。

叢集、網域和實例的相互關係如下:

節點代理程式

節點代理程式是在每部代管伺服器實例的機器上執行的簡易程序,包括代管 DAS 的機器。節點代理程式:

每個實體主機必須為其所屬的每個網域設定至少一個節點代理程式。若實體主機有來自多個網域的實例,則該實例需要在每個網域各有一個節點代理程式。雖然可以在主機上為每個網域設定多個節點代理程式,但這樣做並沒有好處。

因為伺服器實例由節點代理程式啟動與停止,所以節點代理程式必須一直執行。因此,它會隨著作業系統啟動時啟動。在 Solaris 與其他 Unix 平台上,節點代理程式可由 inetd 程序啟動。在 Windows 上,節點代理程式可設定為 Windows 服務。

如需有關節點代理程式的更多資訊,請參閱「Sun Java System Application Server 9.1 高可用性管理指南」中的第 8 章「配置節點代理程式」

已命名的配置

已命名的 配置是封裝 Application Server 特性設定的抽象概念。叢集與獨立伺服器實例會參照已命名的配置取得其特性設定。透過已命名的配置,J2EE 容器的配置與其所在的實體機器無關,僅與 IP 位址、連接埠號碼與堆疊記憶體容量等特定項目相關。使用已命名的配置可使 Application Server 的管理更強大且更具彈性。

若要套用配置變更,只要變更已命名配置的特性設定,所有參照此配置的叢集與獨立實例便會獲得變更。當所有參照皆移除後,才能刪除已命名的配置。一個網域可包含多個已命名的配置。

Application Server 隨附預設配置,稱為 default-config。預設配置已針對 Application Server Platform Edition 中的開發人員生產力,以及 Application Server Enterprise Edition 中的安全性與高可用性進行最佳化。

您可以根據可因自己的用途進行自訂之預設配置,建立自己命名的配置。使用管理主控台與 asadmin 指令行公用程式,建立及管理已命名的配置。

HTTP 負載平衡器外掛程式

負載平衡器會將工作負荷量分散至多部實體機器,因而增加系統的整體流量。Application Server Enterprise Edition 包含 Sun Java System Web Server、Apache Web Server 與 Microsoft Internet Information Server 的負載平衡器外掛程式。

負載平衡器外掛程式會接受 HTTP 與 HTTPS 請求,然後將這些請求轉寄至叢集中的其中一個應用程式伺服器實例。若實例出現故障而無法使用 (因為網路故障) 或無回應,請求會重新導向至現有的可用機器。負載平衡器還可以識別出現故障的實例是否回復,並相應地重新分配負載。

對於簡單且無狀態的應用程式,負載平衡的叢集即已足夠。但是,對於具有階段作業狀態的任務關鍵性應用程式,請將負載平衡叢集與 HADB 配合使用。

若要設定具有負載平衡的系統,除了 Application Server 之外,還必須安裝 Web 伺服器及負載平衡器外掛程式。然後您必須:

參與負載平衡的伺服器實例和叢集具有同質環境。這通常表示伺服器實例參照相同的伺服器配置,可以存取相同的實體資源,並部署相同的應用程式。同質環境確保故障前後,負載平衡器均始終在叢集使用中的實例間平均分配負載。

使用 asadmin 指令行工具建立負載平衡器配置、將叢集與伺服器實例的參照增加至配置、啟用負載平衡器所參照的叢集、啟用應用程式進行負載平衡、選擇性建立運作狀態檢查程式、產生負載平衡器配置檔案,最後將負載平衡器配置檔案複製到 Web 伺服器的 config 目錄。管理員可建立程序檔自動化此整個程序。

如需更詳細的資訊與完整的配置指示,請參閱「Sun Java System Application Server 9.1 高可用性管理指南」中的第 5 章「配置 HTTP 負載平衡」

階段作業持續性

J2EE 應用程式通常具有大量階段作業狀態資料。Web 購物車即為階段作業狀態的經典範例。而且,應用程式可以快取頻繁需要的階段作業物件資料。實際上,幾乎所有需要進行大量使用者互動活動的應用程式均需要維護階段作業狀態。HTTP 階段作業與有狀態的階段作業 Bean (SFSB) 皆具有階段作業狀態資料。

雖然階段作業狀態不如儲存在資料庫中的作業事件狀態重要,但是在伺服器故障期間能保留階段作業狀態,對一般使用者而言很重要。Application Server 提供在儲存庫中儲存 (或保留) 此階段作業狀態的功能。若代管使用者階段作業的應用程式伺服器實例發生故障,可回復階段作業狀態。階段作業可繼續而不會失去資訊。

Application Server 支援下列階段作業持續性存放區類型:

若是記憶體持續性,狀態一律會保留在記憶體中,在失敗後不會存留。若是 HA 持續性,Application Server 會使用 HADB 作為 HTTP 與 SFSB 階段作業的持續性存放區。若是檔案持續性,Application Server 會序列化階段作業物件,並將其儲存在階段作業管理員特性所指定的檔案系統位置。若是 SFSB 且未指定 HA,Application Server 會將狀態資訊儲存在此位置的階段作業存放區子目錄中。

檢查 SFSB 的狀態是否有變更且需要儲存的動作,稱為檢查點檢查。啟用時,檢查點檢查一般會在完成 SFSB 的所有作業事件之後發生,即使作業事件回復亦然。如需有關開發有狀態的階段作業 Bean 之更多資訊,請參閱「Sun Java System Application Server 9.1 Developer’s Guide」中的「Using Session Beans」。如需有關啟用 SFSB 容錯移轉的更多資訊,請參閱「Sun Java System Application Server 9.1 高可用性管理指南」中的「有狀態階段作業 Bean 容錯移轉」

階段作業持續性配置設定除了影響 Application Server 處理的請求數目外,還會影響 HADB 每分鐘接收的請求數目,以及每個請求中的階段作業資訊。

如需有關配置階段作業持續性的更多資訊,請參閱「Sun Java System Application Server 9.1 高可用性管理指南」中的第 9 章「配置高可用性階段作業持續性和容錯移轉」

叢集中的 IIOP 負載平衡

透過 IIOP 負載平衡,可將 IIOP 用戶端請求分散至不同的伺服器實例或名稱伺服器中。其目的為在整個叢集上平均分散負載,從而提供可延伸性。IIOP 負載平衡在 Sun Java System Application 中結合 EJB 叢集與可用性功能,不僅提供負載平衡,還提供 EJB 容錯移轉。

當用戶端執行 JNDI 物件查找時,命名服務會建立與特定伺服器實例相關聯的 InitialContext (IC) 物件。從那時起,使用該 IC 物件進行的所有查找請求均會傳送至相同的伺服器實例。使用該 InitialContext 查找的所有 EJBHome 物件均會在相同的目標伺服器上託管。之後取得的所有 Bean 參照也會建立在相同的目標主機上。由於建立 InitialContext 物件時,所有用戶端會隨機建立即時目標伺服器的清單,因此,此作業可有效地提供負載平衡。如果目標伺服器實例當機,則查找或 EJB 方法呼叫將容錯移轉至其他伺服器實例。

例如,如此圖所述,ic1、ic2 與 ic3 是使用 Client2 的程式碼所建立的三個不同的 InitialContext 實例。這些實例會發行至叢集中的三個伺服器實例。接著,此用戶端所建立的 Enterprise JavaBeans 會分配至此三個實例。Client1 僅建立一個 InitialContext 物件,且來自此用戶端的 Bean 參照僅會在伺服器實例 1 上。若伺服器實例 2 當機,ic2 上的查找請求會容錯移轉至其他伺服器實例 (不一定是伺服器實例 3)。任何對伺服器實例 2 上先前代管之 Bean 的 Bean 方法呼叫,也會在安全無虞的前提下自動重新導向至其他實例 。當查找容錯移轉自動化時,Enterprise JavaBeans 模組僅會在安全無虞的前提下重試方法呼叫。

IIOP 負載平衡與容錯移轉不需設定即可執行。在部署應用程式期間,無需特殊的步驟。對叢集增加新實例或從叢集中刪除實例,將不會更新該叢集的現有用戶端檢視。您必須在用戶端手動更新端點清單。

Message Queue 與 JMS 資源

Sun Java System Message Queue (MQ) 提供可靠且非同步的分散式應用程式訊息傳送。MQ 是實作 Java Message Service (JMS) 標準的企業訊息傳送系統。MQ 提供 J2EE 應用程式元件的訊息傳送,例如訊息驅動 Bean (MDB)。

Application Server 將 Sun Java System Message Queue 整合至 Application Server,以實作 Java Message Service (JMS) API。Application Server Enterprise Edition 包含 MQ 的企業版,該版具有容錯移轉、叢集與負載平衡等功能。

對於基本 JMS 管理作業,請使用 Application Server 管理主控台與 asadmin 指令行公用程式。

對於進階作業 (包含管理 Message Queue 叢集),請使用 install_dir/imq/bin 目錄中所提供的工具。如需有關管理 Message Queue 的詳細資訊,請參閱「Sun Java System Message Queue Administration Guide」。

如需有關部署 JMS 應用程式與 MQ 叢集以進行訊息容錯移轉的資訊,請參閱規劃 Message Queue 代理程式部署