![]() | |
Sun Java System Application Server Enterprise Edition 8.1 2005Q1 |
設置高可用性防故障備用
使用上一章中使用的配置時,如果伺服器實例出現故障,使用者會遺失階段作業狀態。本小節是兩個進階主題中的第二個,提供用於安裝高可用性資料庫 (HADB)、建立高可用性叢集以及測試 HTTP 階段作業持續性的步驟。
Application Server 支援 HTTP 階段作業持續性和有狀態階段作業 Bean 的持續性。本章中的程序適用於 HTTP 階段作業持續性。
本章假設您在執行其中的步驟之前已執行了本快速入門前面小節中的步驟。這些步驟以您應遵照完成的順序列出。
關於高可用性叢集和 HADBSun Java System Application Server Enterprise Edition 中的高可用性叢集將狀態複製服務與之前建立的叢集和負載平衡程式整合,以啟用 HTTP 階段作業的防故障備用。
HttpSession 物件和有狀態階段作業 Bean 狀態儲存在 HADB (用於儲存階段作業狀態的高可用性資料庫) 中。可以獨立於 Application Server 層之外來管理此可水平延伸的狀態管理服務。其旨在使用負載平衡、防故障備用和狀態回復能力支援高達 99.999% 的服務和資料可用性。
Application Server 不承擔狀態管理職責,這具有顯著優勢。Application Server 實例在其生命週期內做為可延伸且高效能的 Java 2 Platform, Enterprise Edition (J2EE 平台) 容器執行,並將狀態複製委託給外部高可用性狀態服務。由於採用此鬆耦合架構,因此可以輕鬆將 Application Server 實例增加至叢集或從叢集中刪除。HADB 狀態複製服務可以獨立延伸,以取得最佳可用性和效能。如果 Application Server 實例還執行複製,J2EE 應用程式的效能可能會降低,並且資源回收暫停時間也可能會變長。
由於每個 HADB 節點均需要 512 MB 的記憶體,因此需要 1 GB 的記憶體才能在同一機器上執行兩個 HADB 節點。如果記憶體不足,請將每個節點設置在不同機器上。建議部署時不要僅在一台主機上執行雙節點資料庫,因為這種配置不具有容錯能力。
HADB 安裝前步驟此程序包含最常見的安裝前作業。如需有關其他安裝前主題 (包括安裝 HADB 的先決條件、配置網路備援以及檔案系統支援) 的資訊,請參閱「High Availability Administration Guide」。
- 取得 root 存取權限。
- 定義與共用記憶體相關的變數。
在 Solaris 系統中:
- 將以下行增加至 /etc/system 檔案 (或者,如果這些行做為註釋存在於該檔案中,則對其取消註釋,並確定值與以下值相符):
set shmsys:shminfo_shmmax=0x80000000
set shmsys:shminfo_shmseg=20
set semsys:seminfo_semmni=16
set semsys:seminfo_semmns=128
set semsys:seminfo_semmnu=1000
將 shminfo_shmmax 設定為系統中的記憶體總和 (在十六進制表示法中,顯示 0x80000000 值表示 2 GB 的記憶體)。
如果已定義 seminfo_* 變數,請以顯示的數量為增量遞增這些值。
- 使用以下指令重新開機:
sync; sync; reboot
在 Linux 系統中:
- 將以下行增加至 /etc/sysctl.conf 檔案 (或者,如果這些行做為註釋存在於該檔案中,則對其取消註釋)。將值設定為機器上的實體記憶體容量。將值指定為十進位位元組數。例如,對於一台具有 512 MB 實體記憶體的機器:
kernel.shmmax=536870912
kernel.shmall=536870912
- 使用以下指令重新開機:
sync; sync; reboot
- 如果在安裝獨立的 Application Server 時使用了現有的 JDK 軟體,HADB 將需要 Sun JDK 1.4.1_03 或更高版本 (如需有關 JDK 版本的最新資訊,請參閱「版本說明」)。檢查已安裝的版本,並將 JAVA_HOME 環境變數設定為 JDK 的安裝目錄(如果尚未設定)。
- 如有必要,請在重新開機後重新啟動網域、Web Server 和節點代理程式。
若要重新啟動網域,請使用 asadmin start-domain domain1 指令。
若要重新啟動 Web Server,請使用 web_server_install_dir/https-hostname/start 指令。
若要重新啟動節點代理程式,請使用 asadmin start-node-agent hostname 指令。使用執行 Application Server 的主機的名稱替代變數 hostname。
安裝 HADB本小節提供安裝高可用性資料庫 (HADB) 的步驟。
備註
如果計劃在 Application Server 機器上執行高可用性資料庫,並且在安裝 Application Server 時已安裝了 HADB,請跳至啟動 HADB。
如果您的電腦具有 2 GB 記憶體和 1 至 2 個 CPU,則可將 HADB 元件與 Application Server 系統安裝在同一台機器上。如果不符合以上條件,請使用其他硬體。例如︰
若要安裝 HADB,請:
啟動 HADB本小節說明透過執行 ma-initd 程序檔啟動 HADB 管理代理程式。對於生產部署,將管理代理程式做為服務啟動以確保其可用性。如需更多資訊,請參閱「High Availability Administration Guide」。
如果要啟動在多台主機上都具有 HADB 節點的資料庫,請在每台主機上啟動管理代理程式。
在 Java Enterprise System 安裝中︰
在獨立的 Application Server 安裝中:
配置叢集和應用程式,使其具有高可用性
- 從執行 Domain Administration Server 的機器上,使用以下指令將 FirstCluster 配置為使用 HADB:
asadmin configure-ha-cluster --hosts hadb_hostname,hadb_hostname --devicesize 256 FirstCluster
使用要執行 HADB 的機器之主機名稱替代 hadb_hostname 變數。如果僅使用一台機器,則必須將其命名兩次。
該簡化範例在同一機器上執行兩個 HADB 節點。在生產設定中,請使用多台機器。
- 透過啟用高可用性來配置用於 HTTP 階段作業持續性的 clusterjsp 應用程式:
重新啟動叢集若要重新啟動叢集,請:
驗證 HTTP 階段作業防故障備用測試階段作業資料防故障備用的步驟與「驗證負載平衡」主題中所述的測試負載平衡的步驟類似。此時,階段作業資料已在失敗後被保留。防故障備用不需使用者設定,因為範例應用程式已配置為在失敗後自動重試。
- 若要顯示 clusterjsp 應用程式的首頁,請在瀏覽器中鍵入以下 URL:
http://localhost:web_server_port/clusterjsp
使用執行 Web Server 之系統的名稱替換 localhost 變數。
使用 web_server_install_dir/https-hostname/config/server.xml 中的 LS 元素之連接埠屬性值替換 web_server_port 變數。在此範例中使用連接埠 38000。
螢幕會顯示一個類似您在「驗證叢集應用程式」小節看到的頁面。
- 檢查顯示的階段作業和主機資訊。例如︰
- 從伺服器執行:localhost
- 伺服器連接埠號:38000
- 執行的伺服器的 IP 位址:192.18.145.133
- 階段作業 ID:41880f618e4593e14fb5d0ac434b1
- 建立的階段作業:Wed Feb 23 15:23:18 PST 2005
檢視伺服器存取記錄檔,以確定哪個 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- 獨立的 Application Server 安裝:
install_dir/nodeagents/nodeagent_name/i1/logs/access/server_access_log
install_dir/nodeagents/nodeagent_name/i2/logs/access/server_access_log- 停止正在處理此頁面的 Application Server 實例。
- 重新載入 clusterjsp 範例應用程式頁面。
階段作業 ID 以及階段作業屬性資料已保留。
- 檢查另一個 Application Server 實例的存取記錄,會發現現在是此實例在處理請求。
狀態防故障備用功能工作正常,因為 HTTP 階段作業已永久儲存於 HADB 中。除 HTTP 階段作業狀態之外,Application Server 還可在 HADB 中儲存 EJB 企業 Bean 狀態。
清除若要清除,您可以透過完成選擇 1:解除安裝您安裝的產品中的步驟解除安裝 Application Server,或者您可以透過完成選擇 2:移除範例叢集中的步驟簡單地刪除範例叢集。
選擇 1:解除安裝您安裝的產品
若要完全解除安裝,請:
- 使用以下指令停止 Application Server 程序:
asadmin stop-cluster FirstCluster
asadmin remove-ha-cluster --hosts hadb_hostname,hadb_hostname FirstCluster
使用要執行 HADB 的機器之主機名稱替代 hadb_hostname 變數。如果您僅要使用一台機器,則必須為其命名兩次。
asadmin stop-node-agent hostname
asadmin stop-domain domain1
- 使用以下方法之一停止 HADB 管理代理程式:
在 Java Enterprise System 安裝中︰
- 解除安裝 Application Server。
在 Java Enterprise System 安裝中,請執行 var/sadm/prod/entsys/uninstall,然後執行解除安裝精靈中的步驟。
在獨立的 Application Server 安裝中,請執行 install_dir/uninstall,然後執行解除安裝精靈中的步驟。
- 如果您已為本練習建立新的 Web Server 實例,請將其刪除:
- 若要解除安裝 Web Server 產品,請從 Web Server 安裝目錄中執行解除安裝程式。
選擇 2:移除範例叢集
若僅要移除本練習中使用的 FirstCluster (高可用性範例叢集) 和範例應用程式,請:
- 停止 Application Server 程序並清除配置:
asadmin stop-cluster FirstCluster
asadmin remove-ha-cluster --hosts hadb_hostname,hadb_hostname FirstCluster
使用要執行 HADB 的機器之主機名稱替代 hadb_hostname 變數。如果您僅要使用一台機器,則必須為其命名兩次。
asadmin disable-http-lb-server FirstCluster
asadmin delete-http-lb-ref --config MyLbConfig FirstCluster
asadmin delete-http-lb-config MyLbConfig
asadmin delete-instance i1
asadmin delete-instance i2
asadmin delete-cluster FirstCluster
asadmin undeploy clusterjsp
- 停止用做負載平衡程式的 Web Server:
web_server_install_dir/https-hostname/stop
- 將 web_server_install_dir/https-hostname/config 中的 loadbalancer.xml 檔案重新命名為 loadbalancer.xml.sav
- 使用以下方法之一停止 HADB 管理代理程式:
在 Java Enterprise System 安裝中︰
在本小節中,您已安裝、配置和啟動了 HADB,並已將叢集和應用程式配置為使用高可用性。您還進行了清除,以便您的系統可以進行其他工作。
恭喜!您現在已完成了 Application Server 的快速入門。
其他可用資源另提供了有關瞭解和使用 Application Server 的其他資源,包括: