kvm虛擬化之虛擬機的FT(容錯)方案

(文章來自作者維護的社區微信公衆號【虛擬化雲計算】)
(目前有兩個微信羣《kvm虛擬化》和《openstack》,掃描二維碼點擊“雲-交流”,進羣交流提問)
KVM中的FT(fault tolerance),也叫non-stop service。在有些場景下也被稱爲虛擬機熱備。
 
現在qemu-kvm社區出現過的FT方案:
Features/FaultTolerance
Features/MicroCheckpointing
Features/COLO
 
其中COLO已經在qemu2.8版本進入了upstream。目前正在開發完善中。本文根據qemu和kvm社區的資料整理了一下COLO的實現方案。
 
COLO簡介
COLO (COarse-grained LOck-stepping)是一種虛擬機的高可用解決方案。當啓用的COLO功能後, 主虛擬機(PVM)和備虛擬機(SVM)都會同時處於running 狀態。PVM和SVM都可以接收到來自client的網絡數據包, 並對數據包做出迴應。當PVM和SVM回覆的數據包的內容相同, 則PVM回覆的數據包會返回給client, 否則會觸發checkpoint對PVM和SVM進行同步,然後再將數據包返回給client。當PVM所在的物理機發生宕機時候, SVM可以立即接管, 爲client提供服務。
Application-agnostic Non-stop Virtual Machine
(來自01x07-Hongyang_Yang-Status_update_on_KVM-COLO.pdf)
 
qemu的ChangeLog/2.8中支持了COLO
下面是COLO架構圖
(來自03x08B-Hailang_Zhang-Status_Update_on_KVM-COLO_FT.pdf)
架構中幾個關鍵組件:
1.HeartBeat:
提供主備節點間的心跳檢測。(主節點上發生故障後停止心跳,觸發failover模塊進行故障轉移操作。)
該功能模塊在qemu2.11.0版本中還沒實現。
 
2.COLO disk Manager:
保持主備虛擬機的磁盤數據一致性,其工作流程如下:
3.Checkpoint/Failover Controller:
實現內存髒頁的連續遷移,來保證備虛擬機和主虛擬機的狀態一致性。colo lost heartbeat後進行故障轉移操作。
 
4.COLO Proxy:
COLO-proxy模塊主要是通過比較主備虛擬機發出的網絡包來判斷是否要觸發checkpoint,提高COLO的性能。
其流程圖如下:
COLO和MicroCheckpointing的比較:
1.COLO的checkpoint是根據比較主備虛擬機的對外反饋得出的,根據需要checkpoint。而MicroCheckpointing是週期性進行checkpoint的;
2.COLO的主備是並行執行的,而MicroCheckpointing的備機是處於複製主機內存的待激活狀態。
 
==============================================================
關注微信公衆號【虛擬化雲計算】,閱讀更多虛擬化雲計算知識,純技術乾貨更新不停。
發佈了43 篇原創文章 · 獲贊 83 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章