盡管可能使Windows Server授權模型更加復雜,但用戶還是可以使用免費Hyper-V Server來創建容錯環境以及故障轉移集群。
微軟在很久之間就已經推出免費版Hyper-V Server,但是出于某些原因,Hyper-V Server一直被大家認為只適合應用在實驗室環境當中。也許你還不相信,但是現在真的能夠免費部署Hyper-V Server,并且為Hyper-V虛擬機提供高可用性。
為了搭建具有容錯特性的Hyper-V環境,管理員需要完成一些前期準備工作。首先,需要準備一個存儲陣列作為共享存儲,當然其他任何Hyper-V部署都存在這種存儲需求;然后,需要準備Hyper-V Server軟件,可以在微軟官網下載。接著,你需要掌握如何部署和配置故障轉移集群等基本知識,提前掌握故障轉移集群原理可以簡化Hyper-V Server集群的創建流程。最后,為了創建具有容錯機制的Hyper-V環境,管理員必須對PowerShell有基本的了解。如果你對于PowerShell的理解還有些生疏,那么我推薦使用Sconfig.cmd工具。這種工具允許用戶使用基于菜單的界面來配置服務器。使用這種工具,你可以最大程度上減少必須使用的PowerShell命令數量。
集中配置
使用免費Hyper-V Server創建故障轉移集群的第一步就是在每臺集群節點服務器上安裝Hyper-V Server。安裝完成之后,你需要使用Sconfig.cmd對每臺服務器進行初始化配置。其中包括為每塊網卡分配IP地址、為每個節點分配唯一并且有意義的計算機名、加入到某個活動目錄域、啟用遠程管理功能等,使用Sconfig.cmd工具可以輕松完成所有這些任務。
完成初始配置流程之后,還必須針對故障轉移集群進行進一步配置,比如為集群分配名稱和IP地址。還需要弄明白如何將集群結點連接到共享存儲。最簡單的方式是創建兩個SMB文件共享。其中一個用于共享存儲,而另外一個用于File Share Witness。
創建集群命令
為了進行演示,我們假設用戶想要創建一個名稱為“Cluster1”的集群,集群IP地址為192.168.0.1。并且假設每個節點當中用于集群通信的的網卡名稱為“Ethernet2”——你可以通過使用Get-NetAdapter cmdlet命令獲得實際的NIC名稱。現在假設你的集群節點被命名為“Hyper-V-1”、“Hyper-V-2”和“Hyper-V-3”。最后還需要為File Share Witness創建一個UNC(Universal Naming Convention)路徑。之后為Hyper-V虛擬交換機分配名稱。為了便于舉例,在這里我們使用“Switch1”作為虛擬交換機名稱——每個節點必須使用相同的虛擬機名稱——使用\storagewitness作為File Share Witness路徑。考慮到這些命名規則,可以使用如下命令來創建故障轉移集群:
Install-WindowsFeature –Name Failover-Clustering –IncludeManagementTools
New-VMSwitch "Switch1" –NetAdapterName "Ethernet 2" –AllowManagementOS:$True
Test-Cluster –Node Hyper-V-1,Hyper-V-2,Hyper-V-3
New-Cluster –Name Cluster1 –Node Hyper-V-1,Hyper-V-2,Hyper-V-3 –StaticAddress 192.168.0.1
Set-ClusterQuorum –Cluster Cluster1 –NodeAndFileShareMajority \StorageWitness
到現在為止就只剩下最后一項任務了——將共享存儲連接到集群。具體使用哪種方式可能會根據所使用的存儲類型而發生變化。可以使用Add-ClusterDisk命令來完成相關操作,但是我建議在另外一臺Windows服務器上安裝Failover Cluster Manager,它提供的圖形界面可以幫助用戶在集群當中輕松添加存儲。使用這種方式管理員可以不用再擔心使用命令行配置共享存儲的復雜性。
如你所見,通過使用免費Hyper-V Server可以實現高可用性。既然如此,你可能會問為什么企業需要為Hyper-V節點購買Windows Server授權。問題的答案通常和虛擬機授權相關。Windows Server 2012 R2 Datacenter Edition對于獲得擁有恰當授權的hyper-V主機來說可以運行無限數量的Windows Server 2012 R2虛擬機,但是如果沒有購買這種授權,那么就需要單獨處理授權問題,這樣可能導致成本大幅上升并且十分復雜。