Sun Java System Application Server 9.1 快速入門指南

第 5 章 設定高可用性容錯移轉

使用上一章中的配置時,如果伺服器實例當機,使用者便會失去階段作業狀態。本節包含兩個進階主題中的第二個主題,提供了安裝高可用性資料庫 (HADB)、建立高可用性叢集,以及測試 HTTP 階段作業持續性等步驟。

GlassFish v2 不提供 HADB。對於高可用性和容錯移轉,GlassFish 提供了記憶體中複製功能。

Application Server 同時支援 HTTP 階段作業持續性和有狀態階段作業 Bean 持續性。本章中的程序涵蓋使用記憶體中複製或 HADB 的高可用性。

這些步驟假設您已執行本快速入門前面各節中的步驟。這些步驟將以執行的順序列出。若要使用 HADB 功能,您需要執行具有企業設定檔的網域。


備註 –

要完成本節中的程序,可能還需要額外的硬體資源。


本主題包含以下各節:

高可用性叢集和 HADB

在 Sun Java System Application Server 中,高可用性叢集會將狀態複製服務與先前建立的叢集和負載平衡器整合在一起,以啟用 HTTP 階段作業的容錯移轉。

HttpSession 物件和有狀態階段作業 Bean 狀態會儲存在 HADB 中;HADB 是儲存階段作業狀態的高可用性資料庫。管理這個可水平延伸的狀態管理服務時,不受應用程式伺服器層影響。其設計目的在於透過負載平衡、容錯移轉和狀態回復功能,支援高達 99.999% 的服務和資料可用性。

如果 Application Server 不負責管理狀態,優點非常多。Application Server 實例能專心成為可延伸且高效能的 JavaTM Platform Enterprise Edition 5 (Java EETM 5 平台) 容器,將狀態複製工作委託給外部高可用性狀態服務。由於採用此鬆耦合架構,因此可以非常輕鬆地將 Application Server 實例增加至叢集或從叢集中刪除。HADB 狀態複製服務可以獨立延伸,以取得最佳可用性和效能。如果 Application Server 實例還執行複製,J2EE 應用程式的效能可能會降低,並且資源回收暫停時間也可能會變長。

因為每個 HADB 節點都需要 512 MB 的記憶體,所以您需要 1 GB 的記憶體,才能在同一台機器上執行兩個 HADB 節點。如果記憶體不足,請將每個節點設定在不同機器上。我們不建議部署時在一台主機上執行雙節點資料庫,因為如此便無法容錯。

HADB 預先安裝步驟

本程序包含最常用的預先安裝作業。如需其他預先安裝主題的相關資訊,包括安裝 HADB 的必要條件、配置網路備援及檔案系統支援,請參閱「Sun Java System Application Server 9.1 高可用性管理指南」中的第 2 章「安裝和設定高可用性資料庫」

本節中建議的系統配置值足以執行最多六個 HADB 節點,但並未將系統上也使用共用記憶體的其他應用程式列入考量。

Procedure針對 HADB 配置系統

  1. 取得根存取。

  2. 定義與共用記憶體和信號有關的變數。

    • 在 Solaris 上:

      1. 將以下各行增加到 /etc/system 檔案 (或者,如果以下各行已存在於檔案中做為註釋,則取消註釋這幾行,並確定值與以下相符):

        set shmsys:shminfo_shmmax=0x80000000

        set shmsys:shminfo_shmseg=36

        set semsys:seminfo_semmnu=600

        shminfo_shmmax 設為系統總記憶體的值 (所顯示的 0x80000000 在十六進制表示法中代表 2 GB 記憶體)。

        如果已定義 seminfo_*,請以所示的數量遞增。不必變更 seminfo_semmni seminfo_semmns 的預設值。從 Solaris 8 開始,變數 shminfo_shmeg 已遭淘汰。

      2. 使用以下指令重新開機:

        sync; sync; reboot

    • 在 Linux 上:

      1. 將以下各行增加到 /etc/sysctl.conf 檔案 (或者,如果這幾行已存在於檔案中做為註釋,請予以取消註釋)。將值設為機器中的實體記憶體量。將值指定為十進位位元組數。例如,如果機器有 2 GB 的實體記憶體:

        echo 2147483648 > /proc/sys/shmmax

        echo 2147483648 > /proc/sys/shmall

      2. 使用以下指令重新開機:

        sync; sync; reboot

    • 在 Windows 上︰不需特別的系統設定。

  3. 如果您在安裝獨立 Application Server 時使用現有 JDK 軟體,請檢查 JDK 版本。

    HADB 需要 Sun JDK 1.4.1_03 或更高版本 (如需有關 JDK 版本的最新資訊,請參閱「Sun Java System Application Server 9.1 版本說明」)。檢查已安裝的版本,如果之前尚未設定,請現在將 JAVA_HOME 環境變數設為 JDK 的安裝目錄。

  4. 如有需要,請在重新開機後,重新啟動網域、Web 伺服器和節點代理程式。

    若要重新啟動網域,請使用指令 asadmin start-domain domain1

    若要重新啟動 Web 伺服器,請執行 web_server_install_dir/https- hostname 中的啟動程式。

    若要重新啟動節點代理程式,請使用指令 asadmin start-node-agent hostname。將變數 hostname 替代成執行 Application Server 的主機名稱。

安裝 HADB

本節提供安裝高可用性資料庫 (HADB) 的步驟。


備註 –

如果您計畫在 Application Server 機器上執行高可用性資料庫,並且在安裝 Application Server 時也安裝了 HADB,則請跳至啟動 HADB


只要有 2 GB 的記憶體和 1-2 顆 CPU,即可將 HADB 元件安裝在已安裝 Application Server 系統的同一台機器上。否則請使用額外的硬體。例如︰

Procedure安裝 HADB

  1. 執行 Application Server 或 Java Enterprise System 安裝程式。

  2. 選擇安裝 HADB 的選項。

  3. 在您的主機上完成安裝。

啟動 HADB

本節說明大多數情況下以執行 ma-initd 程序檔的方式啟動 HADB 管理代理程式。若是生產部署,請啟動管理代理程式做為服務,以確保其可用性。如需更多資訊,請參閱「Sun Java System Application Server 9.1 高可用性管理指南」中的「啟動 HADB 管理代理程式」

如果要在數台主機上啟動具有 HADB 節點的資料庫,請在每台主機上啟動管理代理程式。

Procedure在 Solaris 或 Linux 上 Java Enterprise System 安裝中啟動 HADB

  1. 變更至 /etc/init.d 目錄:

    cd /etc/init.d

  2. 執行以下指令啟動代理程式:

    ./ma-initd start

Procedure在 Windows 上 Java Enterprise System 安裝中啟動 HADB

在配置並執行 Sun Java System 時,預設會啟動 HADB。不過,如果您要手動啟動,請遵循以下步驟:

  1. 移至 [開始] ⇒ [設定] ⇒ [控制台],然後按兩下 [系統管理工具]。

  2. 連按兩下 [服務] 捷徑。

  3. 從 [服務] 清單中選取 [HADBMgmtAgent Service]。

  4. 從 [動作] 功能表中,選取 [啟動]。

Procedure在 Solaris 或 Linux 上獨立安裝中啟動 HADB

  1. 變更至 Application Server 安裝中的 HADB bin 目錄:install-dir /hadb/4/bin

  2. 執行以下指令啟動代理程式:

    ./ma-initd start

Procedure在 Windows 上獨立安裝中啟動 HADB

  1. 在終端機視窗中,變更至 Application Server 安裝中的 HADB bin 目錄:install-dir\hadb\4. x\bin

    x 代表 HADB 的發行版本號碼。

  2. 執行以下指令啟動代理程式:

    ma -i ma.cfg

將叢集和應用程式配置為使用高可用性功能

在您可以驗證 HTTP 階段作業持續性之前,FirstCluster 叢集必須配置為使用 HADB,也必須為 clusterjsp 應用程式啟用高可用性。使用 asadmin configure-ha-cluster 指令,將現有叢集配置為使用高可用性功能。如需有關如何使用本指令的更多資訊,請在出現 asadmin 指令提示符號時,鍵入 configure-ha-cluster --help,或參閱configure-ha-cluster(1) 線上手冊。

重新啟動叢集

您必須重新啟動叢集實例,才能使上一節所做的變更生效。

Procedure重新啟動叢集

  1. 在管理主控台中,展開 [叢集] 節點。

  2. 按一下 [FirstCluster]。

  3. 在右窗格中,按一下 [停止實例]。

  4. 等實例停止後,按一下 [啟動實例]。

驗證 HTTP 階段作業容錯移轉

測試階段作業資料容錯移轉的步驟,與驗證負載平衡主題中所述的測試負載平衡的步驟類似。這次是要測試失敗後是否保留階段作業資料。使用者不需設定容錯移轉,因為應用程式範例已配置為失敗後自動重試。

Procedure驗證 HTTP 階段作業容錯移轉

  1. 若要顯示 clusterjsp 應用程式的第一個頁面,請在瀏覽器中鍵入以下 URL:

    http://localhost :web_server_port /clusterjsp

    localhost 變數替代成執行 Web 伺服器的系統名稱。

    web_server_port 變數替代成 web_server_install_dir /https-hostname /config/server.xmlLS 元素的連接埠屬性值。在此範例中,使用連接埠 38000。

    將顯示您在驗證應用程式的部署中所看到的類似頁面。

  2. 查看顯示的階段作業和主機資訊。例如︰

    • Executed From Server: localhost

    • Server Port Number: 38000

    • Executed Server IP Address: 192.18.145.133

    • Session ID: 41880f618e4593e14fb5d0ac434b1

    • Session Created: Wed Feb 23 15:23:18 PST 2005

  3. 檢視伺服器存取記錄檔,以判斷哪個 Application Server 實例提供此應用程式。記錄檔的位置如下:

    • Solaris Java Enterprise System 安裝:

      /var/opt/SUNWappserver/nodeagents/nodeagent_name /i1/logs/access/server_access_log

      /var/opt/SUNWappserver/nodeagents/nodeagent_name /i2/logs/access/server_access_log

    • Linux Java Enterprise System 安裝:

      /var/opt/sun/appserver/nodeagents/ nodeagent_name/i1/logs/access/server_access_log

      /var/opt/sun/appserver/nodeagents/ nodeagent_name/i2/logs/access/server_access_log

    • Windows Java Enterprise System 安裝:

      install-dir \nodeagents\nodeagent_name\i1\logs\access\server_access_log

      install-dir\nodeagents\nodeagent_name \i2\logs\access/server_access_log

    • 獨立 Application Server 安裝:

      install-dir /nodeagents/nodeagent_name/i1/logs/access/server_access_log

      install-dir/nodeagents/nodeagent_name /i2/logs/access/server_access_log

  4. 停止提供此頁面的 Application Server 實例。

    1. 在管理主控台的左窗格中,展開 [叢集]。

    2. 按一下 [FirstCluster]。

    3. 在右窗格中,按一下 [實例] 標籤。

    4. 按一下處理此請求的伺服器實例旁的核取方塊,再按一下 [停止] 按鈕。

  5. 重新載入 clusterjsp 應用程式範例頁面。

    將保留階段作業 ID 和階段作業屬性資料。

  6. 查看其他 Application Server 實例的存取記錄,即可注意到目前已經處理此請求。

    狀態容錯移轉功能可正常運作,因為 HTTP 階段作業可永久儲存於 HADB 中。除了 HTTP 階段作業狀態以外,Application Server 也可以將 EJB 狀態儲存在 HADB 中。

接下來的步驟

恭喜!您現在已完成 Application Server 的快速入門了。

在本節中,您已安裝、配置和啟動 HADB,也已經將叢集和應用程式配置為使用高可用性功能。如需有關 Application Server 的其他資訊,請參閱其他可用資源