故障轉(zhuǎn)移群集的Hyper-V放置策略
Windows Server 故障轉(zhuǎn)移群集為 Hyper-V 基礎(chǔ)架構(gòu)提供了一個至關(guān)重要的技術(shù),不僅可以提供可用性,而且可以提供可移植性。虛擬化和私有云環(huán)境的一個重要概念在于破除負(fù)載與底層物理資源之間的捆綁關(guān)系,而故障轉(zhuǎn)移群集通過使用實時遷移技術(shù)在不同物理宿主機之間不停機移動和放置虛擬機,真正實現(xiàn)了這一點。這里將提供一些有關(guān)放置的***實踐,幫您對群集上使用的不同 Hyper-V 場景進行優(yōu)化。
默認(rèn)故障轉(zhuǎn)移策略
如果有節(jié)點遇到故障,虛擬機將被分散到其他群集節(jié)點上。在老版本 Windows Server 中,任何資源都可以分散到承載虛擬機數(shù)量最少的群集節(jié)點中。在 Windows Server 2012 中,這種邏輯進行了改進,可以根據(jù)宿主機的內(nèi)存數(shù)量這一最常見的約束性資源,決定虛擬機的分散方式。每個虛擬機都可以放置到空閑內(nèi)存資源最多的節(jié)點中,并且會針對每個虛擬機的資源需求進行評估,例如檢查虛擬機是否支持 NUMA。
如果承載多個虛擬機的群集節(jié)點崩潰,群集服務(wù)將尋找優(yōu)先級***的虛擬機,然后檢查其他所有節(jié)點,確定擁有空閑內(nèi)存最多的節(jié)點。隨后會在這個節(jié)點上啟動該虛擬機。這個過程可以針對所有虛擬機重復(fù)進行,從優(yōu)先級***的虛擬機開始按照優(yōu)先級高低執(zhí)行,直到所有虛擬機都重新放置。
虛擬機優(yōu)先級
在 Windows Server 2012 中,群集中運行的每個虛擬機都可以分配優(yōu)先級:高、中,或低。這樣即可確保在群集運行中,高優(yōu)先級的虛擬機可以得到最妥善的放置。同時通過使用這種方式可以確保組織最重要的服務(wù)或最關(guān)鍵的基礎(chǔ)架構(gòu)角色可比其他不那么重要的負(fù)載更快速的上線。
如果承載多個虛擬機的群集節(jié)點崩潰,那么首先將啟動高優(yōu)先級虛擬機,隨后是中等優(yōu)先級虛擬機,***才是低優(yōu)先級的。相同的邏輯還將應(yīng)用于其他群集的運營,例如并發(fā)實時遷移或節(jié)點維護模式,這種情況下優(yōu)先級高的虛擬機總是可以首先移動。
***的所有者
從老版本 Windows Server 開始,就可以針對每個虛擬機配置故障轉(zhuǎn)移節(jié)點順序***項。如果環(huán)境要求某些重要的虛擬機必須留在某些節(jié)點上,這一特性就顯得非常有用。例如,通常虛擬機都需要盡量留在主要數(shù)據(jù)中心(***所有者)內(nèi)運行,只有在主要站點不可用時,虛擬機才在備份數(shù)據(jù)中心內(nèi)運行,實現(xiàn)災(zāi)難恢復(fù)。
如果承載了多個虛擬機的群集節(jié)點崩潰,高優(yōu)先級虛擬機會嘗試移動到***所有者列表中的***個節(jié)點。如果該節(jié)點不可用,那么虛擬機會繼續(xù)嘗試移動到***所有者列表中的下一個節(jié)點。如果所有***所有者都不可用,那么就會移動到可能的所有者列表中的***個節(jié)點。
可能的所有者
在老版本 Windows 中,每個虛擬機還有可能的所有者設(shè)置。該設(shè)置使得虛擬機可以在不存在可用***所有者的情況下也能移動到其他群集節(jié)點并啟動。某些環(huán)境要求就算沒有可用的***所有者,也要在其他宿主機上運行虛擬機,此時這個功能就變得非常有用。在多站點群集中,位于備份站點的宿主機可以分配為可能的所有者,但不能作為***所有者。在這樣的場景中,只有主站點沒有可用的節(jié)點(***所有者)的情況下,虛擬機才會故障轉(zhuǎn)移到輔助站點。
如果承載了多個虛擬機的群集節(jié)點崩潰,高優(yōu)先級虛擬機會嘗試移動到***所有者列表中的***個節(jié)點。如果所有***所有者都不可用,那么就會移動到可能的所有者列表中的***個節(jié)點。如果可能的所有者列表中的***個節(jié)點不可用,則會移動到列表中的下一個節(jié)點。如果***所有者和可能的所有者列表中都沒有可用節(jié)點,虛擬機將會移動到任何其他節(jié)點,但保持離線狀態(tài)。取決于故障回復(fù)策略,只要相應(yīng)節(jié)點變得可用,虛擬機還可以重新回到***所有者或可能的所有者,然后嘗試啟動。
故障恢復(fù)
在 Windows Server 2012 中,每個虛擬機還有一個選項非常重要,可以將虛擬機重新移動到***所有者或可能的所有者,并從最***的所有者嘗試啟動。如果希望確保將某些虛擬機保留到相同宿主機上,并且在從崩潰中恢復(fù)后重新將這些虛擬機移動到這些宿主機中,該功能就非常有用。
如果群集節(jié)點從崩潰中恢復(fù),并重新加入群集關(guān)系,那么任何沒有在***所有者上運行的虛擬機都將可以獲得通知,該節(jié)點已經(jīng)可用于進行放置。該過程首先從可能的所有者上運行的優(yōu)先級***的虛擬機(或者位于其他節(jié)點上的離線虛擬機)開始,每個虛擬機都將判斷該節(jié)點是否是***宿主機,隨后在自己的***所有者上執(zhí)行實時遷移(或啟動操作)。
保持模式
在高度虛擬化的環(huán)境中還會遇到一個問題:“引導(dǎo)風(fēng)暴”,如果同時啟動大量虛擬機就容易遇到這種問題。虛擬機的啟動要比標(biāo)準(zhǔn)的正常運行狀態(tài)需要更多宿主機資源,因此啟動大量虛擬機有時候可能會使得宿主機過載,影響宿主機的性能,甚至導(dǎo)致宿主機崩潰(如果某些宿主機沒有設(shè)置資源保留就可能出現(xiàn)在這種情況)。作為一項安全措施,在故障轉(zhuǎn)移或節(jié)點重啟動過程中,并發(fā)啟動的虛擬機數(shù)量會受到限制(高優(yōu)先級的首先啟動),其他虛擬機會在隊列中等待啟動。就算這些虛擬機是在同時啟動,依然會分階段錯峰進行,以確保不會對宿主機造成太大壓力。此外還可以通過配置一些選項避免遇到“引導(dǎo)風(fēng)暴”。
保持模式最早出現(xiàn)在 Windows Server 2008 R2 中,可以讓虛擬機保留在***一次刻意放置(可能是由系統(tǒng)管理員決定的,或者 System Center Virtual Machine Manager 的放置策略決定的)后所分配的宿主機上。如果整個群集崩潰,每個虛擬機都會等待之前自己所在節(jié)點上線,然后開始啟動。當(dāng)然這個過程也是高優(yōu)先級虛擬機首先開始。這樣既可防止整個群集的所有虛擬機試圖在上線的***個節(jié)點上啟動,有助于避免“引導(dǎo)風(fēng)暴”。群集服務(wù)將等待一個默認(rèn)設(shè)置的時間段,等待原始節(jié)點重新加入群集。如果節(jié)點在這個時間段內(nèi)沒有加入群集,虛擬機會被放置到最***的所有者上,這樣既可確保虛擬機依然可以上線,同時使得新宿主機有機會首先啟動自己的虛擬機。
自動啟動
有些時候,如果群集故障轉(zhuǎn)移或崩潰,我們可能會希望某些不重要的虛擬機先不要啟動,這樣其他虛擬機就有更多機會進行故障轉(zhuǎn)移,并盡可能快速地上線。老版本 Windows Server 就具備自動啟動屬性,如果該屬性被禁用,虛擬機在放置到節(jié)點上之后將不能自動啟動。
在高度虛擬化的環(huán)境中,這一特性會顯得非常有用,因為必須確保宿主機和關(guān)鍵的基礎(chǔ)架構(gòu)虛擬機能夠正常運行,不用擔(dān)心這些群集中承載的并不需要持續(xù)可用的虛擬機所造成的資源約束或“引導(dǎo)風(fēng)暴”。這些虛擬機可以稍后由管理員或自動化腳本啟動。
Anti-Affinity
Windows Server 2012 之前就已存在最終放置策略,但主要考慮的是其他虛擬機,而非宿主機。群集屬性 AntiAffinityClassName(AACN)使得您可以對虛擬機添加自定義的標(biāo)簽,這樣不同虛擬機就可以共享或使用不同的 AACN。共享同一個 AACN 的虛擬機可以自動將其分散到不同的宿主機。這樣有助于在同一套基礎(chǔ)架構(gòu)角色中跨越群集中的不同節(jié)點對租戶或虛擬機進行隔離。例如,讓所有虛擬化的 DNS 服務(wù)器或來賓群集節(jié)點位于同一臺宿主機上,一旦該節(jié)點崩潰就會造成單點故障,因此將這些虛擬機分散在不同的宿主機上,有助于為服務(wù)提供持續(xù)可用性。
假設(shè)有一個包含四個節(jié)點和四個虛擬機的群集,每個虛擬機的 AntiAffinityClass-Name 都設(shè)置為“藍色”,那么默認(rèn)情況下,每個節(jié)點都可以承載“藍色”虛擬機。如果使用相同 AACN 的“藍色”虛擬機的數(shù)量超過群集中的節(jié)點總數(shù),那么每個節(jié)點上就可能有超過一個“藍色”虛擬機,但這些虛擬機依然會盡可能保持更廣泛的平均分散。
結(jié)論
通過使用這些策略,就可以對 Windows Server 2012 故障轉(zhuǎn)移群集中的虛擬機放置進行優(yōu)化。永遠要記得為虛擬機配置優(yōu)先級,這樣高優(yōu)先級虛擬機就可以優(yōu)先放置,此外還要考慮如果任何節(jié)點變?yōu)椴豢捎茫摂M機將用怎樣的方式進行放置。