Sun logo      上一個      目錄      下一個     

Sun Java System Application Server Enterprise Edition 8.1 管理指南 2005Q1

第 7 章
配置可用性和階段作業持續性

本章描述如何在 Sun Java™ System Application Server Enterprise Edition 環境中配置階段作業持續性和可用性。它包含以下小節:


關於可用性和階段作業持續性

需要階段作業持續性的原因

在應用程式階段作業進行時,經常會有屬於階段作業的資料未儲存在傳統的資料庫中。例如,購物車的內容就是這樣的資料。Sun Java System Application Server 提供在儲存庫中儲存或保留此階段作業資料的功能,這樣,如果應用程式伺服器實例出現故障,階段作業狀態可以恢復,並且階段作業可以繼續進行而不會遺失資訊。

在 J2EE 應用程式中,階段作業資料通常儲存在 HTTP 階段作業或有狀態階段作業 Bean (SFSB) 階段作業中。Sun Java System Application Server 同時支援 HTTP 階段作業和 SFSB 階段作業的狀態持續性。還支援同時儲存在 HTTP 階段作業和 SFSB 階段作業中的某些 J2EE 物件參照之防故障備用,請參閱「Developer's Guide」。

隨附於 Sun Java System Application Server 的高可用性資料庫 (HADB) 可用做持續性儲存庫,以便為階段作業資料提供高可用性。

階段作業持續性配置概況

為了成功完成階段作業持續性配置,請確定按其所列順序執行以下步驟,因為前面一個或多個步驟將做為執行後面一些步驟的先決條件。

  1. 為叢集建立 HADB 資料庫。請參閱「Reference Manual」中 configure-ha-cluster 指令的描述。
  2. 為叢集設定 HTTP 負載平衡。請參閱第 3 章「配置負載平衡和防故障備用」
  3. 為應用程式伺服器實例和 Web 或 EJB 容器 (應支援階段作業持續性) 啟用可用性,並配置階段作業持續性設定。選擇以下方法之一:
  4. 如果您啟用可用性,則可以為 SFSB 變更檔案系統階段作業儲存 (如果需要)。請參閱停用可用性時配置 SFSB 階段作業儲存
  5. 重新啟動叢集中的每個伺服器實例。
  6. 為需要可用性的任何特定 SFSB 啟用可用性,然後選取需要為其進行階段作業狀態檢查點操作的方法。請參閱「Developer's Guide」。
  7. 使每個應具有高可用性的 Web 模組可分散。請參閱「Developer's Guide」。
  8. 在部署期間,為 J2EE 應用程式、Web 模組或 EJB 模組啟用可用性。在管理主控台中,核取 [啟用可用性] 方塊,或結合使用 deploy 指令和設定為 true--availabilityenabled 選項。

  9. 備註

    階段作業持續性與動態部署、動態重新載入和自動部署不相容。這些部署功能適用於開發環境而非生產環境。如需有關如何停用這些功能的資訊,請參閱第 5 章「部署應用程式」



    備註

    如果實例目前正在處理請求,請在重新啟動該實例前將其靜止,這樣,它就有足夠的時間來處理正在處理的請求。如需更多資訊,請參閱「停用 (靜止) 伺服器實例或叢集」。


可用性層級

可用性可在五個不同層級上啟用:

  1. 伺服器實例,依預設已啟用
  2. Web 或 EJB 容器,依預設已啟用
  3. 應用程式,依預設已停用
  4. 獨立的 Web 或 EJB 模組,依預設已停用
  5. SFSB,依預設已停用

對於要啟用的給定層級之可用性,還必須在所有更高層級中啟用。例如,若要啟用應用程式層級的可用性,必須在伺服器實例層級和容器層級啟用可用性。

給定層級的預設值是其上一層級的設定值。例如,如果已啟用容器層級的可用性,則依預設啟用應用程式層級的可用性。

如果已停用伺服器實例層級的可用性,則啟用其他任何層級的可用性都不生效。如果已啟用伺服器實例層級的可用性,除非已明確停用,否則將啟用所有層級的可用性。

處於 HTTP 階段作業狀態的單次登入之可用性

在單一應用程式伺服器實例中,如果使用者已由一個應用程式認證,則在同一實例上執行的其他應用程式將不會對該使用者進行重新認證。這稱為單次登入。如需有關單次登入的更多資訊,請參閱驗證單次登入

若要使該功能在 HTTP 階段作業防故障備用到叢集中另一個實例後仍然可用,必須將單次登入資訊保留在 HADB 中。首先啟用伺服器實例和 Web 容器的可用性,然後啟用單次登入狀態持續性。請參閱配置伺服器實例層級的可用性

可以透過單一名稱和密碼的組合進行存取的應用程式組成了單次登入群組

對於與應用程式 (是單次登入群組的一部分) 相對應的 HTTP 階段作業,如果其中一個階段作業逾時,其他階段作業並不會失效,並且仍然可用。這是因為一個階段作業的逾時不應影響其他階段作業的可用性。

因此,如果一個階段作業逾時並且您嘗試從執行該階段作業的同一瀏覽器視窗存取相應的應用程式,則無需再次進行認證。但是將建立一個新的階段作業。

以屬於含有其他兩個應用程式的單次登入群組的購物車應用程式為例。假設其他兩個應用程式的階段作業逾時值大於購物車應用程式的階段作業逾時值。如果購物車應用程式的階段作業逾時,並且您嘗試從執行該階段作業的同一瀏覽器視窗執行購物車應用程式,則無需再次進行認證。但是,前一輛購物車將遺失,並且必須建立一輛新的購物車。即使執行購物車應用程式的階段作業已逾時,其他兩個應用程式也會繼續照常執行。

類似地,可假定與其他兩個應用程式中的任何一個應用程式對應的階段作業逾時。當從執行該階段作業的同一瀏覽器視窗連線應用程式時,您無需再次進行認證。


備註

此運作方式僅適用於階段作業逾時情況。如果啟用了單次登入並且您使用 HttpSession.invalidate() 令其中一個階段作業失效,則屬於單次登入群組的所有應用程式之階段作業都將失效。如果您嘗試存取屬於單次登入群組的任一應用程式,則需要再次進行認證,系統將為存取該應用程式的用戶端建立一個新的階段作業。


應用程式範例

以下目錄包含用於說明 HTTP 和 SFSB 階段作業持續性的範例應用程式:

install_dir/samples/ee-samples/highavailability
install_dir/samples/ee-samples/failover


用於配置可用性的管理主控台作業

停用可用性時配置 SFSB 階段作業儲存

如果停用了可用性,本機檔案系統將用於 SFSB 狀態鈍化,但不是持續性。若要變更 SFSB 狀態的儲存位置,請變更 EJB 容器中的 [階段作業儲存位置] 設定。請參閱配置一般 EJB 設定

配置伺服器實例層級的可用性

若要使用管理主控台啟用或停用伺服器實例層級的可用性,請執行以下步驟:

  1. 在樹形元件中,展開 [配置] 節點。
  2. 展開要編輯的配置之節點。
  3. 選取 [可用性服務] 節點。
  4. 移至 [可用性服務] 頁面。
  5. 透過核取 [可用性服務] 方塊來啟用實例層級可用性。若要停用實例層級可用性,請取消核取該方塊。
  6. 如果變更了用於連線 HADB 的 JDBC 資源以獲得階段作業持續性,您可以變更儲存池名稱。如需有關詳細資訊,請參閱「Reference Manual」中 configure-ha-cluster 指令的描述。

  7. 按一下 [儲存] 按鈕。
  8. 展開 [實例] 節點。
  9. 選取伺服器實例。
  10. 移至伺服器實例頁面。
  11. 重新啟動伺服器。

配置 Web 容器層級的可用性

若要啟用可用性或置換單一 Web 應用程式的可用性設定,請使用 sun-web.xml 檔案中的設定。如需有關詳細資訊,請參閱「Developer's Guide」。

若要使用管理主控台啟用或停用 Web 容器的可用性,請執行以下步驟:

  1. 選取 [Web 容器可用性] 標籤,然後核取 [可用性服務] 方塊。若要停用可用性,請取消核取該方塊。您還可以變更以下可選設定:
    • 持續性類型:為已啟用可用性的 Web 應用程式指定階段作業持續性機制。允許的值包括 memory (無持續性)、file (檔案系統) 和 ha (HADB)。如果啟用了可用性,則預設為 ha。如果停用了可用性,則預設為 memory。對於需要階段作業持續性的生產環境,請使用 ha

      如果將持續性類型設定為 memory,您可以使用 sessionFilename 特性來指定正常關閉伺服器實例時儲存 HTTP 階段作業狀態的檔案系統位置。這對於內部測試很有用,但不受生產環境支援。

      如果將持續性類型設定為 file,您可以使用目錄特性來指定儲存 HTTP 階段作業狀態的檔案系統位置。保留檔案系統對於內部測試很有用,但不受生產環境支援。

    • 持續性頻率:指定儲存階段作業狀態的頻率。僅當持續性類型為 ha 時適用。允許的值包括:
      • web-method ─ 將回應傳送回用戶端之前,在每個 Web 請求結束時儲存階段作業狀態。此模式為發生故障時完全更新階段作業狀態提供了最好的保證。此為預設值。
      • time-based ─ 在後台中根據 reapIntervalSeconds 儲存特性設定的頻率儲存階段作業狀態。此模式不能保證完全更新階段作業狀態。但是,它可以提供很大的效能改善,因為在每個請求之後都不儲存狀態。若要設定此特性,請參閱配置儲存特性
    • 持續性範圍:指定儲存階段作業狀態的量。僅當持續性類型為 ha 時適用。允許的值包括:
      • session ─ 每次儲存整個階段作業狀態。此模式為正確儲存任何可分散 Web 應用程式的階段作業資料提供了最好的保證。此為預設值。
      • modified-session ─ 如果階段作業已進行修改,則儲存整個階段作業狀態。如果呼叫了 HttpSession.setAttribute ()HttpSession.removeAttribute (),則系統將認為階段作業狀態已進行修改。您必須保證每次變更屬性時都呼叫 setAttribute()。這不是 J2EE 規格的需求,但是此模式需要這樣做才能正常工作。
      • modified-attribute ─ 僅儲存修改的階段作業屬性。若要使此模式正常工作,您必須遵循一些指導原則。

        每次修改階段作業狀態時都呼叫 setAttribute()

        確定各屬性之間沒有交叉參照。系統將對每個不同屬性關鍵字下的物件圖形單獨進行串列化並單獨儲存。如果每個單獨的關鍵字下的物件之間存在物件交叉參照,則它們將不會進行正確串列化和反串列化。

        在多個屬性之間分布階段作業狀態,或者至少在唯讀屬性和可修改屬性之間分布階段作業狀態。

    • 單次登入狀態:核取此方塊以啟用單次登入狀態的持續性。若要停用持續性,請取消核取該方塊。
    • HTTP 階段作業儲存:如果變更了用於連線 HADB 的 JDBC 資源以獲得階段作業持續性,您可以變更 HTTP 階段作業儲存。如需有關詳細資訊,請參閱「Reference Manual」中 configure-ha-cluster 指令的描述。
  2. 按一下 [儲存] 按鈕。
  3. 若要變更影響階段作業持續性的其他可選設定,請參閱配置 Web 容器階段作業
  4. 展開 [實例] 節點。
  5. 選取伺服器實例。
  6. 移至伺服器實例頁面。
  7. 重新啟動伺服器。

配置 EJB 容器層級的可用性

若要啟用可用性並為單一有狀態階段作業 Bean (SFSB) 選取要執行檢查點作業的方法,請使用 sun-ejb-jar.xml 檔案中的設定。如需有關詳細資訊,請參閱「Developer's Guide」。

若要使用管理主控台來啟用或停用 EJB 容器的可用性,請執行以下步驟:

  1. 選取 [EJB 容器可用性] 標籤,然後核取 [可用性服務] 方塊。若要停用可用性,請取消核取該方塊。您還可以變更以下可選設定:
    • HA 持續性類型:為已啟用可用性的 SFSB 指定階段作業持續性和鈍化機制。允許的值包括 file (檔案系統) 和 ha (HADB)。對於需要階段作業持續性的生產環境,請使用預設值 ha
    • SFSB 持續性類型:為尚未啟用可用性的 SFSB 指定鈍化機制。允許的值包括 file (預設值) 和 ha

      如果將任一持續性類型設定為 file,EJB 容器都將指定用於儲存已鈍化的階段作業 Bean 狀態的檔案系統位置。請參閱配置一般 EJB 設定。檔案系統的檢查點操作對於內部測試很有用,但不受生產環境支援。

    • SFSB 儲存池名稱:如果您已變更用於連線 HADB 的 JDBC 資源,則可以變更 SFSB 儲存池名稱以獲得階段作業持續性。如需有關詳細資訊,請參閱「Reference Manual」中 configure-ha-cluster 指令的描述。
  2. 按一下 [儲存] 按鈕。
  3. 展開 [實例] 節點。
  4. 選取伺服器實例。
  5. 移至伺服器實例頁面。
  6. 重新啟動伺服器。


上一個      目錄      下一個     


Copyright 2004 - 2005 Sun Microsystems, Inc. 版權所有。