一种基于KVM的虚拟机容错实现方法与流程

文档序号:15183248发布日期:2018-08-17 07:18阅读:775来源:国知局

本发明属于虚拟化技术领域,特别涉及一种基于kvm的虚拟机容错实现方法。



背景技术:

经过多年的发展,云计算已经逐步成熟,虚拟化技术是云计算发展的基础,利用云计算和虚拟化技术可以有效提高资源利用率、降低管理成本、提高使用灵活性,同时,系统具有高可用性、高安全性、高扩展性等优点。随着云计算的不断发展,对虚拟机的可靠性提出了更高的要求,不仅要求对物理机高可用,还对虚拟机的高可用性提出需求。

多数通用云只提供物理机高可用功能,在物理机发生宕机后,其上的虚拟机自动在其它物理主机上重启,无法保证业务的连续性,且重启过程会导致内存数据的丢失。特别对于关键业务应用,如果宕机会导致非常严重的后果。因此,需要一种在物理机意外宕机时,可以保证业务连续运行的机制,在虚拟化中容错技术可以实现虚拟机的连续运行。

中国专利文献cn105335254a公开了一种虚拟化备份容错系统及方法,涉及虚拟化热迁移技术领域。该系统包括主用板、备用板、tcp同步通道,主用板和备用板的结构相同,主用板通过tcp同步通道与备用板进行交互,该系统采用新的预拷贝策略:备用板将主用板同步成功的数据保存在内存中,并在本次同步成功后更新上一次同步数据;对原始虚拟化热迁移功能进行扩展,采用系统级保护:主用板同步完成后不关闭虚拟机,备用板在接收完同步数据后仍保持暂停状态。本发明中的备用板实现多镜像点备份,将多个镜像存储在内存或硬盘中,当主用板发生故障时,备用板选取最新的镜像恢复同步数据,代替主用板工作,保证控制层业务不间断运行。但是,该专利中,1、对主用板和备用板的结构有具体要求,实现起来比较复杂;2、备用板同步数据需要存储于内存中或者硬盘中,当主虚拟机意外宕机后,备用虚拟机不能直接运行,还需要再恢复内存数据,虚拟机恢复速度较慢;3、无法实现多级容错,只能实现单级容错。



技术实现要素:

针对现有技术中物理机意外宕机时虚拟机连续运行的问题,本发明基于kvm虚拟化技术,提出了一种基于kvm的虚拟机容错实现方法。

本发明实现方法为改造kvm的热迁移过程,在容错开始时先执行虚拟机的热迁移操作,在另一台物理上启动备份虚拟机,并将主虚拟机的内存不断同步到备虚拟机中,当迁移到达最后一步时,开启一个线程一直执行最后一步操作,当备机检测到主机不在线时,备机立即启动,从而达到虚拟机不间断运行的目的。

术语解释:

1、socket链路,是进程通讯的一种方式,即调用这个网络库的一些api函数实现分布在不同主机的相关进程之间的数据交换。

2、keepalive,是在tcp中一个可以检测死连接的机制。

本发明的技术方案为:

一种基于kvm的虚拟机容错实现方法,运行于计算机集群系统,所述计算机集群系统包括主物理机及运行于所述主物理机上的主虚拟机、备物理机及运行于所述备物理机上的备虚拟机、其它若干物理机及分别运行于若干所述物理机上的若干虚拟机,包括:

(1)主虚拟机热迁移;

(2)开启一个线程,暂停主虚拟机,查找主虚拟机中的所有内存脏页,拷贝所有脏页到备虚拟机中,重新启动主虚拟机,线程休眠50-200ms后,判断是否发生主物理机或备物理机宕机,如果是,进入步骤(3),否则,重复执行该步骤;在此过程中主虚拟机一直处于正常运行状态,备虚拟机一直处于暂停状态,同时备虚拟机的内存与主虚拟机同步。

(3)当主物理机宕机时,快速启动备虚拟机,备虚拟机启动后继续执行主虚拟机的操作;当备物理机宕机时,停止线程,同时主虚拟机一直正常运行。

进一步优选的,线程休眠100ms。开启线程主要是为了实现主虚拟机正常运行时,通过此线程实现主备虚拟机的内存同步,防止因为内存同步引起主虚拟机暂停问题。

根据本发明优选的,判断是否发生主物理机或备物理机宕机,包括:在主物理机与备物理机之间建立socket链路,主物理机与备物理机之间定时发送keepalive信息,当主物理机停止发送keepalive信息,备物理机不能定时接收到keepalive信息,则判定主物理机宕机;当备物理机停止发送keepalive信息,主物理机不能定时接收到keepalive信息,则判定备物理机宕机。保证快速从主物理机迁移到备物理机。

根据本发明优选的,所述步骤(3)之后,执行以下步骤:

当主物理机宕机时,从所述计算机集群系统中除备物理机外的其它物理机中选择一个物理机作为备物理机,具体选择方法为:按照加权算法,以物理机的cpu、内存、硬盘利用率为加权因子,选择一个利用率最低的物理机作为备物理机,并重新从步骤(1)开始执行,进行再次容错;当备物理机宕机时,按照上述同样方法从集群中选择一个物理机作为备机,重新从步骤(1)开始执行,实现虚拟机再次容错。

只有计算机集群系统中没有物理机可用时,才会不再开启容错备虚拟机,这样可以保证容错虚拟机最大的可用性。

根据本发明优选的,所述步骤(1)中,主虚拟机热迁移,包括:

a、将主虚拟机的整个内存压缩后拷贝到备虚拟机内存中,此过程无法一次性拷贝完成,需要分多次拷贝,在此过程中主虚拟机内存产生新的内存脏页;

b、开始迭代拷贝,即完成内存脏页的迭代拷贝;即:从主虚拟机的内存中不断查找内存脏页,并将内存脏页发送到备虚拟机内存中,每一次迭代都会产生新的内存脏页,经过多次迭代脏页会越来越少,直到满足如下条件:内存脏页与寄存器之和,与网络带宽的比值,该比值小于最大宕机时间;截止开始容错线程,从而实现虚拟机容错。

本发明的有益效果为:

1、虚拟机容错实现整个虚拟机系统的容错,可以对应用透明,任何应用程序不需要修改,运行于容错虚拟机中,就可以实现软件本身的容错。

2、虚拟机容错可以防止因物理硬件故障,而导致虚拟机异常的问题,保证虚拟机业务的连续运行,特别对于关键业务实现零秒中断。

3、本发明虚拟机容错可以实现多级容错,理论上只要有足够的物理机,可以实现虚拟机无限级容错,最大限度的保证了虚拟机的连续运行。

4、本发明中,一是对主用板和备用板的结构没有要求,只需要主用板和备用板cpu是一种类型即可;二是备用板同步数据不需要存储于内存中或者硬盘中,而是在内存中专门开辟一块空间用于同步数据,当主虚拟机意外宕机后,备用虚拟机可以直接运行,不需要再恢复内存数据,虚拟机恢复速度要更快;三是本发明可以实现多级容错,最大程度上保证了虚拟机的连续运行,只要有一台物理机存活就可以保证虚拟机可以运行。

附图说明

图1为本发明主虚拟机热迁移机理示意图;

图2为本发明主虚拟机容错机理示意图;

图3为本发明基于kvm的虚拟机容错实现方法的流程示意图。

具体实施方式

下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。

实施例1

一种基于kvm的虚拟机容错实现方法,如图3所示,运行于计算机集群系统,计算机集群系统包括主物理机及运行于主物理机上的主虚拟机、备物理机及运行于备物理机上的备虚拟机、其它若干物理机及分别运行于若干物理机上的若干虚拟机,包括:

(1)主虚拟机热迁移;主虚拟机热迁移机理如图1所示,主虚拟机容错机理如图2所示,包括:

a、将主虚拟机的整个内存压缩后拷贝到备虚拟机内存中,此过程无法一次性拷贝完成,需要分多次拷贝,在此过程中主虚拟机内存产生新的内存脏页;

b、开始迭代拷贝,即完成内存脏页的迭代拷贝;即:从主虚拟机的内存中不断查找内存脏页,并将内存脏页发送到备虚拟机内存中,每一次迭代都会产生新的内存脏页,经过多次迭代脏页会越来越少,直到满足如下条件:内存脏页与寄存器之和,与网络带宽的比值,该比值小于最大宕机时间;截止开始容错线程,从而实现虚拟机容错。

(2)开启一个线程,暂停主虚拟机,查找主虚拟机中的所有内存脏页,拷贝所有脏页到备虚拟机中,重新启动主虚拟机,线程休眠50-200ms后,判断是否发生主物理机或备物理机宕机,如果是,进入步骤(3),否则,重复执行该步骤;在此过程中主虚拟机一直处于正常运行状态,备虚拟机一直处于暂停状态,同时备虚拟机的内存与主虚拟机同步。

(3)当主物理机宕机时,快速启动备虚拟机,备虚拟机启动后继续执行主虚拟机的操作;当备物理机宕机时,停止线程,同时主虚拟机一直正常运行。

实施例2

根据实施例1所述的一种基于kvm的虚拟机容错实现方法,其区别在于,线程休眠100ms。开启线程主要是为了实现主虚拟机正常运行时,通过此线程实现主备虚拟机的内存同步,防止因为内存同步引起主虚拟机暂停问题。

实施例3

根据实施例1所述的一种基于kvm的虚拟机容错实现方法,其区别在于,判断是否发生主物理机或备物理机宕机,包括:

在主物理机与备物理机之间建立socket链路,主物理机与备物理机之间定时发送keepalive信息,当主物理机停止发送keepalive信息,备物理机不能定时接收到keepalive信息,则判定主物理机宕机;当备物理机停止发送keepalive信息,主物理机不能定时接收到keepalive信息,则判定备物理机宕机。保证快速从主物理机迁移到备物理机。

实施例4

根据实施例1所述的一种基于kvm的虚拟机容错实现方法,其区别在于,所述步骤(3)之后,执行以下步骤:

当主物理机宕机时,从计算机集群系统中除备物理机外的其它物理机中选择一个物理机作为备物理机,具体选择方法为:按照加权算法,以物理机的cpu、内存、硬盘利用率为加权因子,选择一个利用率最低的物理机作为备物理机,并重新从步骤(1)开始执行,进行再次容错;当备物理机宕机时,按照上述同样方法从集群中选择一个物理机作为备机,重新从步骤(1)开始执行,实现虚拟机再次容错。

只有计算机集群系统中没有物理机可用时,才会不再开启容错备虚拟机,这样可以保证容错虚拟机最大的可用性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1