本節將詳細說明階段作業複製操作。
Web 請求結束後,Web Server 將決定是否需要透過儲存在伺服器配置檔案 server.xml 中的階段作業複製配置,來複製階段作業資料。
現在研究由四個實例形成一個叢集、並在 Administration Server 上啟用階段作業複製的使用案例。
在由執行於四個節點上的四個實例 (A、B、C 和 D) 所組成的 Web Server 叢集中,階段作業複製的程序如下:
實例 A 為 D 的備份,B 為 A 的備份,C 為 B 的備份,D 為 C 的備份。這樣便會形成完整的備份環。
叢集中的每個實例都會記錄一份靜態清單,其中列出了叢集中的所有實例以及使用中的備份實例。
階段作業資料會在每個請求結束後同步傳送至備份實例,依配置而定。
Web Server 叢集環境中的容錯移轉程序運作方式如下:
如果實例 A 失敗,負載平衡器會將以實例 A 為目的地的內送 Web 請求,重新導向至叢集中其餘的實例,並且備份環會以下列方式重新配置:
D 偵測到其備份 A 當機時,便會在順序清單上選取 A 的下一個實例做為新備份實例。
在此情況下將會選取 B,並且 D 會與 B 建立新的備份連線。此時 B 持有兩個備份:A 的唯讀備份和 D 的使用中備份。
此時完整的備份環形成:B 備份到 C,C 備份到 D,D 備份到 B。
當故障的實例 A 再次可用時,會向指定的備份實例 B 傳送重新連結訊息以重新連結備份環,並與 B 建立備份連線。
D 收到 A 傳回的 ping 成功結果或收到來自 A 的訊息,進而偵測到 A 在線上時,
D 隨後與 A 建立備份連線,並終止與 B 的備份連線。
Web Server 7.0 在階段作業複製中不支援以下功能:
回復兩個以上同步故障的實例。
兩次失敗之間的間隔必須大於讓恢復的實例完全回復所需的時間。
對一個以上的實例進行階段作業備份。在一般操作中,任何階段作業僅有兩個備份:主要階段作業和備份階段作業。
階段作業持續性:階段作業僅備份在其他實例的記憶體中,以便進行容錯移轉
Web Server 僅支援 Java Web 應用程式的階段作業複製。如果使用的是非 Java 應用程式 (如 CGI 或 PHP),則無法複製階段作業資料。