RSS訂閱

2012年12月15日 星期六

建立Hyper-V 3.0容錯移轉叢集 (Setup Hyper-V 3.0 Failover Cluster)

新一代Windows Server 2012作業系統設計的主要目的之一在於提供企業私有雲的應用平台,而Hyper-V伺服器虛擬化功能扮演雲端基礎結構的重要角色,依照微軟目前的規劃,以Windows Server 2012作業系統為雲端平台,建置容錯移轉叢集的 Hyper-V伺服服務做為私有雲基礎架構,再搭配System Center 系統產品(特別是SCVMM)提供管理架構與工具 ,因此如何正確有效的整合Windows Server 2012的Hyper-V角色、容錯移轉叢集和Sytem Center VMM就成為了Windows系統上雲端虛擬化環境最要的課題之一。

hvcluster

本文並不涉及System Center相關的管理系統及產品介紹及使用,純就建立Windows Server 2012容錯移轉Hyper-V叢集的實務面來加以探討,說明IT人員如何建置Windows Server 2012 Hyper-V 容錯移轉叢集的步驟和相關注意事項。

Windows Server 2012 Hyper-V即時移轉(Live Migration)

就企業虛擬化的品質要求而言,Hyper-V是否具備高效能、高可用性(High Availability)、高度移植行動力與延展性(Scalability)能力是相當重要的,而其中高移植行動更是雲端服務在多租戶用戶環境運作下所必需具備的靈活彈性,IT人員在先前的Windows Server 2008 R2 系統中若想要建立高度可用性的Hyper-V 伺服器,其主要技術無非是即時移轉(Live Migration),而且需要在容錯移轉叢集架構並使用共用磁碟區,但Windows Server 2012 Hyper-V R3的即時移轉一詞已被賦予更廣泛、更多類型以及以及最小的條件限制的能力,換言之,Windows Server 2012可以支援多種方式來將正在執行中的虛擬機器移轉至另一部主機或存放區,因此Windows Server 2012的提供了多種即時移轉的情境,其主要的差別在於是否有共用存放區或採用叢集技術:

  • 無共用即時移轉 (Shared Nothing Live Migration)
  • 儲存即時移轉 (Storage Live Migration)
  • SMB共用即時移轉 (SMB share Live Migration)
  • 容錯移轉叢集內即時移轉 (Live Migration within Failover Cluster)
  • 容錯移轉叢集間即時移轉 (Live Migration between Failover Cluster)

但若企業想要同兼時兼顧移植與高可用性能力,亦即要在最小停擺時間移轉虛擬機器以達到近乎無中斷時間的移轉,還是得藉助叢集技術,所以建立容錯移轉叢集的Hyper-V伺服器仍是目前Hyper-V 3.0達成企業高度可用性虛擬化服務的首要選擇,亦即在高度可用性不中斷服務的要求條件下,您仍需要將Hyper-V伺服器的虛擬機器建立於容錯移轉叢集內並利用叢集共用磁碟區存放VHDX檔,此種整合方式無非是要利用容錯移轉的機制來提供高度可用性的虛擬化環境,若能夠再有效的搭配其它的無叢集的即時移轉能力,Windows Server 2012 Hyper-V伺服器的可靠性和移植靈彈性將足夠滿足企業雲端運算環境的要求。

Windows Server 2012 的容錯移轉叢集

由於indows Server 2012的容錯移轉叢集具有下列的功能特性與優點,因此讓它可以提供一個比過往來得更理想的Hyper-V虛擬化環境:

  • 高度延展性(High Scalability) 
    • 可建立高達64節點的叢集
    • 叢集內可建立高達4000虛擬機器
      • 主機上可建立高達1024個虛擬機器
      • 每個主機可用高達4TB記憶體
  • 叢集虛擬機器監控 (Cluster VM Monitoring)
    當您在叢集內執行Hyper-V虛擬機器時,可以使用一項虛擬機器監控的新功能,這項監控功能可以讓您經由定期健康檢查機制來監控虛擬機器內的特定網路服務,一旦發現服務有問題將會先被記錄在主機,然後重新啟動VM,如果失敗了將會轉到另一部節點啟動。
    • 叢集認知更新 (Cluster Aware Updating;CAU)
      叢集認知更新是一項持續維護高可用性的叢集伺服器的自動更新機制,讓Hyper-V叢集透過自動即時移轉來逐一更新節點而不會衝擊到可用性。
    • 叢集共用磁碟區 (Cluster Shared Volumes;CSV 2.0)
      叢集共用磁碟區是由Windows Server 2008 R2的容錯移轉叢集首度推出的功能,叢集共用磁碟區是一個包含NTFS磁區的共用磁碟區並且可以讓容錯移轉叢集內的所有節點同時來執行讀寫的存取操作,Windows Server 2012的容錯移轉叢集的CSV可支援更多角色(不單是Hyper-V),更簡單的設定,支援BitLocker磁碟加密功能,整合儲存空間(Storage Space)..等加強功能。
    • 親和性規則與反親和性規則(Affinity and Anti-Affinity Rules)
      虛擬機器的親和性規則與反親和性規則可用來控制虛擬機器如何容錯移轉,親和性規則用以設定某些虛擬機器總是一併容錯移轉,相反的,反親和性規則則是避免某些虛擬機器容錯移轉至相同的節點主機,而一旦發生容錯移轉至負載量過重節點時,利用虛擬機器的優先權(VM prioritization)功能控制虛擬機器啟動的優先順序以及錯誤移轉的順序。
    • 支援新的Powershell cmdlets管理叢集
      支援以命令列的PowerShell cmdlets來管理容錯移轉叢集,您可以利用Get-Command -Module FailoverClusters cmdlet列出所有支援的cmdlets。

    Hyper-V容錯移轉叢集的需求與條件

    建立Hyper-V伺服器叢集需要較複雜的條件與需求,因為系統必需同時符合Hyper-V角色和容錯移轉叢集角色的軟硬體條件,另一方面,通常還得提供額外的共用儲存磁碟,部署一個Hyper-V容錯移轉叢集所需的條件要求如下:

    • 每一個節點最好使用相同版本的作業系統和更新套件,本文範例使用最新版本的Windows Server 2012 Datacenter 版做為架設平台。
    • 每個節點至少需要兩片網路介面卡,一個介面卡用作公用網路可用來做為叢集管理和用戶端連線之用,另一個網路介面則用來作為叢集內部溝通網路,如果使用iSCSI或SAN的共用儲存體,則還需要有第三個藉以連至ISCSI或SAN的網路介面,就專業的考量而言,可更進一步將管理用途網路、即時移轉(Live Migration)網路和Hyper-V虛擬交換器網路獨立出來,以VLAN方式區隔,這時您將需要更多的網路介面。

    • 共用儲存區:常見的用儲存體技術包括了序列連接SCSI(Serial Attached SCSI;SAS)、光纖通道連接儲存體(SAN),以及ISCSI儲存裝置,再加上Hyper-V 3.0可支援檔案基礎(SMB)的儲存區做為合格的共用儲存體(Shared Storage),本文範例基於成本、效率考量採用iSCSI儲存架構與協定,因此共用儲存體均需符合SCSI-3 Model SAM-2的規格,文中將直接採用內建於Windows Server 2012的iSCSI目標服務提供共用儲存磁碟。

    • 欲加入叢集的節點伺服器必須先加入Active Directory 網域,最好是成員伺服器,不建議使用網域控制站來加入叢集。

    Hyper-V 容錯移轉叢集架構設計

    就容錯移轉叢集的架構設計而言可能簡單,也可以很複雜,因為不同叢集用途、目的、支援的角色服務、網路規模、成本預算以及容忍停擺時間的要求不同,其容錯移轉叢集架構設計自然會有所不同,而主要的差異點在於仲裁模式的選用、網路架構設計、共用儲存區架構的設計,大型規模以及雲端環境所使用的叢集,可以設計成多層次叢集架構(Hyper-V伺服器叢集搭配共用檔案暨儲存伺服器叢集),更多專屬的VLAN網段(管理連線、用戶端連線、節點內部、共用儲存區、即時移轉),本文基於簡化說明原則,採用簡單普遍的雙點節點叢集搭配iSCSI的共用儲存區架構,所規劃的容錯移轉叢集的架構圖如下所示:

    foarch

    由圖中規劃的叢集架構可看出,您至少須準備三個不同的網路區段,分別是用來接受用戶端連線用途的公用網路、叢集內部節點Heartbeat使用的內部網路以及連接至共用儲存區的iSCSI網路,一般而言,不同的網路目的應替其建立不同的虛擬區域網路(VLAN)以區隔流量,此外,共用儲存區的選擇考量,基於效能與成本上的考量,不採用昂貴的光纖儲存區域網路(Fiber SAN),也不採用傳統的SMB共用資料夾,而是採用目前軟硬體均可支援且相當普遍的iSCSI儲存架構。

    機器與設備準備工作

    由上圖可知,您需要架設Active Directory網域,二部加入網域的Hyper-V伺服器形成容錯移轉叢集,再加上一部iSCSI目標設備(硬體或軟體模擬均可)。

    ISCSI Target設備或主機
    • Windows Server 2012 作業系統安裝iSCSI目標服務
    • 單一網路卡一片,設定使用iSCSI網段IP
    • 建立數個邏輯磁碟(LUN),建議每個虛擬機器使用獨立的iSCSI LUN。
    網域控制站
    • Windows Server 2012安裝與設定AD網域服務
    • 單一網路介面設定公用網路IP
    叢集伺服器節點
    • 加入Active Directory網域
    • 2部Windows Server 2012 安裝容錯移轉叢集及Hyper-V角色
    • 使用三個網路介面: 
      • 用戶端連線、管理和Hyper-V虛擬交換器網路用途的公用網路介面
      • 叢集節點內部溝通用途的內部網路介面
      • 連接iSCSI 目標的網路介面
    • 為了方便日後遠端管理,請啟動下列功能:
      • 變更 Windows PowerShell 執行原則 (set-executionpolicy restricted)。
      • 啟用 Windows PowerShell 遠端執行功能 (Enable-PSRemoting -Force)
      • 啟用遠端桌面通訊協定(RDP)與防火牆規則
        addroles
        clusternet2A

        foprepare

    建立Hyper-V容錯移轉叢集

    建立Windows Server 2012 Hyper-V容錯移轉叢集的步驟如下:

    1. 規劃與準備作業
      –設定存放裝置(iSCSI、SAN) 、設定叢節點網路、加入網域……
    2. 設定所有Hyper-V伺服器連接iSCSI磁碟並建立磁碟區 (所有節點)
    3. 安裝Hyper-V角色(所有節點)
    4. 安裝容錯移轉叢集功能 (所有節點)
    5. 驗證叢集設定 (叢集內節點之一)
    6. 建立新容錯移轉叢集 (叢集內節點之一)
    7. 檢查叢集的健康狀況 (叢集內節點之一及Active Directory管理工具)
    8. 設定與調整叢集網路和仲裁方式(叢集內節點之一)
    9. 新增叢集共用磁碟區 (叢集內節點之一)
    10. 安裝或移轉虛擬機器於叢集共用磁碟區(叢集內節點之一)
    11. 測試移轉 (叢集內節點之一)

    建立iSCSI目標與虛擬磁碟

    iSCSI 存服務可以是硬體設備也可由軟體模擬程式,而iSCSI模擬軟體可使用付費產品(如starwind)或像本文一樣直接使用內建於Windows Server 2012的iSCSI目標提供虛擬磁碟, 底下說明如何建立Windows iSCSI目標磁碟。

    1. 首先,您需要安裝iSCSI目標伺服服務,所以需從【伺服器管理員】工具上啟動『新增角色及功能精靈』程式,並選取『檔案和存放服務↘檔案和iSCSI服務↘iSCSI 目標伺服器』這個角色服務。
      install_iscsi
    2. 一旦完成安裝iSCSI伺服器後,請由『伺服器管理員』工具內按一下『檔案和存放服務』 底下的『iSCSI』以進入iSCSI虛擬磁碟設定頁。
    3. 在此我們將新增三個虛擬磁碟,請由中間的連結以啟動建立iSCSI虛擬磁碟精靈程式。
      addiscihd1
    4. 『選取iSCSI虛擬磁碟位置』設定頁上選取新增虛擬磁碟的磁碟區位置與路徑,預設的目錄名稱為iSCSIVirtualDisk,您可以直接選擇磁區後直接接受這個預設的目錄或選擇自訂路徑。
      addiscihd2
    5. 輸入虛擬磁碟名稱,精靈程式將會在上個步驟所指定的路徑底下新增一個虛擬磁碟名稱的vhd檔,然後再輸入輸入虛擬磁碟大小。
      iscsi1a
    6. 接下來,選擇新增iSCSI目標(如果不存在任何iSCSI目標),並在次頁輸入iSCSI目標名稱,這個目標將可被iSCSI初始器探索並做為連線建立之用,然後就可以透過目標連線後來存取指派給目標的虛擬磁碟機。
      iscsi3a
    7. 設定存取伺服器將指定允許探索目標和存取虛擬磁碟的iSCSI啟動器,在此需要把規劃的所有叢集節點伺服器加入進來,您可以使用多種不同的名稱方式加入,預設是採用伺服器名稱或建議使用IQN,不過由於IQN名稱通常很長(通常需使用“iscsicli”命令查詢取得),所以在此處使用IP位址輸入較為簡單。
       iscsiAAA
    8. 啟用iSCSI標準的連線存取驗證方法-CHAP,它允許啟動器向目標來進行驗證,相反的,也允許目標驗證啟動器,在此需輸入使用者名稱及至少12字元的密碼,而且一旦設定日後無法取得或變更,因此一旦遺失或忘記就只得重新設定。在此基於方便測試故不啟用CHAP驗證方法。
       chap
    9. 最後,確認設定,如果無誤就可以開始行建立工件。
      iscsi9
      iscsi11

     

    設定叢集Hyper-V伺服器連接iSCSI磁碟並建立磁碟區

    一旦建立了iSCSI虛擬磁碟並指派目標後,就可以設定啟動器連接登入至iSCSI目標並掛上磁碟

    1. 請從【伺服器管理員】的『工具』功能表下選取『iSCSI啟動器』,如果您是第一次啟動,畫面會詢問您是否要啟動iSCSI服務,按『是』按鈕。
      iscsiinitA
    2. 『iSCSI啟動器 - 內容』視窗上按一下『探索』標籤,並於出現的『探索』設定頁內按『探索入口』按鈕,然後在『探索目標入口』對話方塊中輸入iSCSI目標伺服器的IP位址後,按『確定』按鈕。
    3. 一旦探索成功後,所有可用的iSCSI伺服器目標將會列於『目標』索引標籤下的『探索到的目標』,所以您需要一個一個按下『連線』按鈕以連接到iSCSI目標和存取相關聯的磁碟,待畫面出現『連線到目標』對話方塊,如果您沒有啟用CHAP驗證方法,只要直接按『確定』即可,如果您先前設定使用CHAP驗證方法,則按『進階』按鈕以進入進階設定對話方塊並輸入驗證資訊。
      iscsiconnect4A

    建立磁碟區 (Create Volume)

    一旦連線建立,iSCSI虛擬磁碟將成為啟動器機器上的可用磁碟機,但預設上磁碟機是呈現離線狀態,所以將下來您需要在此iSCSI磁碟上建立磁碟區、格式化並指定磁碟代號,就如同本機機磁碟一樣的做法。

    1. 在【伺服器管理員】工具選取『檔案和存取服務』項目下的『磁碟』選項,您應該可以看到成功連線的iSCSI磁碟目前均呈現為離線狀態,所以請由右上側的『工作』功能表上選擇『新增磁碟區』選項。
       createvolume
    2. 於『新增磁碟區』精靈程式第一個出現的『在您開始前』畫面直接按『下一步』繼續。
    3. 於『伺服器和磁碟』設定頁上,選取離線的iSCSI磁碟按『下一步』,然後再於出現的『離線或未初始化的磁碟』對話方塊上按下『確定』以便將磁碟機上線並初始化。
      createvolume3A
    4. 接下來,輸入磁碟區大小、磁碟區代號、選擇要格式化的檔案系統並輸入磁碟區標籤。
      createvolume5A
    5. 確認並完成磁碟區的建立與設定。
      createvolume5AA
    6. 最後,將規劃中所使用的三個iSCSI磁碟經由第一部iSCSI啟動器連線、格式化後就成為了可用的磁碟區。
      createvolume6

    接下來,您還需要將規劃的第二部Hyper-V叢集節點也利用iSCSI啟動器工具來連接至iSCSI目標和磁碟,但不需要格式化建立磁碟區,只需要設定上線並指定相同的磁碟代號即可。
    createvolume9A

     

    安裝Hyper-V角色

    由於本文目的在建立Hyper-V伺服器叢集以便讓虛擬機器擁有高度可用性,一旦出了問題可立即移轉至其它節點,故接下來我們需要在所有的叢集節點先安裝Hyper-V角色,這項工作相當簡單,透過『新增角色及功能精靈』程式選取安裝『Hyper-V』角色即可,並設定虛擬交換器使用的網路介面,其餘依預設值即可,這與一般伺服器安裝Hyper-V角色的步驟一樣,並無不同。

    hvnet2A

    一旦安裝了Hyper-V角色後,選用為虛擬交換器的網路介面只會啟用『虛擬網路交換器通訊協定』而形成虛擬交換器,然後也新增了『……-虛擬網路』,這個虛擬介面將做為叢集的公用網路,所以順便將其變更名稱為"公用網路介面"以利叢集使用時方便辨識。

    hvnet3A

    安裝容錯移轉叢集功能

    一旦完成將規劃的二部Hyper-V伺服器連接iSCSI磁碟上線後,接下來,您就必需開始建立容錯移轉叢集了,因此首先需要分別在二部伺服器上安裝Windows Server 2012的容錯移轉叢集功能,請由【伺服器管理員】工具啟動『新增角色及功能精靈』程式,並於『功能』設定頁中選擇『容錯移轉叢集』功能。

    addfailover2A

    驗證叢集設定

    由於建立容錯移轉叢集的先決條件和準備作業較為繁瑣,包括共用儲存體的架設與設定,多部叢集節點的網路設定,加入Active Directory網域等條件均需符合才成,所以在正式建立容錯移轉叢集之前,建議利用【驗證設定精靈】程式協助您檢查或確認的系統是否已正確的設定並且符合建立容錯移轉叢集的各種條件。

    1. 以網域管理員登入一部已安裝容錯移轉叢集功能的節點。
    2. 從『伺服器管理員』的『工具』功能表下啟動『容錯移轉叢集管理員』工具。
    3. 請由『容錯移轉叢集管理員』工具的左側窗格之右鍵功能表或右側的動作窗格選取『驗證設定』。
      verifycluster1A
    4. 於出現的『驗證設定精靈』程式的『在您開始前』設定頁按『下一步』繼續。
    5. 『選取伺服器或叢集』設定頁中新增所有要加入叢集的節點(至少二部),您可以直接輸入電腦名稱或利用『瀏覽』按鈕來選取。
      verifycluster3
    6. 『測試選項』設定頁,直接接受預設的『執行所有測試 (建議選項)』選項,按『下一步』繼續,並於下一頁『確認』設定頁,按『下一步』繼續。
      verifycluster5A
    7. 驗證測試過程需詳細檢查存放設定、網路連線、網域及系統設定等狀態是否正常可用,所以需要耗費一段時間,需耐心等待檢查完成。
      verifycluster5.5
    8. 如果檢查結果一切正常,則可立即進行下一步驟的建立叢集工作,但是如果驗證結果出現警告或錯誤,則您得按一下『檢視報告』以便查看詳細的問題原因,記得驗證測試如有問題,則一定得找出問題原因並把問題加以解決後再執行驗證測試一次,直到測試沒有產生任何問題之後才能夠繼續下一個建立叢集的工作。
      verifycluster9

    建立容錯移轉叢集

    啟動『建立叢集精靈』程式可以由上一個步驟的『設定驗證精靈』程式完成頁上勾選以接續啟動,也可以手動的從右鍵功能表或動作窗格內的『建立叢集』選項來啟動。

    1. 啟動『建立叢集精靈』程式。
      createcluster1
    2. 於第一個出現的『在您開始前』設定頁,按『下一步』繼續。
    3. 『選取伺服器』設定頁,輸入所要規劃的叢集伺服器電腦名稱或由『瀏覽』按鈕新增電腦。
      createcluster4
    4. 由於叢集伺服器需要一個對外接受連線的電腦名稱和IP位址,所以接下來的『用於管理存叢集的存取點』設定頁,您需要輸入一個叢集電腦名稱和公開網路的IP位址,以便日後用戶端或管理人員可以透過這個名稱或IP位址來進行連線,而這個叢集用的電腦名稱與IP也會被註冊在Active Directory的電腦帳戶和DNS區域內。
      createcluster5
    5. 『確認』設定頁上,檢查設定無誤,按『下一步』繼續後,即開始建立新叢集的工作,等待其執行,花費一段時間,即可完成建立工作,請留意完成的最後畫面是否有錯誤發生,如有錯誤發生,請按『檢視報告』查看原因。
      createcluster8A

     

    檢查叢集狀況

    一旦建立了容錯移轉叢集後,您需要先檢查叢集和資源使用的各種狀況以確認目前的叢集執行狀態正常,組態亦符合先前規劃需求,若有不適組態或狀況,則需調整設定以符合所需。

    1. 在『容錯移轉叢集管理員』工具,先由左側樹狀目錄按一下叢集名稱,則可從中間窗格查看目前叢集的基本組態摘要訊息。由下圖視窗可知,叢集內目前的節點數與角色,目前叢集的主機伺服器(Active Node),有多少網段以及目前採用的仲裁模式。
      createcluster9A
    2. 按一下『節點』,可出現目前叢集內的節點伺服器的數目與名稱,而每部節點伺服器是否正常執行中。
      createcluster14A
    3. 按一下『存放裝置』下的『磁碟』,可以檢查目前可用的共用磁碟以及他們的狀態是否正常連線中,此外,您還可以由『指派給』來了解目前的共用磁碟指派的用途。
      createcluster15A
    4. 按一下『網路』可了解目前叢集使用多少網路及網路的子網路資訊,每個網路是否可正常連結,以及每個網段目前的用途,如下圖所示,建立叢集精靈程式自動將"叢集網路1"、"叢集網路2"、"叢集網路3"三個網路分別設定為共用存放連線用途、  叢集內部網路和公用網路用途,這自動設定的網路用途並不一定和您當初規劃的目的相符合,您可以加以變更調整。
      createcluster13A
    5. 您也可以在Active Directory網域的管理中心與DNS管理員看到這個成功建立的叢集名稱已經被註冊為電腦帳戶並加入一筆DNS主機記錄。
      adregister

     

    設定與調整叢集網路

    根據上述的檢查,預設的叢集網路名稱(預設的叢集網路名稱為"叢集網路 1"、"叢集網路 2"、"叢集網路 3"…)和用途極可能並不符合原先規劃須求,因此需要變更調整設定,而設定之重點有二:

    1. 變更叢集網路名稱
    2. 設定每個網路的正確用途為 "iSCSI裝置連線用途"、"節點內部Heartbeat用途"或 "叢集公用網路用途"

    下圖說明了從叢集網路的內容來重新調整設定網路,包括重新變更網路名稱以及用途。

    clusternetA

    另外,也順便檢查二部伺服器上的網路名稱是否一樣,以確保一旦執行即時移轉時可以順利使用網路。

    clusternet0A

     

    新增叢集共用磁碟區 (Cluster Storage Volumes;CSV)

    Windows Server 2008 R2的容錯移轉叢集開始支援叢集共用磁碟區功能,可讓多個叢集節點同時存取共用磁碟區的位置,而且也提供了其它使用上的優點,例如您可以比以往更簡單的利用磁碟空間並追蹤虛擬磁碟檔案與路徑,減少虛擬機器所需的LUN(磁碟)數目,不必為每個虛擬機器管理一個LUN,提升恢復功能等,不過Windows Server 2012的CSV與前版不同之處在於容錯移轉叢集預設是啟這項CSV功能的,因此您並無需前版一樣需要先執行啟用CSV的動作,只要將NTFS的共用可用儲存裝置直接新增至叢集共用磁碟區即可:

    1. 由『容錯移轉叢集』管理員的左側,按一下『存放裝置↘磁碟』。
    2. 於中間的磁碟中,利用"指派給"為 "可用儲存裝置"的磁碟右鍵功能表,選取『新增至叢集共用磁碟區』選項。
    3. 下圖為新增二個叢集共用磁碟區後,磁碟將顯示已指派為"叢集共用磁碟區"用途,而且每個叢集共用磁碟將會被掛接到每個節點的%SystemDisk%ClusterStorage目錄下名稱為VolumeN(N為編號)的子資料夾。
      csv4A

    新增虛擬機器於叢集共用磁碟區

    完成了上述步驟之後,現在終於可以建立叢集虛擬機器了,除了利用傳統的Hyper-V管理員或SCVMM(若有安裝部署)來安裝叢集虛擬機器之外,Windows Server 2012的容錯移轉叢集管理員工具也可以讓您新增虛擬機器或將目前的本機虛擬機器移轉至叢集共用磁碟區,由於本文的Hyper-V伺服器並無任何虛擬機器,所以底下將說明如何在容錯移轉叢集管理員新增虛擬機器。

    1. 於『容錯移轉叢集管理員』工具上利用滑鼠右鍵按一下『角色』選項,並由出現的功能表選取『虛擬機器↘新增虛擬機器』。
      addvm1
    2. 『新增虛擬機器』對話方塊上選擇要建立虛擬機器的叢集節點,然後按『確定』。
      addvm2
    3. 接下來畫面會出現『新增虛擬機器精靈』程式,請於『在您開始前』設定頁按『下一步』繼續。
    4. 『指定名稱和位置』設定頁,請為虛擬機命名並輸入存放路徑,您需要將虛擬機器存放至叢集叢集共用磁碟(CSV)才能夠實現即時移轉(Live Migration)功能,按『下一步』繼續。
      addvm4
    5. 接下來一連串的設定過程與一般安裝虛擬機器設定無異,包括指派虛擬機器記憶體大小和是否啟用動態記憶體功能、設定網路介面卡(記得在所有節點要使用相同名稱的虛擬交換器)、建立或使用現存的虛擬硬碟、安裝媒體和來源(最好存放在叢集共用磁碟),最後完成建立虛擬機器。
      addvmA
    6. 一旦建立虛擬機器後,接下來即可啟動虛擬機器開始進行安裝作業系統工作。
      addvmb
    7. 等待一段時間後安裝完成即可看到如下的畫面,可知目前這部虛擬機器已在正常執行中,其活動訊號(heartbeat)正常,目前擁有者為Node1伺服器以及目前CPU和記憶體耗用狀況。
      vm1

    測試即時與快速移轉 (Live Migration)

    即時移轉是Hyper-V R2推出的新功能,透過容錯移轉叢集和叢集共用磁碟區,而Windows Server 2012可更進一步支援Shared-Nothing 即時移轉技術,提供了一種不使用任何共用儲存區的情況下即可不妨礙執行、不停機的線上移轉虛擬伺服器功能,當虛擬機器需要移轉至其他實體伺服器時,會(1)直接將原來主機內的記憶體資料和設備狀態,透過網路傳輸至其他實體伺服器上(2)完成之後再由目的伺服器接替原本伺服器運作。

    不過在此叢集內有三種可能發生的移轉情境:

    • 計劃性移轉
      • 即時移轉
        當您啟動即時遷移時,叢集將會拷貝虛擬機器的記憶體到另一個節點,以便讓相同的記憶體內容和狀態訊息同樣發生在移轉的目標節點,這種轉換過程通常可以快到使用虛擬機器的用戶端不會遺失其網路連接,特別是如如果您使用群集共用磁碟區,則此項即時移轉幾乎是可瞬間完成,因為無需轉換磁碟所有權,此種即時移轉可用於做為虛擬機器的計劃性維護,但非計劃的故障轉移可能發生較長的停擺因此並非適合所有環境。
        即時移轉另一項主要限制是無法同時移動多部虛擬機器,在一部Hyper-V伺服器中,您一次只能移轉一個虛擬機器。
      • 快速移轉:
        當您啟動快速遷移,叢集拷貝虛擬機器的記憶體到磁碟儲存區,因此一旦快速移轉到另一個節點時,目標的節點可以快速的接管磁碟所有權並由磁碟區讀取記憶體狀態資料,此種快速移轉通常只可用於有計劃的維護虛擬機器。
        快速移轉比起即時移轉的好處在於其允許一次同時移轉多部虛擬機器。
    • 非規劃移轉:通常是由於目前啟動節點(擁有者)發生了不可預期的問題而無法繼續提供服務(例如突然當機),叢集自動移轉虛擬機器的擁有權到原本的被動節點繼續提供服務。

    測試移轉功能時主要在於觀察是否可以順利移轉,移轉時虛擬機器是否可正常執行,而且還需要觀察移轉過程中是否有發生服務停滯現象,測試過程與步驟如下:

    1. 請由『角色』下的虛擬機器右鍵功能表或右側的動作窗格,選取『移動↘即時移轉↘最佳可行點』選項。
      livemigration2 
    2. 接下來就會開始執行立即移轉工作,將啟動的記憶體內容拷貝至另一點,然後另一個節點也將接管叢集共用磁碟區內的虛擬磁碟,這可能會花費一點時間,您可以由中間窗格虛擬機器的『資訊』欄位檢視移轉的完成比率,並稍加估算一下整個移轉過程耗費了多少時間。
      livemigration3A

    此外,為了了解虛擬機器執行即時移轉過程中是否中斷服務或有否服務停擺現象,筆者利用持續的ping指令查詢虛擬機器的連線狀況,結果發現整個移轉過程只遺失了2個封包,其服務停止的時間相當短暫,對大部份企業組織的伺服服務而言應屬可接受的範圍。
    pinglossA

    另一方面,筆者也同時測試了叢集內的快速移轉(Quick Migration),實驗結果發現遺失了9個Ping封包,大約無法連線35秒鐘。
    pinglossB

    為了測試此種架構是否適合因應非計劃性的容錯移轉,刻意將目前擁有節點關閉,並以ping查詢虛擬機器連線停擺狀況,發現自動錯誤移轉過程共遺失了17個封包,無法連線時間大約1分5秒,這對於做為高度可用性伺服器而言有些長。
    pinglossC

    上述的實際測試結果大致符合一般預期,虛擬機器的即時移轉是可以在最短時間完成,而非規劃移轉由於需要活動訊息(Heartbeat)後才能夠開始移轉,這需要耗費時間,因此可能導致較長的停擺時間,不過此結果純粹為作者自己的機器與網路環境下的實證數據,由於環境單純並不具有代表性,僅供參考。

    結語

    伺服器虛擬化提供了雲端運算環境下的基礎架構,為了讓虛擬機器兼具有不中斷服務的高度可用性和彈性的遷移能力,應用錯誤移轉(Failover Clustering)叢集技術仍是目前最普遍的有效技術,微軟自前版Windows Server 2008 R2就已經支援Hyper-V容錯移轉叢集服務,而新版的Windows Server 2012則更進一步的同時強化Hyper-V和容錯移轉叢集二方面的技術,因而讓Windows Server 2012更適合當成企業私有雲的運算平台,不過就計劃性維護因素而需要移動虛擬機器的目的而言,叢集與共用磁碟目前已不再是必要條件,只要足夠的頻寬和硬體能力,不用叢集、不同共用磁碟也可以在短時間內快速的遷植虛擬機器。

    讀者回響 (aohongchen@yahoo.com)