VMware vCenter 就能夠提供高可靠的集群 (Cluster) 方案,在 vSphere 集群中,任何一臺服務(wù)器發(fā)生嚴重故障了(如系統宕機、網(wǎng)絡(luò )故障、存儲失聯(lián)等),上面運行的工作負載就會(huì )被 vCenter 轉移到其他正常運行的服務(wù)器繼續運行。這種高可靠架構可以滿(mǎn)足絕大多數業(yè)務(wù)的需求,在共享存儲或 vSAN 上都能實(shí)現 RPO=0 的效果,但是需要一點(diǎn)時(shí)間在其他服務(wù)器上重啟相關(guān)應用和服務(wù),所以 RTO>0。
漲姿勢:RTO 和 RPO
在設計高可靠系統時(shí)經(jīng)常涉及到 RTO 和 RPO 兩個(gè)指標:
- RTO (Recovery Time Objective) 就是企業(yè)能容忍的恢復時(shí)間。災難發(fā)生后,從 IT 系統宕機導致業(yè)務(wù)停頓,到 IT 系統恢復至可以恢復業(yè)務(wù)運營(yíng)之間的時(shí)間。
- RPO (Recovery Point Objective) 可簡(jiǎn)單地描述為企業(yè)能容忍的最大數據丟失量。假設系統一天做一次備份,如果第二天出現錯誤,那從備份完成后到錯誤出現時(shí)所寫(xiě)入的數據都無(wú)法挽回了,從上一次備份到發(fā)生錯誤之間的時(shí)間就是 RPO。
但是還是有一部分關(guān)鍵應用不允許有任何中斷,要求達到 RTO=0 的高可靠性,這時(shí)候就可以采用 vSphere Fault Tolerance 容錯技術(shù)。
FT 工作原理
FT 技術(shù)的工作原理是把需要保護的虛機運行在主服務(wù)器上,指定集群中的另一臺服務(wù)器為備份,vSphere 在備份服務(wù)器上也創(chuàng )建一個(gè)跟受保護虛機一模一樣的虛機。主虛機和備份虛機的數據和狀態(tài)是完全一致的,通過(guò) vLockStep (virtual Lockstep) 技術(shù)來(lái)保證兩臺虛機的同步運行。vSphere 通過(guò)網(wǎng)絡(luò )把主虛機的 FT 日志 (FT Logging) 傳遞給備份虛機,保證兩臺虛機在同一時(shí)間內處理相同的指令,并且處理相同的非確定性事件,如網(wǎng)絡(luò )數據包、用戶(hù)輸入、硬件時(shí)鐘等,這些非確定性事件在物理機上幾乎是無(wú)法同步的,但是虛機的所有硬件和 I/O 輸入都是由 vSphere 來(lái)控制的,所以就可以做到。
漲姿勢:Lockstep 技術(shù)
Lockstep 技術(shù)是容錯計算機 (Fault Tolerance Computer) 的關(guān)鍵實(shí)現技術(shù)之一,通過(guò)使用相同的、冗余的硬件組件來(lái)保持多個(gè) CPU、內存精確的同步,在正確的相同時(shí)鐘周期內執行相同的指令。該技術(shù)能夠保證發(fā)現任何錯誤,即使短暫的錯誤,系統也能在不間斷處理和不損失數據的情況下恢復正常運行。
vSphere 把發(fā)送給主虛機的網(wǎng)絡(luò )數據包也完全復制給備份虛機,備份虛機執行跟主虛機完全一致的指令流,按照相同的順序來(lái)對網(wǎng)絡(luò )服務(wù)請求做出響應,產(chǎn)生完全一致的運算結果。唯一的區別在于,主虛機對外的輸出是實(shí)際生效的,磁盤(pán)寫(xiě)操作會(huì )提交給硬盤(pán)、網(wǎng)絡(luò )數據包會(huì )被發(fā)送出去;備份虛機的所有對外輸出都會(huì )被 vSphere 屏蔽,外界不會(huì )感知到備份虛機的存在。

只有當主虛機失效時(shí) (主服務(wù)發(fā)生故障),備份虛機才會(huì )真正生效。因為兩個(gè)虛機的 CPU 指令順列、內存狀態(tài)都是完全一致的,vSphere 馬上進(jìn)行故障轉移 (failover),即刻讓備份虛機變成新的主虛機, 所有的 TCP 網(wǎng)絡(luò )連接都沒(méi)有中斷,虛機中的應用可以繼續運行。對外界用戶(hù)而言,受保護的虛機完全沒(méi)有中斷運行,實(shí)現了 RPO=0 和 RTO=0 的最高等級容錯。為了繼續保護新的主虛機,vSphere 會(huì )在集群中尋找一臺合適的服務(wù)器作為新的備份服務(wù)器,然后在上面復制一個(gè)新的備份虛機出來(lái),從而形成新的容錯保護機制。

換一個(gè)角度,我們也可以把 FT 技術(shù)看作是一種特殊的 vMotion。vMotion 的過(guò)程是把虛機的內存逐塊地復制到另一臺服務(wù)器上,在復制的過(guò)程中虛機還在正常運行,所以?xún)却孢在被不斷的改寫(xiě),最后一塊被復制的內存被稱(chēng)之 vMotion checkpoint,這塊內存復制完成之后虛機就被完全切換到新的服務(wù)器上運行,從而完成 vMotion 的整個(gè)過(guò)程。FT 技術(shù)則是持續地復制 checkpoint 內存塊,正常情況下并不結束這一操作,只有當故障轉移時(shí),才真正完成 vMotion 操作。
FT 適用條件
FT 技術(shù)不要求對應用進(jìn)行改寫(xiě),或是對操作系統進(jìn)行特殊的配置,所以一般的應用可以很方便地使用 FT 技術(shù)來(lái)進(jìn)行保護。vSphere 6.0 可以保護的虛機最多可以有 4 個(gè) vCPU、64 GB 內存,不超過(guò)這個(gè)資源限制的應用都可以采用 FT 技術(shù)來(lái)保護。而且這是 vSphere 標準版就內置的功能,不用采購額外的軟件許可證,凡是 vSphere 的用戶(hù)都可以隨時(shí)激活對于虛機的 FT 保護。
FT 的工作機制要求主備虛機之間進(jìn)行同步,只有等備份虛機上的同步操作完成之后,主虛機上的數據包傳輸才會(huì )真正完成。對于網(wǎng)絡(luò )上的用戶(hù)而言,發(fā)給主虛機的網(wǎng)絡(luò )請求就有一個(gè)額外的延遲,一般這個(gè)延遲從幾毫秒到幾百毫秒不等,一個(gè)低速的 FT 日志同步網(wǎng)絡(luò )(如1GB)可能加劇這種等待,搭建 vSphere FT 環(huán)境要求主備服務(wù)器之間是專(zhuān)用的 10GB 高速低延遲同步網(wǎng)絡(luò ),以保證主備服務(wù)器之間的 FT 日志同步速度,否則就會(huì )給受保護的應用帶來(lái)嚴重的性能影響。所以 FT 技術(shù)不適用于對于延遲敏感的應用或者是實(shí)時(shí)應用,也不適用于對于內存進(jìn)行大量修改的應用(因為會(huì )產(chǎn)生大量的 FT 日志同步)。
傳統的容錯計算是由昂貴的專(zhuān)用服務(wù)器實(shí)現的,現在 vSphere 在普通的 x86 服務(wù)器上就能實(shí)現同樣的功能,容錯計算終于成為一種大家都用得起的技術(shù)。