如果主機發生故障而必須重新啟動其虛擬機器,您可使用虛擬機器重新啟動優先順序設定來控制重新啟動虛擬機器的順序。您也可以使用主機隔離回應設定,設定當主機與其他主機中斷管理網路連線時 vSphere HA 的回應方式。vSphere HA 在虛擬機器發生故障後將其重新啟動時也會考量其他因素。

下列設定適用於主機發生故障或主機隔離時叢集內的所有虛擬機器。此外,您也可以為特定虛擬機器設定例外狀況。請參閱 自訂個別虛擬機器

虛擬機器重新啟動優先順序

虛擬機器重新啟動優先順序決定了主機發生故障後配置虛擬機器資源的相對順序。將此類虛擬機器指派給具有未保留容量的主機,先放置優先順序最高的虛擬機器,然後繼續放置優先順序較低的虛擬機器,直到放置完所有虛擬機器為止,或直到沒有可用的叢集容量來滿足虛擬機器的保留或記憶體額外負載需求為止。然後主機可按優先順序來重新啟動已指派給它的虛擬機器。如果資源不足,vSphere HA 會等候更多的未保留容量變得可用 (例如,由於主機重新上線),然後重試放置這些虛擬機器。若要降低此情況的發生機率,請設定 vSphere HA 許可控制來保留更多資源以備發生故障時使用。許可控制可讓您控制虛擬機器所保留之叢集容量的數量,如果發生故障時,該叢集容量不可用來因應其他虛擬機器的保留和記憶體額外負荷需求。

此設定的值為:[已停用]、[低]、[中] (預設值) 以及 [高]。vSphere HA 的虛擬機器/應用程式監控功能會忽略 [已停用] 設定,因為該功能可保護虛擬機器免於作業系統層級故障而不是虛擬機器故障。當發生作業系統層級故障時,vSphere HA 會重新啟動作業系統,而虛擬機器則在同一台主機上繼續運作。您可針對個別虛擬機器變更此設定。

備註︰

虛擬機器重設會導致客體作業系統硬重新開機,但是不會重新啟動虛擬機器電源。

虛擬機器的重新啟動優先順序設定因使用者需求而有所不同。請為提供最重要服務的虛擬機器指派較高的重新啟動優先順序。

例如,在多層應用程式中,可以根據虛擬機器上主控的功能來對指派進行排序。

  • 高。為應用程式提供資料的資料庫伺服器。

  • 中。使用資料庫中的資料並在網頁上提供結果的應用程式伺服器。

  • 低。接收使用者要求、將查詢傳遞到應用程式伺服器並將結果傳回給使用者的 Web 伺服器。

如果主機發生故障,vSphere HA 會嘗試登錄到作用中主機上,且該主機上的受影響虛擬機器已開啟電源、且其重新啟動優先順序設定為 [已停用],或已關閉電源。

主機隔離回應

主機隔離回應可確定當 vSphere HA 叢集內的某台主機中斷其管理網路連線但仍繼續執行時出現的情況。您可使用隔離回應使 vSphere HA 關閉隔離主機上執行的虛擬機器電源,然後在非隔離主機上重新啟動虛擬機器。主機隔離回應需要啟用 [主機監控狀態]。如果 [主機監控狀態] 處於停用狀態,則主機隔離回應也會暫停。當主機無法與其他主機上執行的代理程式通訊且無法對其隔離位址執行 Ping 動作時,該主機確定已被隔離。然後,該主機會執行其隔離回應。回應為:關閉虛擬機器電源然後重新啟動,或關閉虛擬機器然後重新啟動。您可以針對個別虛擬機器自訂此內容。

備註︰

如果虛擬機器的重新啟動優先順序設定為 [已停用],則不會做出任何主機隔離回應。

若要使用 [關閉虛擬機器然後重新啟動] 設定,必須在虛擬機器的客體作業系統中安裝 VMware Tools。將虛擬機器關閉的優點在於可以保留其狀態。關閉操作優於關閉虛擬機器電源操作,關閉虛擬機器不會將最近的變更排清到磁碟中,也不會認可交易。在關閉完成時,正在關閉的虛擬機器需要更長時間進行容錯移轉。未在 300 秒內或在進階選項 das.isolationshutdowntimeout 中指定的時間內關閉的虛擬機器將被關閉電源。

建立 vSphere HA 叢集後,您可以覆寫特定虛擬機器的 [重新啟動優先順序] 和 [隔離回應] 的預設叢集設定。此覆寫操作對於用於特殊工作的虛擬機器相當有用。例如,可能需要先開啟提供基礎結構服務 (如 DNS 或 DHCP) 的虛擬機器電源,再開啟叢集內的其他虛擬機器電源。

主機被隔離或從主要主機劃分,且該主要主機無法使用活動訊號資料存放區來與虛擬機器通訊時,虛擬機器會發生「核心分裂」情況。在這種情況下,主要主機無法判定主機處於運作中狀態,因此會宣告其無作用。然後,主要主機會嘗試重新啟動正在隔離或已劃分的主機上執行的虛擬機器。如果虛擬機器仍在隔離/已劃分的主機上執行,且該主機已在隔離或劃分時遺失虛擬機器資料存放區的存取權限,則此次嘗試將會成功。因為有兩個虛擬機器執行個體,所以會存在核心分裂狀況。然而,僅有一個執行個體可以讀取或寫入虛擬機器的虛擬磁碟。虛擬機器元件保護可用於防止發生這種核心分裂狀況。啟用具有積極設定的 VMCP 時,它可監控已開啟電源之虛擬機器的資料存放區可存取性,並關閉無法存取其資料存放區的虛擬機器。

為了從此情況復原,ESXi 會針對已遺失磁碟鎖定的虛擬機器產生一個問題,關於主機何時脫離隔離狀態且無法重新取得磁碟鎖定。vSphere HA 會自動回答該問題,這會使已遺失磁碟鎖定的虛擬機器執行個體關閉電源,只留下具有磁碟鎖定的執行個體。

適用於虛擬機器重新啟動的考量因素

發生故障後,叢集的主要主機會透過識別可開啟受影響虛擬機器電源的主機來嘗試重新啟動這些虛擬機器。選擇此類主機時,主要主機會考量多種因素。

檔案可存取性

必須可從其中一個作用中叢集主機 (主要主機可以透過網路與該主機通訊) 存取虛擬機器的檔案,才可以啟動該虛擬機器。

虛擬機器和主機相容性

如果存在可存取的主機,則虛擬機器必須至少與其中一個主機相容。為虛擬機器設定的相容性包括任意所需虛擬機器-主機相似性規則的效果。例如,如果某個規則僅允許虛擬機器在兩台主機上執行,則會考慮將此規則置於這兩台主機上。

資源保留

在可以執行虛擬機器的主機之中,至少有一個主機必須擁有足夠的未保留容量來因應虛擬機器的記憶體額外負荷以及任意資源保留需求。會考慮以下四種類型的保留:CPU、記憶體、vNIC 以及虛擬 Flash。此外,必須有足夠的網路連接埠可供開啟虛擬機器電源。

主機限制

除資源保留外,虛擬機器僅可置於主機上,前提是執行此操作不會違反允許的虛擬機器數目上限或使用中 vCPU 的數目。

功能限制

如果已設定的進階選項要求 vSphere HA 強制執行虛擬機器-虛擬機器反相似性規則,則 vSphere HA 不會違反此規則。此外,vSphere HA 也不會違反容錯虛擬機器的任何已設定的每台主機限制。

如果沒有主機能滿足上述考量事項,則主要主機會發出一個事件來說明沒有足夠的資源供 vSphere HA 啟動虛擬機器,並會在叢集狀況變更後再試一次。例如,如果虛擬機器無法存取,則主要主機會在檔案可存取性變更後再試一次。

虛擬機器重新啟動嘗試的限制

如果 vSphere HA 主要代理程式嘗試重新啟動虛擬機器,其中涉及登錄虛擬機器並開啟虛擬機器的電源,若失敗,則本次重新啟動會在延遲後重試。vSphere HA 會進行最多次的重新啟動嘗試 (依預設為 6 次),但是並非所有的重新啟動失敗都會計入此次數上限。

例如,重新啟動嘗試失敗最有可能的原因是因為虛擬機器仍在另一台主機上執行,或因為虛擬機器發生故障後,vSphere HA 過快地嘗試重新啟動虛擬機器。在這種情況中,主要代理程式會將重試嘗試的延遲,變為上次嘗試後所實施之延遲的兩倍,範圍從最短的 1 分鐘延遲到最長的 30 分鐘延遲。因此,如果將延遲設為 1 分鐘,則初始嘗試為 T=0、然後其他嘗試為 T=1 (1 分鐘)、T=3 (3 分鐘)、T=7 (7 分鐘)、T=15 (15 分鐘) 以及 T=30 (30 分鐘)。每次這類嘗試都會計入限制,依預設,僅進行六次嘗試。

其他重新啟動失敗會導致可數的重試,但是使用不同的延遲間隔。有這樣一個範例案例:主要代理程式做出選擇之後,被選擇來重新啟動虛擬機器的主機會無法存取其中一個虛擬機器資料存放區。在此情況下,會在預設的 2 分鐘延遲後嘗試重試。此次嘗試也會計入限制。

最終,部分重試不會被計數。例如,主要代理程式發出重新啟動申請前,如果要在其上重新啟動虛擬機器的主機發生故障,則會在 2 分鐘後重試嘗試,但是此故障不會計入嘗試的次數上限。

虛擬機器重新啟動通知

叢集中虛擬機器的容錯移轉作業在進行中時,vSphere HA 會產生叢集事件。該事件也會顯示叢集摘要索引標籤中的組態問題,該索引標籤會報告正在重新啟動的虛擬機器數目。此類虛擬機器具有四種不同類別。

  • 正在放置的虛擬機器:vSphere HA 正嘗試重新啟動這些虛擬機器

  • 等待重試的虛擬機器:先前的重新啟動嘗試失敗,且 vSphere HA 正在等待再次嘗試前的逾時到期。

  • 需要其他資源的虛擬機器:可用於重新啟動這些虛擬機器的資源不足。更多資源可用時 (例如,主機重新上線),vSphere HA 將重試。

  • 無法存取的 Virtual SAN 虛擬機器:vSphere HA 無法重新啟動這些 Virtual SAN 虛擬機器,因為它們是無法存取的。可存取性發生變更時,它會重試。

每當觀察到正在進行重新啟動作業之虛擬機器的數目發生變更時,這些虛擬機器計數就會動態更新。vSphere HA 已重新啟動所有虛擬機器或已放棄嘗試時,會清除組態問題。

在 vSphere 5.5 或更早版本中,嘗試重新啟動虛擬機器失敗會觸發每個虛擬機器事件。依預設 vSphere 6.x 中會停用此事件,可透過將 vSphere HA 進階選項das.config.fdm.reportfailoverfailevent 設為 1 來啟用此事件。