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