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