虛擬化

實現 Hyper-V 高可用性

Steven Ekren

 

綜覽:

  • 使用 Hyper-V 彚總伺服器
  • 確保虛擬機器的高可用性
  • 設定 Windows Server 2008 容錯移轉

目錄

高可用性
主機和來賓
來賓可用性
使 VM 高度可用
先決條件
HA 逐步解說
考量因素

伺服器虛擬化已蓄勢待發,準備在企業 IT 部門掀起軒然大波,而 Hyper-V 與 Windows Server 2008 將助它一臂之力。將伺服器彚總成少數實體機器,在資源和成本方面都有相當大的好處,但在規劃過程中必須考量兩個要素。使用者對軟體可用性的期望是越來越高,包括企業營運 (LOB) 應用程式和工具 (例如訊息和共同作業平台)。另外,伺服器上的問題或失敗對操作所造成的衝擊可能更大。Windows Server 2008 和 Hyper-V 提供的解決方案,可實作用來提供虛擬機器 (VM) 的高可用性 (HA),也可以實作到 VM 內部主控的工作負載。

高可用性

可用性意謂著使用者可存取系統來進行他們的工作。而高可用性,則代表使用者永遠都可以存取系統的高度期望,因為它正是針對確保操作持續性而設計和實作的。

Hyper-V 的高可用性是藉由使用 Windows Server 2008 容錯移轉叢集功能來達成的。高可用性同時受計畫中和意外的停機所影響,而容錯移轉叢集化可大幅提高這兩種範疇內的虛擬機器可用性。

虛擬機器可由容錯移轉叢集管理,而容錯移轉叢集可用在虛擬機器內監視和移動 VM 中主控的工作負載。這兩種設定案例我都會詳細說明,但本文主要是討論管理虛擬機器。然而,在您開始之前,不妨瞧瞧「實用的 Hyper-V 專有名詞」資訊看板。

主機和來賓

因為在 Hyper-V 系統上執行的作業系統不只一個,要搞清楚討論的是哪一層或哪個 OS 可能頗具挑戰性。我用「來賓」一詞來指 Hyper-V VM 內在子磁碟分割中執行的 OS 和環境,而用「主機」一詞來指實體機器,也就是在 Hyper-V 父磁碟分割上由 OS 管理的機器。

主機可用性可解決隨著伺服器彚總導致「把雞蛋全放在同一個籃子裡」案例可能引起的問題。Hyper-V 父磁碟分割 (主機) 上可設定 Windows Server 2008 容錯移轉叢集,以便監視 Hyper-V 子磁碟分割 (虛擬機器或來賓) 的健康狀態,並且讓它們在叢集的節點之間移動。這項設定具備下列主要優點:

  • 如果執行 Hyper-V 和 VM 的實體機器需要更新、變更或重新啟動,那麼可以將 VM 移到叢集的其他節點。一旦實體機器恢復服務,即可將 VM 移回。
  • 如果執行 Hyper-V 和 VM 的實體機器失敗了 (或許是主機板失敗) 或效能大幅降級,Windows 容錯移轉叢集的其他成員將接下 VM 的擁有權,並自動將它們帶上線。
  • VM 若失敗,可在相同的 Hyper-V 伺服器上重新啟動,或移到其他 Hyper-V 伺服器。這是由 Windows Server 容錯移轉叢集偵測出來的,因此它也會根據 VM 的資源屬性內的設定自動採取復原步驟。停機也因偵測和復原的自動化而盡可能減少。

[圖 1] 呈現在這類的情況下可能發生的事情。首先,VM2 是常駐在主機 A 上,然後被移到主機 B。請注意擁有 SAN 存放裝置 LUN 2 的節點在這項移動作業期間從主機 A 變更為主機 B。為了確保您的高可用性解決方案可滿足您的可用性需要,請審慎考慮放置 VM 的位置。您必須同時考量容量和效能。

fig01.gif

[圖 1] 虛擬機器與其存放裝置移到新主機 (按一下以放大影像)

節點的容量應該足以主控所有 VM,並允許 x 數目的節點失敗或離開作用中的叢集 (X 表示您希望叢集可接受失去但仍舊能夠主控所有 VM 的節點數量)。在決定容量時,您可以選擇保留一些節點,不讓它們定期裝載 VM。或者,您可以選擇將 VM 散置在所有節點間,確保各個節點都有足夠的額外容量,以便在有任何 x 數目的節點失敗時,順利接掌擁有權並啟動 VM。

基於日常效能的理由,將 VM 散置在叢集的所有節點間可能比較恰當。如果節點被保留起來而且沒有主控任何 VM,那麼主控 VM 的節點會使用更多的資源,而這可能會降低 VM 以及管理磁碟分割的效能。將 VM 散置在節點間可減輕每個節點的負載,而且可為 VM 和管理磁碟分割提供較佳的效能。不過,它也可能使容量規劃更具挑戰性。在這方面,管理軟體 (例如 System Center Virtual Machine Manager 2008) 可提供節點失敗和 VM 配置的預估容量來助您一臂之力。

來賓可用性

來賓可用性主要是要讓在 VM 內部執行的工作負載高度可用。常見的工作負載包括檔案和列印伺服器、IIS 和 LOB 應用程式。針對 VM 內部的工作負載分析高可用性的需求和解決方案,跟在獨立伺服器上進行分析沒什麼太大的差別。解決方案將視特定的工作負載而定。

有些工作負載可透過 Windows 網路負載平衡 (NLB) 達到高可用性,這允許多部伺服器成為具有共同網路名稱的集區的一部分。用戶端可使用虛擬網路名稱提出連線要求,而連線會連接到 NLB 叢集的其中一個節點。使用 NLB 叢集的典型案例是使用 IIS 建置 Web 伺服陣列,當中各個系統的 IIS 都有相同的網頁,並存取相同的資料。NLB 除了提供負載平衡之外,也提供移除伺服器成員資格以利維護,或是在伺服器發生問題時移除伺服器成員資格的功能,因而提供某種程度的高可用性。如果 Hyper-V VM 是執行 Windows Server 2008 (或是包含 NLB 的舊版 Windows Server),那麼來賓可以與相同或不同 Hyper-V 主機上的其他來賓同為 NLB 叢集的成員。

執行 Windows Server 2008 的來賓可使用 Windows 容錯移轉叢集功能,為它們的工作負載提供高可用性。在來賓內使用 Windows 容錯移轉叢集 (來賓叢集化) 有幾個優點:

工作負載狀況監控 Windows 容錯移轉叢集有個資源監視器可呼叫叢集相關的資源 DLL。每項資源都有狀況監控會測試該資源所管理的應用程式或服務,以確保它的運作正確無誤。這些檢查一般稱為 isAlive/looksAlive 檢查。如果資源無法完成其中一個呼叫,該資源本身也會失敗。視資源的屬性而定,資源可能會嘗試重新啟動服務或應用程式,或者可能會被移到 Windows 容錯移轉叢集的其他節點。

虛擬機器維護 若是 VM 的設定需要變更,或是 OS 或軟體需要更新或變更,可將工作負載移到叢集的其他節點,而 VM 會關機或是在盡可能不中斷使用者的情況下進行更新。

主機維護 假如主控 Hyper-V VM 的實體機器需要維護或是軟體更新,而 Windows 容錯移轉叢集的其他成員位於不同的 Hyper-V 主機上,可以將 VM 中的工作負載移到叢集的其他節點,並將該 VM 關機以配合實體伺服器的變更或重新開機。

虛擬機器或主機失敗 實體 Hyper-V 主機或虛擬機器來賓若產生失敗,Windows 容錯移轉叢集的其他節點會偵測到該叢集成員已不再回應或參與叢集,而繼續存在的節點會將失敗 VM 上執行的應用程式或服務帶上線。

實用的 Hyper-V 專有名詞

以下專有名詞列表有助於定義高度可用的 Hyper-V 系統 (主機叢集) 元件或功能。

父磁碟分割 在 Hypervisor 伺服器上執行的所有作業系統都有配置的硬體資源,包括 RAM、CPU 和其他系統元件。在 Hyper-V 中,管理 Hypervisor 的設定和系統資源的磁碟分割通常稱為父磁碟分割。當設定好 Hyper-V 角色,而且伺服器也重新開機之後,在系統上為原生 OS 的 Windows Server 2008 安裝遂變成 Hyper-V 伺服器的父磁碟分割中的 OS。

子磁碟分割 Hyper-V 伺服器上設定成存放虛擬作業系統以及提供硬體資源給該作業系統的隔離環境。

Hyper-V 主機 主控 Hyper-V 以及在父磁碟分割內執行的作業系統的實體伺服器。

Hyper-V 虛擬機器 Hyper-V 設定資訊和用來啟動和執行 Hyper-V 子磁碟分割的資料。這包括用來建立子磁碟分割和 VHD 檔案或穿透包含其資料之磁碟的設定資訊。

穿透式磁碟 在 [磁碟管理] 中公開成實體磁碟,並指定由 Hyper-V 來賓專用的存放裝置。Hyper-V 來賓會掛接磁碟,並將它當作本機連線的存放裝置一樣使用。

虛擬硬碟 (VHD) 由向作業系統公開成存放裝置 (磁碟) 的 Hyper-V 子磁碟分割連接的檔案。.vhd 檔案是位在由父磁碟分割掛接的存放裝置上,而且可以作為直接連接的存放裝置,或作為透過 SAN、NAS 或 SMB 連接的存放裝置。

使 VM 高度可用

要將虛擬機器設為高度可用很簡單,只要在 [容錯移轉叢集管理] 下完成「HA 角色精靈」就行了。Hyper-V 虛擬機器有幾個重要的元件在管理成高度可用時,需要特別列入考量。讓我們來看看一些重要的概念和一般的先決條件。

容錯移轉叢集節點 屬於容錯移轉叢集一部分的每一部實體伺服器都稱為節點。對於主機叢集化,容錯移轉叢集服務是在 Hyper-V 系統的父磁碟分割上的 Windows Server 2003 中執行。這可讓在相同實體伺服器上的子磁碟分割內執行的 VM 被設定成高度可用的虛擬機器。針對 HA 設定的虛擬機器將會在 [容錯移轉叢集管理] 主控台中顯示為資源。

HA 存放裝置 您可將高度可用的虛擬機器設定成使用虛擬硬碟 (VHD)、穿透式磁碟和差異磁碟。為了讓虛擬機器能夠在容錯移轉叢集節點之間移動,需要有存放裝置 (在 [磁碟管理] 中顯示為磁碟) 供任何可能主控 VM 而且由容錯移轉叢集服務管理的節點存取。穿透式磁碟應該作為磁碟資源新增到容錯移轉叢集中,而 VHD 檔案必須位於作為磁碟資源新增到容錯移轉叢集的磁碟上。

虛擬機器資源 這是代表虛擬機器的容錯移轉叢集資源類型。當虛擬機器資源上線時,Hyper-V 便會建立子磁碟分割,並且會啟動虛擬機器中的 OS。虛擬機器資源的離線功能會在主控 VM 的節點上將它從 Hyper-V 中移除,而且子磁碟分割也會從 Hyper-V 主機移除。若虛擬機器關機,停止或置於儲存狀態,這項資源將被置於離線狀態。

虛擬機器設定資源 這是用來管理 VM 的設定資訊的容錯移轉叢集資源類型。每台虛擬機器都有一項虛擬機器設定資源。這項資源的屬性包括設定檔的路徑,而這個檔案包含將虛擬機器新增到 Hyper-V 主機所需的全部資訊。虛擬機器資源必須存取設定檔才能啟動。由於設定是由不同的資源所管理,因此即使 VM 處於離線狀態,還是可以修改 VM 資源的設定。

虛擬機器服務及應用程式群組 若要透過容錯移轉叢集使服務或應用程式高度可用,相同容錯移轉叢集節點上必須裝載多項資源。為了確保這些資源永遠位於相同的節點上,而且彼此適當交互操作,會將資源放到一個 Windows Server 2008 容錯移轉叢集稱為「服務或應用程式」的群組裡面。VM 的虛擬機器資源和虛擬機器設定資源始終都是位於相同的「服務或應用程式」群組內。「服務或應用程式」群組中也可能有一或多個包含 VHD 或設定檔案或穿透式磁碟的實體磁碟 (或其他存放裝置類型) 資源。

資源依存性 請務必確保在讓虛擬機器資源上線 (啟動) 前,先將虛擬機器設定資源帶上線,而且將虛擬機器資源先帶離線 (停止) 之後,再讓虛擬機器設定資源離線。設定虛擬機器資源的屬性,讓它依賴虛擬機器設定資源,藉此確保此上線/離線的順序。如果有個存放裝置資源包含用於虛擬機器設定資源或虛擬機器資源的檔案,就應該將該資源設為依賴該存放裝置資源。比方說,假如虛擬機器使用磁碟 G: 和磁碟 H: 上的 VHD 檔案,就應該使虛擬機器資源仰賴設定檔資源和磁碟 G: 上及磁碟 H: 上的資源。

先決條件

下面是使用 Windows Server 2008 容錯移轉叢集功能使 Hyper-V 虛擬機器高度可用的三項先決條件:

  1. 必須為叢集的每個節點設定 Windows Server 2008 容錯移轉叢集功能。如需關於設定和管理容錯移轉叢集的詳細資訊,請參閱「Hyper-V 資源」資訊看板。
  2. 必須安裝 Hyper-V 角色。應該針對容錯移轉叢集的每個節點安裝 Hyper-V 更新,以及設定角色 (也請參閱「Hyper-V 資源」資訊看板)。Hyper-V 有個更新套件會安裝 Hyper-V 伺服器元件,還有另一個更新套件會安裝 Hyper-V 管理主控台。一旦為 Hyper-V 伺服器元件安裝好更新之後,就可以透過伺服器管理員或 ServerManagerCMD 新增角色。
  3. 您必須提供共用存放裝置給虛擬機器使用。存放裝置可由容錯移轉叢集當作內建實體磁碟資源類型加以管理,或者您可以使用協力廠商解決方案來管理共用存放裝置。當然啦,協力廠商解決方案必須支援 Windows Server 2008 容錯移轉叢集才行。

HA 逐步解說

現在讓我們來看看高可用性解決方案要怎麼設定。第一步是設定虛擬機器,在裝有 Hyper-V 角色的容錯移轉叢集的其中一個節點上,使用 Hyper-V 管理員設定一台虛擬機器 (見 [圖 2])。這可以是手動設定的新 VM,或者您可以匯入現有的 VM。VHD 應該位在 Windows Server 2008 容錯移轉叢集所管理,而且目前在設定 VM 的節點上是處於線上狀態的磁碟上。

fig02.gif

[圖 2] 設定虛擬機器 (按一下以放大影像)

現在把虛擬機器置於停止狀態,方法是將它關機、關閉或儲存狀態。唯有處於停止狀態的虛擬機器才能設定由容錯移轉叢集管理。

在執行 Windows Server 2008 容錯移轉叢集角色的任何伺服器上,或是在執行遠端伺服器管理工具 (RSAT) 的 Windows Vista 用戶端上開啟 [容錯移轉叢集管理] 主控台 (如 [圖 3] 所示)。連接到容錯移轉叢集,方法是選取 [管理叢集...] 動作,然後選取一個節點或叢集名稱,或是選取在執行主控台的節點上連接到叢集的選項。

fig03.gif

[圖 3] 容錯移轉叢集管理中的虛擬機器 (按一下以放大影像)

從 [容錯移轉叢集管理] 主控台,選取 [設定服務或應用程式...] 動作。這會開啟「高可用性精靈」,這個精靈會帶您完成設定要由容錯移轉叢集管理的服務、應用程式或虛擬機器。在精靈的 [選取服務或應用程式] 頁上,選取 [虛擬機器],然後選取 [下一步]。

[選取虛擬機器] 頁會顯示在容錯移轉叢集的任何節點上設定的所有虛擬機器。選取一台虛擬機器,再選取 [下一步]。精靈的 [設定] 頁將顯示任何警告或錯誤。在這個步驟中,會檢查虛擬機器設定,以確認可以將它設定成 HA 資源,而且節點應該能夠裝載它。在此處選取 [下一步] 會將虛擬機器作為高度可用資源新增到容錯移轉叢集。

[摘要] 頁提供了將虛擬機器新增為高度可用資源的相關結果,包括任何警告。[檢視報告…] 按鈕會向您顯示讓虛擬機器高度可用所進行的工作的詳細資料,以及任何警告或錯誤。最後,選取 [完成] 來關閉「高可用性精靈」。

[圖 3] 中的視窗所示,[容錯移轉叢集管理] 主控台會將具有預設名稱 Virtual Machine(x) 的物件列在左窗格中的叢集名稱和 [服務或應用程式] 下方。從樹狀結構選取虛擬機器,屬於該「服務或應用程式」群組的資源便會顯示在主控台的中間窗格中。如果有任何其他虛擬機器的檔案同樣位於所選虛擬機器的存放裝置上,那麼也會將它新增到群組中。對於每台放入群組的虛擬機器,都會顯示虛擬機器和虛擬機器設定資源。

「服務或應用程式」群組的資訊窗格會顯示該群組的 [狀態]、[警示]、[慣用擁有者] 和 [目前擁有者] 資訊。[擁有者] 節點是目前設定或執行的虛擬機器所在的節點。選取 [將虛擬機器移到其他節點 (Move Virtual Machine(s) to another node)] 動作,將虛擬機器帶離線,然後在另外一個節點上帶上線。一般最佳的作法是,將 VM 移到容錯移轉叢集中可以主控它的各個節點,來確認該項移動作業進行順利,而且 VM 可以啟動和執行。

Hyper-V 資源

考量因素

以下是在設定虛擬機器的高可用性時,需謹記在心的一些重點:

存放裝置 如果虛擬機器在相同的共用磁碟上含有 VHD 檔案,那麼即使它們是位於相同磁碟的不同磁碟區上,還是會被放在相同的「服務或應用程式」群組中。共用磁碟的優點之一,就是它能更妥善地利用可用的共用存放空間。

然而,需要取捨的是,虛擬機器每次一經移動,無論是因為虛擬機器發生問題而自動復原,還是因為系統管理員選擇這麼做,群組當中所有的虛擬機器都會跟著一起移動。

磁碟機代號和 GUID 您可以不指定磁碟機代號來建立磁碟區。虛擬機器還是可以使用這些磁碟區,而磁碟區可由容錯移轉叢集來管理。如果磁碟資源擁有的磁碟區使用的是 GUID 而不是磁碟機代號,則該 GUID 會顯示在 [叢集管理] 中。當您建立虛擬機器並為 VHD 指定路徑時,請務必確定路徑中的 GUID 與該磁碟區顯示在 [叢集管理] 中的 GUID 相符。如果不符,虛擬機器可能無法在容錯移轉叢集的其他節點上順利啟動 (上線)。

有幾種情況可能會導致 GUID 不符。若磁碟區是在節點當作容錯移轉叢集管理的磁碟資源新增之前被帶上線,該磁碟區在每個節點上便可能具有不同的 GUID。磁碟區也可能在單一節點上擁有多個 GUID。當把磁碟當作實體磁碟資源新增到容錯移轉叢集時,在磁碟處於線上狀態的節點上所使用的磁碟區 GUID 會在磁碟資源的屬性內註明。

磁碟區的 GUID 會在磁碟資源帶上線時新增到節點。這可確保容錯移轉叢集為磁碟區註明的特定 GUID 在帶磁碟上線的任何節點上,都是有效的路徑。該節點可能擁有其他也與相同磁碟區相關聯的 GUID。因此,使用者可能會在該節點上找到對磁碟區來說有效的 GUID,但它並不是容錯移轉叢集確定可用在其他節點上的磁碟區的同一個 GUID。這個問題的徵兆是虛擬機器資源 (通常是設定資源) 無法上線,並且會顯示錯誤訊息來指出路徑是無效的。錯誤訊息中的路徑顯示的是 GUID 並不是叢集為磁碟區管理的 GUID。

掛接點 掛接到其他磁碟區中的資料夾,而不是指定磁碟機代號或使用 GUID 的磁碟區,可與 Hyper-V 和容錯移轉叢集搭配使用。由於掛接的磁碟區與主控掛接點的磁碟區兩者都必須位在相同的容錯移轉叢集節點上,因此您必須讓屬於掛接點一部份的所有磁碟都位於相同的容錯移轉叢集「服務或應用程式」群組內。

假如磁碟區都位在相同的磁碟上,這很顯然並不構成問題。然而,要是磁碟區位在不同的磁碟上,肯定會造成問題。同樣很明顯但還是值得一提的是,掛接的磁碟區與掛接點的主機兩者都必須是設定為受容錯移轉叢集管理的共用存放裝置。

差異磁碟 屬於差異磁碟一部分的所有 VHD 檔案在「服務或應用程式」群組中都必須位在與使用差異磁碟的 VM 一樣的共用存放裝置上。設定最簡單的差異磁碟有兩個 VHD。一個 VHD 是父代,並且擁有一組用作為基底的資料。另一個 VHD 是與父代相關聯的子代。

差異磁碟在初次使用時看起來就像父代一樣。如果資料是位在父代,就會從該 VHD 讀取。所有的寫入作業都是發生在子代 VHD 上。假如資料是位在子代上,那麼對該資料的讀取作業會參考子代 VHD。

若 VM 因某種原因而設定成讓子代 VHD 位在共用存放裝置上,但父代 VHD 卻不在相同群組的共用存放裝置上,也不位在從本機連接的存放裝置上,那麼 VM 在被移到其他節點後將無法啟動 (上線)。「高可用性精靈」應該檢查以確保這在 VM 的設定正確,並且在偵測到這個問題時提供錯誤訊息,但要特別注意變更 VM 設定的情況下的需求。

Steven Ekren 在 Windows Server 容錯移轉叢集和高可用性小組擔任資深專案經理一職。Steven 在 Microsoft 技術支援投入了 12 年的時間,協助企業客戶實作和疑難排解 Windows Server 容錯移轉叢集與虛擬化技術,包括 Windows Hyper-V、System Center Virtual Machine Manager、Microsoft Virtual Server 和 Microsoft Virtual PC。