和使用物理服務器相比,服務器虛擬化提供了數不清的優勢,但它至少有一個明顯的不足之處。虛擬環境中主機發生故障帶來的后果要比在物理服務器環境中更嚴重。如果服務器在物理環境中出故障,那么只會影響單個工作負載。然而如果虛擬主機出故障,運行在這臺主機上的所有虛擬機都會出問題。這可能會導致重大服務中斷。
避免虛擬主機發生故障
使用故障切換集群實現虛擬機的高可用性能夠修復此問題。簡而言之,在主機服務器出現故障時,故障切換集群允許運行在故障主機上的虛擬機切換到集群中的另一臺主機上,保證虛擬機繼續運行。
因為主機服務器出故障帶來的潛在后果,使用故障切換集群已經成為了運營虛擬環境的標準、可接受方式。但故障切換集群實施成本很高,因為需要購買許可虛擬軟件以及服務器和共享存儲陣列硬件。還要考慮支持及維護故障切換集群的費用。為避免與構建及維護hypervisor集群環境所帶來的復雜性及巨大的成本,有必要考慮能否使用獨立非集群虛擬主機代替故障切換集群。
在實驗環境中使用非集群虛擬主機是很常見的,因為IT部門針對開發/測試環境的預算有限。此外,可能的原因是如果實驗環境中的主機出故障,通常不會帶來嚴重的后果。但對生產環境來說就是另一回事了。
表面上看,在生產環境中使用單臺虛擬主機似乎明顯違背了長期建立的最佳實踐,但在如下場景中是可行的。
什么時候使用獨立主機
在生產環境中使用單臺獨立主機最為常見的例子出現在小微企業中。小企業只有很少的員工,往往使用單臺虛擬主機運行為數不多的虛擬機。盡管這一做法很常見,但仍舊充滿風險而且有些欠考慮,因為主機服務器故障會導致所有的服務出問題。對小微企業來說,可能缺少部署故障切換集群的預算或者經驗,最好的辦法是在公有云中運行生產工作負載,而不是只依賴于獨立的虛擬主機。
具備某些冗余機制的組織也可以使用獨立主機。例如,Hyper-V能夠將虛擬機復制到第二臺或者第三臺主機—不需要構建故障切換集群。這意味著要比構建故障切換集群更容易,成本也更低。
然而,hypervisor級復制并沒有提供實時的故障切換功能。就Hyper-V而言,故障切換到副本虛擬機是有可能的。但人工處理將導致短暫的宕機。而且企業要應對工作負載出現短暫的中斷。
最后,當在虛擬機層面具備冗余時,使用單臺獨立虛擬主機也是可接受的。例如,考慮三個域控制器位于三個獨立的虛擬主機上的情形。在這種情況下缺少故障切換集群不會帶來嚴重的風險,因為域控制器是冗余的。如果在客戶機級別的工作負載實現了集群,那么主機級別的集群提供的是額外的安全防護。但這并非應對服務中斷的唯一措施。
如果有可能,那么將虛擬主機加入故障切換集群往往是最好的選擇。在實際工作中,技術或預算限制可能會導致無法使用故障切換集群。在這種情況下,要尋求在主機中斷時保護工作負載的其他方式。例如IT團隊可以配置Hyper-V的免費版本作為故障切換集群。虛擬機復制以及客戶機集群是另兩種選擇。最重要的是:不能允許主機服務器出現單點故障。