虚拟机容错的实现方法和系统技术方案

技术编号:24852740 阅读:22 留言:0更新日期:2020-07-10 19:06
本发明专利技术提供一种虚拟机容错的实现方法和系统,将应用程序所在的虚拟机冗余地运行在多台服务器中,选取一台服务器作为主虚拟机,其余作为从虚拟机,主、从虚拟机虚拟化配置相同,主、从虚拟机互为冗余备份,以备故障切换。令主虚拟机和从虚拟机对用户请求冗余处理,通过主从同步协议,保持主虚拟机和从虚拟机对外可见状态的一致性。与现有技术相比,本发明专利技术通过高效的主从同步协议、与虚拟机监视器相互协作的操作系统,大幅减少了用户请求处理的尾时延,降低了主从虚拟机冗余运行由于不确定性产生状态差异的频率,从而减少了主从虚拟机状态同步的开销,使容错系统内应用程序的整体吞吐显著提升、请求处理的延迟显著降低。

【技术实现步骤摘要】
虚拟机容错的实现方法和系统
本专利技术涉及虚拟机
,具体地,涉及一种虚拟机容错的实现方法和系统。
技术介绍
虚拟机技术被广泛应用在当今多种多样的云服务中。它通过将固定的、有限的物理计算机资源虚拟化为可配置的、可控的、易管理的虚拟计算机资源,使用户购置策略更加弹性灵活,使物理计算存储资源的利用率和使用效率得到提高,使服务器管理和运维成本大幅下降。由于虚拟机云产品管理方便、经济高效等优点,随着其发展不断成熟,越来越多的应用程序、互联网服务、数据库系统等被部署在虚拟机中。其中不乏对于服务的高可用性有较高要求的任务关键型应用。对这些应用来说,服务停机、长时间无响应等故障会给用户带来难以接受的时间、经济等多方面损失。因此,它们对故障的容错能力、故障后恢复能力较为看重。目前,为应用提供容错容灾的高可用解决方案主要分为两种。一是应用程序自身在编写时实现一套容错、故障恢复机制,二是在虚拟机管理层次(虚拟机监视器)为虚拟机提供一体化的备份、容错、故障恢复机制。前者的优点是可以结合应用程序执行逻辑的特点,有针对性的设计容错和故障恢复机制,对应用程序运行时性能的影响较小、消耗计算资源和存储资源较少。缺点是依赖应用程序和程序开发者自身,为应用程序添加容错机制会大大增加应用程序逻辑的复杂度,想要实现一个正确的、高效的容错机制的要求和成本较高;倘若多个应用程序都需要容错系统,则需要为每一个应用程序都各设计一套容错机制;同时,由于运行在虚拟机中的应用程序没有宏观全局的信息,无法根据自己和备份所在真实宿主物理机器的位置做出较优的备份放置策略。在虚拟机管理层次为虚拟机提供一体化的备份、容错、故障恢复机制(虚拟机容错系统)避免了在应用程序层次提供容错机制的缺点。目前,虚拟机容错系统主要可以分为三种类型。第一类容错系统将虚拟机磁盘数据部署于一个独立的高可用高可靠的共享存储系统。当故障发生后,虚拟机管理层在选取状态良好的物理宿主机,并根据共享存储系统中的磁盘数据重新启动受到影响的虚拟机。该类系统容错逻辑较为简单,对虚拟机运行时的性能影响也较低,但故障恢复需要经过冗长的启动虚拟机的时间,同时虚拟机内的网络栈连接状态、运行内存状态等信息全部丢失,虚拟机提供的服务将受到影响。第二类虚拟机容错系统通过将虚拟机的全部运行时信息进行实时备份,提高了虚拟机服务的高可用性,但为了保证虚拟机外部可见的一致性(ExternalConsistency),虚拟机的所有输出在经过整机备份后才能发出给用户端,大大增加了响应延迟。第三类虚拟机容错系统通过将虚拟机冗余的运行在多台宿主物理机器中,避免了虚拟机实时整机备份,但需要通过对冗余虚拟机对外可见状态的差异的检测和主从虚拟机状态的同步来应对虚拟机请求处理的不确定性导致的冗余虚拟机间状态不一致问题。这对于执行时频繁产生不确定结果(比如,由于线程调度执行顺序和获取锁的顺序导致事务处理差异)的应用程序来说仍会带来大量性能损失。如何为应用程序提供高可用性支持,同时进一步减少容错机制给虚拟机带来的运行时性能开销,是一个亟待解决的技术问题。与本申请相关的现有技术是专利文献CN104618155B,公开了一种虚拟机容错的方法,包括:接收用户端发送的网络请求,并将网络请求分别传送到主虚拟机和备虚拟机;接收网络响应数据包,网络响应数据包为主虚拟机传输来的主端数据包或备虚拟机传输来的备端数据包,当存储有网络响应数据包的对端数据时,将接收的网络响应数据包的数据和对端数据按照数据的字节顺序进行比较;当参与比较的数据相同时,生成并向用户端发送新建数据包,新建数据包包含参与比较的数据。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种虚拟机容错的实现方法和系统。根据本专利技术提供的一种虚拟机容错的实现方法,将应用程序所在的虚拟机冗余地运行在多台服务器中,选取一台服务器作为主虚拟机,其余作为从虚拟机,主、从虚拟机虚拟化配置相同,主、从虚拟机互为冗余备份,以备故障切换。令主虚拟机和从虚拟机对用户请求冗余处理,通过主从同步协议,保持主虚拟机和从虚拟机对外可见状态的一致性。通过与虚拟机监视器相互协作的操作系统,降低主从虚拟机频繁状态同步的开销。优选地,所述对用户请求冗余处理包括如下步骤:预处理步骤:当接收到用户端向虚拟机中的应用程序发送第一请求时,令所述第一请求附加一个同步次数编号生成第二请求,同时将第二请求冗余地发送给主虚拟机和从虚拟机;执行判定步骤:主虚拟机和从虚拟机根据收到的第二请求中携带的同步次数编号与当前同步次数,执行未被执行过的请求。优选地,所述保持主虚拟机和从虚拟机对外可见状态的一致性包括如下步骤:输出比较模块:令主虚拟机的第一输出在预先分配的内存空间中进行缓存,令从虚拟机的第二输出发送至主虚拟机的虚拟机监视器,将第一输出与第二输出进行输出比较;差异控制模块:对第一输出与第二输出的输出比较进行判断,若第一输出与第二输出相同,则令第一输出释放至用户端,否则,则进行主虚拟机和从虚拟机的虚拟机状态同步操作,同步后释放第一输出,回收第二输出。优选地,所述虚拟机监视器与操作系统相互协作包括以下步骤:执行记录步骤:主虚拟机内的操作系统在请求执行时记录执行信息,所述执行信息包括各CPU核调度器中应用程序线程的调度顺序和同步原语被线程获取的次序;日志共享步骤:将执行信息以只追加的形式写入主虚拟机的虚拟机监视器的日志空间,形成调度日志,将调度日志顺序地、异步地发送至从虚拟机的虚拟机监视器;按日志调度步骤:从虚拟机的虚拟机监视器收到调度日志后,将调度日志写入从虚拟机的虚拟机监视器的日志空间,从虚拟机内的操作系统在进行调度时,会读取调度日志,并按照调度日志以最大努力的方式执行调度。优选地,所述故障切换包括以下步骤:故障监测步骤:主虚拟机的虚拟机监视器定期与从虚拟机的虚拟机监视器进行心跳监测,当经过设定的超时时间没有响应时,监测为故障;故障恢复步骤:当从虚拟机故障后,主虚拟机不受影响的继续服务;当主虚拟机故障后,从虚拟机升级为主虚拟机提供服务。当从虚拟机数量多于一台时,多台从虚拟机基于Paxos分布式共识协议进行投票成为主虚拟机继续服务。所述故障恢复保证了冗余虚拟机间实时故障切换,无需等待虚拟机启动、应用程序加载。根据本专利技术提供的一种虚拟机容错的实现系统,将应用程序所在的虚拟机冗余地运行在多台服务器中,多台服务器中的虚拟机配置相同,互为冗余备份,以备故障切换。选取一台服务器作为主虚拟机,其余作为从虚拟机,在主从虚拟机之间设置主从同步协议,令主虚拟机和从虚拟机对用户请求冗余处理,并保持主虚拟机和从虚拟机对外可见状态的一致性。并通过与虚拟机监视器相互协作的操作系统,降低主从虚拟机频繁状态同步的开销。优选地,所述对用户请求冗余处理包括如下模块:预处理模块:当接收到用户端向虚拟机中的应用程序发送第一请求时,令所述第一请求附加一个同步次数编号生成第二请求,同时将第二请求冗余地发送给主虚拟机和从虚拟机;执行判定模块本文档来自技高网
...

【技术保护点】
1.一种虚拟机容错的实现方法,其特征在于,将应用程序所在的虚拟机冗余地运行在多台服务器中,选取一台服务器作为主虚拟机,其余作为从虚拟机,主虚拟机、从虚拟机虚拟化配置相同,主虚拟机、从虚拟机互为冗余备份,以备故障切换;/n令主虚拟机和从虚拟机对用户请求冗余处理,通过主从同步协议,保持主虚拟机和从虚拟机对外可见状态的一致性;/n通过与虚拟机监视器相互协作的操作系统,降低主虚拟机、从虚拟机频繁状态同步的开销。/n

【技术特征摘要】
1.一种虚拟机容错的实现方法,其特征在于,将应用程序所在的虚拟机冗余地运行在多台服务器中,选取一台服务器作为主虚拟机,其余作为从虚拟机,主虚拟机、从虚拟机虚拟化配置相同,主虚拟机、从虚拟机互为冗余备份,以备故障切换;
令主虚拟机和从虚拟机对用户请求冗余处理,通过主从同步协议,保持主虚拟机和从虚拟机对外可见状态的一致性;
通过与虚拟机监视器相互协作的操作系统,降低主虚拟机、从虚拟机频繁状态同步的开销。


2.根据权利要求1所述的虚拟机容错的实现方法,其特征在于,所述对用户请求冗余处理包括如下步骤:
预处理步骤:当接收到用户端向虚拟机中的应用程序发送第一请求时,令所述第一请求附加一个同步次数编号生成第二请求,同时将第二请求冗余地发送给主虚拟机和从虚拟机;
执行判定步骤:主虚拟机和从虚拟机根据收到的第二请求中携带的同步次数编号与当前同步次数,执行未被执行过的请求。


3.根据权利要求1所述的虚拟机容错的实现方法,其特征在于,所述保持主虚拟机和从虚拟机中应用程序状态一致性包括如下步骤:
输出比较模块:令主虚拟机的第一输出在预先分配的内存空间中进行缓存,令从虚拟机的第二输出发送至主虚拟机的虚拟机监视器,将第一输出与第二输出进行输出比较;
差异控制模块:对第一输出与第二输出的输出比较进行判断,若第一输出与第二输出相同,则令第一输出释放至用户端,否则,进行主虚拟机和从虚拟机的虚拟机状态同步操作,同步后释放第一输出,回收第二输出。


4.根据权利要求1所述的虚拟机容错的实现方法,其特征在于,所述虚拟机监视器与操作系统相互协作包括以下步骤:
执行记录步骤:主虚拟机内的操作系统在请求执行时记录执行信息,所述执行信息包括各CPU核调度器中应用程序线程的调度顺序和同步原语被线程获取的次序;
日志共享步骤:将执行信息以只追加的形式写入主虚拟机的虚拟机监视器的日志空间,形成调度日志,将调度日志顺序地、异步地发送至从虚拟机的虚拟机监视器;
按日志调度步骤:从虚拟机的虚拟机监视器收到调度日志后,将调度日志写入从虚拟机的虚拟机监视器的日志空间,从虚拟机内的操作系统在进行调度时,会读取调度日志,并按照调度日志以最大努力的方式执行调度;所述最大努力的方式是指从虚拟机内的操作系统不必强制完全按照调度日志执行调度,由于其他不确定性导致其无法按照调度日志进行调度时,仍保证主虚拟机和从虚拟机对外可见的一致性。


5.根据权利要求1所述的虚拟机容错的实现方法,其特征在于,所述故障切换包括以下步骤:
故障监测步骤:主虚拟机的虚拟机监视器定期与从虚拟机的虚拟机监视器进行心跳监测,当经过设定的超时时间没有响应时,监测为故障;
故障恢复步骤:当从虚拟机故障后,主虚拟机不受影响的继续服务;当主虚拟机故障后,从虚拟机升级为主虚拟机提供服务;当从虚拟机数量多于一台时,多台从虚拟机基于分布式共识协议进行投票成为主虚拟机继续服务,以保证冗余虚拟机间实时故障切换,无需等待虚拟机启动、应用程序加载...

【专利技术属性】
技术研发人员:杨帆李文泰陈海波
申请(专利权)人:上海交通大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1