軟硬并舉 提高虛擬機(jī)可用性
虛擬化極大地提升了服務(wù)器硬件的利用率,而且為工作負(fù)載的部署、遷移帶來了更大的靈活性,但虛擬化也存在潛在的缺陷。目前一臺(tái)服務(wù)器上可能運(yùn)行了10臺(tái)、15臺(tái)甚至更多的虛擬機(jī),如果服務(wù)器硬件出現(xiàn)故障或者遭到破壞,大量工作負(fù)載將會(huì)受到影響。因此服務(wù)器硬件、hypervisor和虛擬機(jī)的容錯(cuò)性與可靠性變得更加重要。讓我們來看看與虛擬機(jī)高可用性有關(guān)的一些常見問題。
虛擬機(jī)集群選項(xiàng)
集群的概念是在兩臺(tái)或多臺(tái)服務(wù)器上復(fù)制工作負(fù)載,并確保副本之間的同步。如果主集群服務(wù)器(節(jié)點(diǎn))發(fā)生故障,受影響的服務(wù)器將被隔離在集群之外,第二個(gè)實(shí)例能夠無縫接管。源服務(wù)器恢復(fù)后,能夠重新加入集群并與其它實(shí)例重新進(jìn)行同步。在這個(gè)故障轉(zhuǎn)移的例子中,集群發(fā)生故障切換后只有一個(gè)實(shí)例處理所有的流量而其他實(shí)例處于備用狀態(tài)。
另一種集群方式是負(fù)載均衡。集群中的所有服務(wù)器都處于活動(dòng)狀態(tài),負(fù)載的每個(gè)副本僅處理部分流量。節(jié)點(diǎn)發(fā)生故障后同樣會(huì)從集群中隔離,其他實(shí)例會(huì)重新分擔(dān)流量以處理負(fù)載。這兩類傳統(tǒng)的集群概念都可以直接應(yīng)用于虛擬環(huán)境,現(xiàn)有的集群軟件比如Windows Server Failover集群同樣支持hypervisor和虛擬機(jī)。驗(yàn)證虛擬化的支持程度、升級(jí)集群軟件感知虛擬環(huán)境同樣很有必要。
傳統(tǒng)的服務(wù)器集群軟件還有其他選擇。例如,Stratus Technologies公司的everRun MX以及Vision Solutions公司的Double-Take Availability 7.0。這些工具獨(dú)立運(yùn)行,為虛擬化平臺(tái)比如微軟Hyper-V或VMware vSphere上的虛擬機(jī)提供復(fù)制及同步功能。
考慮虛擬機(jī)的容錯(cuò)性時(shí)有兩個(gè)重要的問題。首先明智并審慎地使用集群。請(qǐng)記住虛擬機(jī)架構(gòu)的靈活性會(huì)增加代價(jià),關(guān)鍵業(yè)務(wù)才值得這么去處理。其他重要性較差的工作負(fù)載通??梢允褂梅羌杭夹g(shù)比如快照進(jìn)行保護(hù)。第二,了解容錯(cuò)性主要是為了應(yīng)對(duì)硬件故障,因此避免虛擬機(jī)的多個(gè)實(shí)例運(yùn)行在同一個(gè)物理服務(wù)器上至關(guān)重要。因此,容錯(cuò)性工作負(fù)載可能會(huì)和自動(dòng)遷移或者負(fù)載均衡工具發(fā)生沖突??赡苡斜匾O(shè)置遷移規(guī)則以明確指定副本能夠遷移到哪些主機(jī)、不能遷移到哪些主機(jī)。
使用虛擬機(jī)快照
集群和快照是兩個(gè)不同的概念,某些用于保護(hù)工作負(fù)載的第三方工具有時(shí)會(huì)混淆這兩個(gè)概念。容錯(cuò)技術(shù)(比如集群以及虛擬機(jī)復(fù)制)用于保持工作負(fù)載的可用性。如果虛擬機(jī)的一個(gè)實(shí)例出錯(cuò),另一臺(tái)服務(wù)器上的副本實(shí)例會(huì)立刻接管,用戶甚至不知道集群節(jié)點(diǎn)已經(jīng)發(fā)生了故障。對(duì)不能容忍服務(wù)壞掉的應(yīng)用程序***采用集群模式。
和集群不同,快照捕獲并保存工作負(fù)載在特定時(shí)間點(diǎn)的狀態(tài)。這意味著肯定存在RPO。虛擬機(jī)從快照中恢復(fù)出來同樣需要時(shí)間,因此也存在RTO。雖然能夠頻繁地執(zhí)行快照并進(jìn)行快速恢復(fù)——存在較短的RPO和RTO——但在恢復(fù)快照時(shí)工作負(fù)載仍處于不可用狀態(tài)。
由于非關(guān)鍵業(yè)務(wù)虛擬機(jī)能夠容忍短暫的宕機(jī),通常將快照作為數(shù)據(jù)保護(hù)的解決方案。通常,快照一般集中存放在本地SAN中,但如果需要額外的數(shù)據(jù)保護(hù)層(比如避免自然災(zāi)害或戰(zhàn)爭等對(duì)當(dāng)?shù)卦O(shè)施造成毀滅性危害),可能會(huì)將快照復(fù)制到遠(yuǎn)程SAN中。
***,要在集群和快照之間做出選擇必須考慮個(gè)別的工作負(fù)載及其對(duì)業(yè)務(wù)的重要性。
通過硬件提高虛擬機(jī)的可用性
提高虛擬機(jī)可用性的一個(gè)重要戰(zhàn)略就是關(guān)注底層硬件的容錯(cuò)性。如果服務(wù)器不發(fā)生故障,其上的負(fù)載也就不會(huì)發(fā)生故障。組織更新硬件時(shí)可以考慮服務(wù)器提供的容錯(cuò)功能。
例如,Inel***的至強(qiáng)處理器現(xiàn)在提供了內(nèi)部數(shù)據(jù)總線檢查機(jī)制,能夠增強(qiáng)處理器內(nèi)部數(shù)據(jù)的完整性,還能夠檢測并更正處理器內(nèi)部的一些bit錯(cuò)誤。新處理器檢測特性能夠利用管理軟件工具產(chǎn)生報(bào)告記錄軟錯(cuò)誤并用于后期評(píng)估,因此管理員能夠做出更明智的決策,在問題真正出現(xiàn)之前對(duì)系統(tǒng)進(jìn)行修復(fù)或者更換。
在系統(tǒng)層面考慮硬件冗余。例如,冗余電源一直是企業(yè)級(jí)服務(wù)器的標(biāo)準(zhǔn)配置。擁有10、12乃至更多核心的處理器為工作負(fù)載提供了額外的計(jì)算資源(如果其中一個(gè)核心發(fā)生故障,負(fù)載將在同一服務(wù)器上的其他核心上重新啟動(dòng))。
內(nèi)存的熱備份特性能夠在空閑的內(nèi)存模塊上重建故障內(nèi)存模塊中的內(nèi)容。相比之下,內(nèi)存鏡像在備用的內(nèi)存模塊上復(fù)制內(nèi)存內(nèi)容——如果一個(gè)模塊出錯(cuò),內(nèi)存鏡像會(huì)進(jìn)行接管(這和RAID 1很像)。
其他服務(wù)器組件應(yīng)該包括冗余元素。例如,網(wǎng)絡(luò)接口卡可能包括三個(gè)或者四個(gè)網(wǎng)口。不僅提供了額外的帶寬以支持多個(gè)帶寬密集型負(fù)載,還允許將某些負(fù)載故障轉(zhuǎn)移到其他端口。
可用性是企業(yè)級(jí)工作負(fù)載的一個(gè)重要屬性,但是組織應(yīng)該采用最適合工作負(fù)載性質(zhì)的技術(shù),而不是過度保護(hù)太重要的工作負(fù)載或者對(duì)關(guān)鍵業(yè)務(wù)采用常規(guī)的保護(hù)方式。無論采用哪種虛擬機(jī)高可用性策略,一定要對(duì)其進(jìn)行測試以驗(yàn)證確實(shí)達(dá)到了預(yù)期效果。不要等到災(zāi)難真正發(fā)生時(shí)才發(fā)現(xiàn)系統(tǒng)可用性存在意料之外或者無法接受的缺陷。