墨菲法則提到如果某事可能會出錯,那么這件事一定會出錯。可能沒有比服務器虛擬化更嚴格遵守該法則的領域了。數據中心只有物理服務器時,服務器故障通常只影響一個工作負載。而虛擬主機運行多個工作負載,這意味著可能導致很多應用會出現故障。
使用服務器虛擬化的大多數企業利用諸如故障切換集群或者復制技術作為應對hypervisor級故障的方式。然而這類技術在保護虛擬負載方面還有很長的一段路要走,因為集群往往不夠。即使構建了虛擬主機高可用集群仍然可能出現故障。如果某些虛擬基礎設施成為單點故障,那么故障可能會發生。
盡管消除所有能夠想到的單點故障是有可能的,但這需要雄厚的資金支持。在大多數情況下,企業必須識別潛在的風險,然后評估風險轉換為實際問題的可能性。企業可能要花錢應對最大的風險。
這也引發了一個問題,那就是存在的潛在單點故障是什么。真正的故障風險可能變化多端,這取決于使用哪家廠商的產品以及虛擬基礎設施是如何部署的。某些風險與硬件相關,某些與軟件相關。
與硬件相關的發生故障可能會影響整個虛擬基礎設施的所有硬件。以電源管理為例,很多虛擬主機配置了冗余的電源模塊,當一個電源模塊發生故障,第二個電源模塊能夠在線接管,這樣就不會影響主機服務器,即便這樣,管理員必須考慮電源一旦出現故障帶來的的后果。
虛擬主機通常連接到UPS,在電力故障時能夠使用發電機發電。然而,如果在主電源發生故障時,所有的服務器連接到同一個發電機,那么該發電機也可能成為潛在的單點故障。
這時就要進行風險評估。在備用的發電機出現故障影響整個虛擬基礎設施前,很多事情都會出錯,此時必須中斷電源。不必將備用發電機出現故障放在心上,因為備用發電機成為單點故障的可能性非常小。
正如前文所說,盡管消除所有可能的單點故障是有可能的,但代價非常大。可以想象一下為各種各樣的服務器配置單獨的備用發電機的場景。,即使是這樣也不一定會消除潛在的單點故障。如果這些備用發電機的燃料都來自于同一個地方,而燃料恰好被水污染了,那么發電機燃料將會成為單點故障。需要注意的是,很多事情可能會在發生其他故障之前出現問題。
在集群環境中,共享存儲成為單點故障更為常見。集群存儲通常配置了冗余的磁盤,當冗余未達到要求時,陣列、交換機、線纜可能會出現故障。
在軟件端,如果未采用冗余方式部署,那么基礎設施服務器可能成為單點故障。例如,假定企業打算部署System Center Virtual Machine Manager(SCVMM)作為管理Hyper-V的工具。SCVMM可能會成為單點故障,除非被部署在高可用性虛擬機上。同樣地,SCVMM依賴的SQL Server數據庫也可能成為單點故障,除非數據庫也是冗余的。其他潛在的單點故障可能包括DNS服務器、域控制器、DHCP服務器、備份服務器或者互聯網網關。
對大多數企業來說,消除所有可能的單點故障是不可能的,更好的策略是識別出單點故障,然后針對單點故障的風險等級進行評估。