Application Server 經由以下子元件和功能提供高可用性:
負載平衡外掛程式接受 HTTP / HTTPS 請求,然後將這些請求轉寄至叢集中的 Application Server 實例。如果實例出現故障,變得不可用 (因為網路故障) 或無回應,負載平衡器即會將請求重新導向至現有的可用機器。負載平衡器還可以識別出現故障的實例是否回復,並相應地重新分配負載。Application Server 為 Sun Java System Web Server、Apache Web Server 和 Microsoft Internet Information Server 提供了負載平衡器外掛程式。
透過在多台實體機器間分配工作負荷量,負載平衡器會提昇整體系統流量。負載平衡器還透過 HTTP 請求的容錯移轉提供更高的可用性。若要使 HTTP 階段作業資訊具有持續性,必須配置HTTP 階段作業持續性。
對於簡單且無狀態的應用程式,負載平衡的叢集可能已足夠。但是,對於具有階段作業狀態的任務關鍵性應用程式,請將負載平衡叢集與 HADB 配合使用。
參與負載平衡的伺服器實例和叢集具有同質環境。這通常表示伺服器實例參照相同的伺服器配置,可以存取相同的實體資源,並部署相同的應用程式。同質環境確保故障前後,負載平衡器均始終在叢集使用中的實例間平均分配負載。
如需有關配置負載平衡和容錯移轉的資訊,請參閱第 5 章, 配置 HTTP 負載平衡
儲存階段作業狀態資料後,即可在叢集的伺服器實例容錯移轉後回復階段作業狀態。回復階段作業狀態可繼續執行階段作業而不會遺失資訊。Application Server 為 HTTP 階段作業及有狀態的階段作業 Bean 資料提供了下列類型的高可用性儲存裝置:
叢集內其他伺服器上的記憶體中複製
高可用性資料庫
其他伺服器上的記憶體中複製可讓您輕鬆儲存階段作業狀態資料,而無需取得獨立的資料庫,例如 HADB。此類複製使用了其他伺器上的記憶體,為 HTTP 階段作業及有狀態的階段作業 Bean 資料提供高可用性的儲存裝置。叢集伺服器實例可複製環狀拓樸的階段作業狀態。每個備份實例會在記憶體中儲存複製的資料。在其他伺服器的記憶體中複製階段作業狀態資料,即可分配階段作業。
如需使用記憶體中複製功能,需要啟用群組管理服務 (GMS)。如需有關 GMS 的更多資訊,請參閱群組管理服務。
如果叢集中的各伺服器實例位於不同機器上,請確定符合下列必要條件:
為了確保 GMS 和記憶體中複寫均能正確運作,各機器必須位於相同的子網路。
為了確保記憶體中複製正確運作,必須儘可能使叢集中所有機器的系統時鐘同步。
Sun Java System Application Server 的 Application Server 獨立發行版本 隨附了 HADB 軟體。如需有關 Sun Java System Application Server 的可用發行軟體資訊,請參閱「Sun Java System Application Server 9.1 Installation Guide」中的「Distribution Types and Their Components」。只有 企業 設定檔才提供 HADB 功能。如需有關設定檔的更多資訊,請參閱 「Sun Java System Application Server 9.1 管理指南」中的「用法設定檔」。
Application Server 提供高可用性資料庫 (HADB),用於為 HTTP 階段作業和有狀態的階段作業 Bean 資料提供高可用性儲存機制。HADB 旨在使用負載平衡、容錯移轉和狀態回復功能,支援高達 99.999% 的服務和資料可用性。通常必須獨立於應用程式伺服器來配置和管理 HADB。
Application Server 不負責管理狀態的好處極多。Application Server 實例的所有時間都在充當可延伸的高效能應用程式容器,將狀態複製工作委託給外部高可用性狀態服務。由於採用此鬆耦合架構,因此可以非常輕鬆地將 Application Server 實例增加至叢集或從叢集中刪除。HADB 狀態複製服務可以獨立延伸,以取得最佳可用性和效能。如果 Application Server 實例還執行複製,Java EE 應用程式的效能可能會降低,並且資源回收暫停時間也可能會變長。
如需有關規劃和設定 Application Server 安裝,以透過 HADB 實現高可用性 (包括決定硬體配置、調整大小和拓樸) 的資訊,請參閱「Sun Java System Application Server 9.1 部署規劃指南」中的「Planning for Availability」和「Sun Java System Application Server 9.1 部署規劃指南」中的第 3 章「選取拓樸」。
叢集是 Application Server 實例集合,以一個邏輯實體形式一起運作。叢集為一個或多個 Java EE 應用程式提供了執行階段環境。高可用性叢集將狀態複製服務與叢集和負載平衡器整合。
使用叢集可提供以下優勢:
高可用性 (透過允許為叢集中的伺服器實例提供容錯移轉保護來實現)。如果一個伺服器實例當機,其他伺服器實例將接管該伺服器實例正在服務的請求。
可延伸性 (透過允許向叢集中增加伺服器實例,從而增加系統的容量來實現)。負載平衡器外掛程式會將請求分散到叢集中的可用伺服器實例。當管理員向叢集中新增更多伺服器實例時,無需中斷服務。
叢集中的所有實例:
參照相同的配置。
具有相同的已部署應用程式集 (例如,Java EE 應用程式 EAR 檔案、Web 模組 WAR 檔案或 EJB JAR 檔案)。
具有相同的資源集,從而產生相同的 JNDI 名稱空間。
網域中的每一個叢集都具有唯一的名稱;此外,該名稱與所有節點代理程式名稱、伺服器實例名稱、叢集名稱和配置名稱都不重複。此名稱不能為 domain。您在叢集上執行的作業與在非叢集伺服器實例上執行之作業相同 (例如,部署應用程式和建立資源)。
叢集的設定取自已命名的配置 (可能能夠與其他叢集共用)。不與其他伺服器實例或叢集共用配置的叢集稱之為具有獨立配置。依預設,此配置的名稱為 cluster_name -config,其中,cluster_name 為叢集的名稱。
與其他叢集或實例共用配置的叢集稱之為具有共用配置。
叢集、伺服器實例、負載平衡器和階段作業的相互關係如下:
伺服器實例不一定是叢集的一部分。但是,不屬於叢集的實例無法通過將階段作業狀態從一個實例傳送到其他實例來利用高可用性。
可以將叢集中的伺服器實例託管在一台或多台機器上。您可以將不同機器上的伺服器實例集合為一個叢集。
特定負載平衡器可以向多個叢集中的伺服器實例轉寄請求。您可以使用負載平衡器的此功能來執行線上升級,而不使服務受到損失。如需更多資訊,請參閱「Configuring Clusters」一章中的「Using Multiple Clusters for Online Upgrades Without Loss of Service」。
單一叢集可以從多個負載平衡器接收請求。如果叢集由多個負載平衡器提供服務,則必須以完全相同的方式在每個負載平衡器上配置叢集。
每個階段作業都與特定的叢集連結在一起。因此,雖然您可以在多個叢集上部署一個應用程式,但階段作業容錯移轉仍僅在一個叢集內發生。
因此,對於叢集中的伺服器實例,叢集可充當階段作業容錯移轉的安全邊界。在 Application Server 中,您可以使用負載平衡器並升級元件,而不會使服務受到任何損失。