在不遺失對使用者的可用性的情況下,將應用程式升級至新版本稱為輪替式升級。在升級過程中,小心管理這兩個版本的應用程式,不但可以確保應用程式的目前使用者在無中斷的情況下完成作業,同時可讓新使用者不需設定即可取得新的應用程式版本。使用輪替式升級時,使用者不會察覺正在進行升級。
依據兩個應用程式版本之間的變更大小,輪替式升級會造成不同程度的困難。
如果變更很小 (例如對靜態文字和影像的變更),則此應用程式的兩個版本可以相容,並可在相同叢集中同時執行。相容的應用程式必須︰
使用相同的階段作業資訊
使用相容的資料庫模式
具有一般相容應用程式層級的業務邏輯
使用相同的實體資料來源
您可以在單一叢集或多個叢集中執行相容應用程式的輪替式升級。如需更多資訊,請參閱在單一叢集中升級。
如果應用程式的兩個版本不滿足上述所有條件,則應用程式會被視為不相容。在某個叢集中執行不相容的應用程式版本會毀壞應用程式資料,並導致階段作業容錯移轉無法正常執行。該問題取決於不相容性的類型和程度。好的做法是透過建立要向其部署新版本應用程式的「隱式叢集」,來升級不相容的應用程式,然後緩慢靜止舊叢集和應用程式。如需更多資訊,請參閱升級不相容的應用程式。
應用程式開發者和管理員是確定應用程式版本是否相容的最佳人選。如有疑問,請假設版本不相容,因為這是最安全的方法。
如果未與任何其他叢集共用叢集配置,則可以對部署至單一叢集的應用程式執行輪替式升級。
儲存舊版本的應用程式或備份網域。
若要備份網域,請使用 asadmin backup-domain 指令。
關閉叢集的動態重新配置 (如果已啟用)。
從管理主控台執行此操作:
或者,使用以下指令︰
asadmin set --user user --passwordfile password_file cluster_name -config.dynamic-reconfiguration-enabled=false
將已升級的應用程式重新部署到目標 domain 中。
如果使用管理主控台進行重新部署,網域將自動成為目標。如果使用 asadmin,請指定目標 domain。由於已停用動態重新配置,因此舊應用程式將繼續在叢集上執行。
使用 asadmin enable-http-lb-application 為實例啟用已重新部署的應用程式。
從負載平衡器靜止叢集中的某個伺服器實例。
請依照下列步驟執行:
使用 asadmin disable-http-lb-server 停用伺服器實例。
使用 asadmin export-http-lb-config 匯出負載平衡器配置檔案。
將已匯出的配置檔案複製到 Web 伺服器實例的配置目錄。
例如,對於 Sun Java System Web Server,其位置為 web_server_install_dir/https-host-name/config/loadbalancer.xml。若要確保負載平衡器載入新的配置檔案,請務必確定已透過在負載平衡器配置中設定 reloadinterval 啟用了動態重新配置。
請等待,直至逾時值到期。
監視負載平衡器的記錄檔以確定實例已離線。如果使用者看到重試 URL,請略過靜止期間,並立即重新啟動伺服器。
在叢集中的其他實例仍處於執行狀態的情況下,重新啟動已停用的伺服器實例。
重新啟動操作將使伺服器與網域同步,並更新應用程式。
測試重新啟動的伺服器上的應用程式,以確定應用程式執行正常。
在負載平衡器中重新啟用伺服器實例。
請依照下列步驟執行:
對叢集中的每個實例重複步驟 5 至 8。
當所有伺服器實例具有新的應用程式並且這些伺服器實例正在執行時,您可以為叢集重新啟用動態重新配置。
儲存舊版本的應用程式或備份網域。
若要備份網域,請使用 asadmin backup-domain 指令。
關閉所有叢集的動態重新配置 (如果已啟用)。
從管理主控台執行此操作:
或者,使用以下指令︰
asadmin set --user user --passwordfile password_file cluster_name-config.dynamic-reconfiguration-enabled=false
將已升級的應用程式重新部署到目標 domain 中。
如果使用管理主控台進行重新部署,網域將自動成為目標。如果使用 asadmin,請指定目標 domain。由於已停用動態重新配置,因此舊應用程式將繼續在叢集上執行。
使用 asadmin enable-http-lb-application 為叢集啟用已重新部署的應用程式。
靜止負載平衡器中的某個叢集
使用 asadmin disable-http-lb-server 停用叢集。
使用 asadmin export-http-lb-config 匯出負載平衡器配置檔案。
將已匯出的配置檔案複製到 Web 伺服器實例的配置目錄。
例如,對於 Sun Java System Web Server,其位置為 web_server_install_dir/https-host-name/config/loadbalancer.xml。必須為負載平衡器啟用動態重新配置 (透過在負載平衡器配置中設定 reloadinterval),以便能夠自動載入新的負載平衡器配置檔案。
請等待,直至逾時值到期。
監視負載平衡器的記錄檔以確定實例已離線。如果使用者看到重試 URL,請略過靜止期間,並立即重新啟動伺服器。
在其他叢集仍處於執行狀態的情況下,重新啟動已停用的叢集。
重新啟動操作將使叢集與網域同步,並更新應用程式。
測試重新啟動的叢集上的應用程式,以確定應用程式執行正常。
在負載平衡器中重新啟用叢集︰
對其他叢集重複步驟 5 至 8。
當所有伺服器實例都具有新的應用程式並且這些伺服器實例正在執行時,您可以為所有叢集重新啟用動態重新配置。
如需有關應用程式相容條件的資訊,請參閱應用程式相容性,應用程式的新版本與其舊版本不相容。此外,您必須在兩個或更多叢集中升級不相容的應用程式。如果您僅有一個叢集,請為升級建立「隱式叢集」,如下所述。
升級不相容的應用程式時,請︰
為應用程式的新版本指定與其舊版本不同的名稱。以下步驟假設已重新命名應用程式。
如果資料模式不相容,請在規劃資料遷移之後使用不同的實體資料來源。
在與其中部署了舊版本的叢集不同的叢集中部署新版本。
讓執行舊應用程式的叢集離線之前,為其設定適當長的逾時,因為應用程式的請求不會容錯移轉至新叢集。這些使用者階段作業將失敗。
儲存舊版本的應用程式或備份網域。
若要備份網域,請使用 asadmin backup-domain 指令。
在相同或不同的一組機器上建立「隱式叢集」,將其做為現有叢集。
使用管理主控台建立新叢集並參照現有叢集的已命名配置。
在每個機器上為新實例自訂連接埠,以避免與現有使用中連接埠衝突。
對於與叢集相關聯的所有資源,使用 asadmin create-resource-ref 將資源參照增加至新建的叢集中。
使用 asadmin create-application-ref,從新建的叢集中,建立對部署至該叢集的所有其他應用程式 (目前重新部署的應用程式除外) 的參照。
使用 asadmin configure-ha-cluster 將叢集配置為具有高可用性。
使用 asadmin create-http-lb-ref 在負載平衡器配置檔案中建立對新建叢集的參照。
為應用程式的新版本指定與舊版本不同的名稱。
透過將新叢集做為目標來部署新應用程式。使用不同的一個或多個環境根目錄。
使用 asadmin enable-http-lb-application 為叢集啟用已部署的新應用程式。
在其他叢集仍處於執行狀態的情況下,啟動新的叢集。
啟動操作將導致叢集與網域同步,並使用新應用程式進行更新。
測試新叢集上的應用程式,以確定其是否正常執行。
使用 asadmin disable-http-lb-server 從負載平衡器上停用舊叢集。
為延遲階段作業存在的時間設定逾時。
使用 asadmin enable-http-lb-server 從負載平衡器中啟用新叢集。
使用 asadmin export-http-lb-config 匯出負載平衡器配置檔案。
將已匯出的配置檔案複製到 Web 伺服器實例的配置目錄。
例如,對於 Sun Java System Web Server,其位置為 web_server_install_dir/https-host-name/config/loadbalancer.xml。必須為負載平衡器啟用動態重新配置 (透過在負載平衡器配置中設定 reloadinterval),以便能夠自動載入新的負載平衡器配置檔案。
在逾時時間過期後,或舊應用程式的所有使用者結束後,停止舊叢集並刪除舊應用程式。