kvm虚拟化之虚拟机的FT(容错)方案

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提供服务。

kvm虚拟化之虚拟机的FT(容错)方案

Application-agnostic Non-stop Virtual Machine

(来自01x07-Hongyang_Yang-Status_update_on_KVM-COLO.pdf)

 

qemu的ChangeLog/2.8中支持了COLO

kvm虚拟化之虚拟机的FT(容错)方案

下面是COLO架构图

(来自03x08B-Hailang_Zhang-Status_Update_on_KVM-COLO_FT.pdf)

kvm虚拟化之虚拟机的FT(容错)方案

架构中几个关键组件:

1.HeartBeat:

提供主备节点间的心跳检测。(主节点上发生故障后停止心跳,触发failover模块进行故障转移操作。)

该功能模块在qemu2.11.0版本中还没实现。

 

2.COLO disk Manager:

保持主备虚拟机的磁盘数据一致性,其工作流程如下:

kvm虚拟化之虚拟机的FT(容错)方案

3.Checkpoint/Failover Controller:

实现内存脏页的连续迁移,来保证备虚拟机和主虚拟机的状态一致性。colo lost heartbeat后进行故障转移操作。

 

4.COLO Proxy:

COLO-proxy模块主要是通过比较主备虚拟机发出的网络包来判断是否要触发checkpoint,提高COLO的性能。

其流程图如下:

kvm虚拟化之虚拟机的FT(容错)方案

COLO和MicroCheckpointing的比较:

1.COLO的checkpoint是根据比较主备虚拟机的对外反馈得出的,根据需要checkpoint。而MicroCheckpointing是周期性进行checkpoint的;

2.COLO的主备是并行执行的,而MicroCheckpointing的备机是处于复制主机内存的待**状态。

 

转载自:https://blog.****.net/isclouder/article/details/79320043