CN112637336B - 一种虚拟机高可用实现方法、装置及存储介质 - Google Patents
一种虚拟机高可用实现方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112637336B CN112637336B CN202011531205.4A CN202011531205A CN112637336B CN 112637336 B CN112637336 B CN 112637336B CN 202011531205 A CN202011531205 A CN 202011531205A CN 112637336 B CN112637336 B CN 112637336B
- Authority
- CN
- China
- Prior art keywords
- server
- virtual machine
- storage
- shared storage
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Abstract
本公开提供了一种虚拟机高可用实现方法、装置及存储介质。本公开提供的虚拟机高可用实现方案,在承载虚拟机的服务器访问共享存储异常时,虚拟机I/O请求可通过I/O代理快速切换到管理网链路正常下发,可实现虚拟机不关机的业务快速恢复,提高了高可用性能。
Description
技术领域
本公开涉及云计算及网络通信技术领域,尤其涉及一种虚拟机高可用实现方法、装置及存储介质。
背景技术
虚拟机高可用性(High Availability,HA)是指系统提供不间断服务的能力,也就是尽可能的减少系统停止服务的时间。
图1为基于共享存储的虚拟化云平台架构中虚拟机高可用的实现原理图,现有的虚拟机HA高可用技术方案中,假设服务器A和服务器B构成一个集群,服务器A上的虚拟机vm1的存储镜像文件存放在共享存储上,当服务器A与共享存储之间的存储网络连接异常时,HA模块会在一定时间内检测到服务器A不可访问共享存储,HA模块会触发虚拟机高可用处理流程,首先将服务器A上的虚拟机vm1强制关机,然后在服务器B上再重新启动虚拟机vm1,这样业务可以在服务器B上得到恢复,达到高可用的目的。
在上述基于共享存储的虚拟化云平台架构中,一台物理服务器硬件故障或软件异常,会导致其上面的虚拟机异常,影响实际用户业务。
发明内容
有鉴于此,本公开旨在提供一种虚拟机高可用实现方法、装置及存储介质,用于提高虚拟机高可用性能。
基于本公开一方面,提供了一种虚拟机高可用实现方法,该方法应用于服务器集群中的第一服务器,所述第一服务器上运行有虚拟机,所述方法包括:
检测与共享存储之间的存储网链路是否故障;
当虚拟机与共享存储之间的存储网链路正常时,直接通过与共享存储之间的存储网链路传送针对位于共享存储上的虚拟机磁盘文件的I/O请求及响应;
当虚拟机与共享存储之间的存储链路故障时,通过与第二服务器之间的管理网链路将针对位于共享存储上的虚拟机磁盘文件的I/O请求路由到第二服务器,以使第二服务器代理传输所述虚拟机与所述共享存储之间的I/O请求及响应。
进一步地,所述检测与共享存储之间的存储网链路是否故障的方法为:
启动一个链路检测进程通过心跳报文周期性检测虚拟机与共享存储之间的存储网链路是否故障。
进一步地,所述方法还包括:
当虚拟机通过与共享存储之间的存储网链路向位于共享存储上的分配给该虚拟机的虚拟机磁盘文件下发I/O请求时,如果下发失败,所述虚拟机将I/O请求缓存到缓存队列;
当确定所述虚拟机与共享存储之间的存储网链路故障时,所述虚拟机将I/O请求通过管理网链路发送给共享存储的方法为:
所述虚拟机将缓存队列中缓存的I/O请求及后续的I/O请求路由到位于第一服务器的I/O代理进程,由I/O代理进程将I/O请求转发给位于第二服务器的I/O代理进程,由所述第二服务器的I/O代理进程代理转发给所述共享存储。
进一步地,所述方法还包括:
当所述服务器集群中的第二服务器、第三服务器、第二服务器与共享存储之间的存储网链路和第三服务器与共享存储之间的存储网链路都正常时,所述第一服务器的I/O代理进程基于负载均衡策略从第二服务器和第三服务器中选择一个作为代理服务器,将I/O请求转发给所述代理服务器上的I/O代理进程以使其将所述I/O请求转发给所述共享存储。
进一步地,所述负载均衡策略为根据虚拟机标识对正常服务器总数取模的结果来确定代理服务器;或基于所述第二服务器和第三服务器与所述共享存储之间存储链路的I/O负载选择负载较小的服务器作为代理服务器。
基于本公开的另一方面,提供了一种虚拟机高可用实现装置,该装置应用于服务器集群中的第一服务器,所述第一服务器上运行有虚拟机,该装置包括:
存储链路检测模块,用于检测与共享存储之间的存储网链路是否故障;
I/O选路模块,用于根据存储链路检测模块的检测结果为虚拟机选择与共享存储之间的I/O请求及响应的传输路径;当虚拟机与共享存储之间的存储网链路正常时,选择与共享存储之间的存储网链路;当虚拟机与共享存储之间的存储链路故障时,选择与第二服务器之间的管理网链路,由第二服务器代理传输所述虚拟机与所述共享存储之间的I/O请求及响应;
I/O处理模块,用于根据I/O选路模块选择的传输路径下发所述虚拟机针对共享存储上的虚拟机磁盘文件的I/O请求及接收响应。
进一步地,存储链路检测模块通过心跳报文周期性检测虚拟机与共享存储之间的存储网链路是否故障。
进一步地,当所述I/O处理模块通过与共享存储之间的存储网链路向位于共享存储上的分配给该虚拟机的虚拟机磁盘文件下发I/O请求时,如果下发失败,则所述I/O处理模块将I/O请求缓存到缓存队列当中;
当存储链路检测模块检测到所述虚拟机与共享存储之间的存储网链路故障时,所述I/O处理模块还用于将缓存队列当中缓存的I/O请求通过管理网链路发送给所述共享存储;
所述I/O处理模块通过管理网链路发送I/O请求时,首先将I/O请求发送给第一服务器的I/O代理进程,由I/O代理进程将I/O请求转发给位于第二服务器的I/O代理进程,由所述第二服务器的I/O代理进程代理转发给所述共享存储。
进一步地,当所述服务器集群中的第二服务器、第三服务器、第二服务器与共享存储之间的存储网链路和第三服务器与共享存储之间的存储网链路都正常时,所述第一服务器的I/O代理进程基于负载均衡策略从第二服务器和第三服务器中选择一个作为代理服务器,将I/O请求转发给所述代理服务器上的I/O代理进程以使其将所述I/O请求转发给所述共享存储。
本公开提供的虚拟机高可用实现方案,在承载虚拟机的服务器访问共享存储异常时,虚拟机I/O请求可通过I/O代理快速切换到管理网链路正常下发,可实现虚拟机不关机的业务快速恢复,提高了高可用性能。
附图说明
为了更加清楚地说明本公开实施例或者现有技术中的技术方案,下面将对本公开实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本公开实施例的这些附图获得其他的附图。
图1为基于共享存储的虚拟化云平台架构中虚拟机高可用的实现原理图;
图2为本公开一实施例提供的虚拟机高可用实现方法的组网结构示意图;
图3为本公开一实施例提供的虚拟机高可用实现方法的步骤流程图;
图4为本公开一实施例提供的虚拟机高可用实现装置结构示意图;
图5为本公开一实施例提供的实现虚拟机高可用实现方法的电子设备结构示意图;
图6为本公开一具体实施例中基于分层结构示例的虚拟机高可用实现方案示意图。
具体实施方式
在本公开实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本公开实施例。本公开实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本公开中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
现有的HA高可用方案,在一个服务器与共享存储之间的存储网络连接异常时,虽然可以通过将虚拟机从故障的服务器迁移到另外一台服务器的方式快速启动恢复业务从而达到虚拟机高可用的目的,但是由于现有的方案是通过关闭再启动虚拟机的方式,虚拟机启动需要花一定时间再加上需要重新部署启动业务的时间,对于某些特殊的客户业务需求,要求业务中断时间更短、要求业务恢复速度更快的场景,现有的高可用方案就不能满足要求。
本公开的目的是提供一种在使用共享存储场景下虚拟机高可用的实现方案,在运行虚拟机的服务器与共享存储之间的存储网络异常后,通过管理网下发虚拟机I/O实现虚拟机高可用,虚拟机不用关机迁移,此方案能够解决现有高可用方案业务中断时间长且业务恢复慢的技术问题。
图2为本公开一实施例提供的虚拟机高可用实现方法的组网结构示意图,图3为本公开一实施例提供的虚拟机高可用实现方法的步骤流程图,该方法应用于由多个运行虚拟机的服务器构成的服务器集群中的服务器,例如服务器集群中包括三个服务器分别为第一服务器、第二服务器和第三服务器,运行虚拟机的服务器通过存储网与共享存储连接,服务器上的虚拟机在存储网络连接正常的情况下通过存储网访问位于共享存储的虚拟机磁盘镜像文件,当存储网异常时,通过管理网重定向存储I/O到其它服务器来实现高可用的目的。该方法包括:
步骤301.检测与共享存储之间的存储网链路是否故障;
为判断虚拟机与共享存储之间的存储网链路是否故障,可启动一个链路检测进程通过心跳报文等手段周期性检测虚拟机与共享存储之间的存储网链路是否故障,当检测到故障时及时指示虚拟机进行存储访问链路的切换。链路检测进程可实现于第一服务器上的虚拟机中或虚拟机的宿主系统中,例如可在虚拟机的QEMU模拟器中新增一个软件检测模块。
步骤302.当虚拟机与共享存储之间的存储网链路正常时,直接通过与共享存储之间的存储网链路传送针对位于共享存储上的虚拟机磁盘文件的I/O请求及响应;
虚拟机磁盘文件是虚拟化管理平台分配给虚拟机的存储空间的载体,也叫虚拟机的镜像文件。
步骤303.当虚拟机与共享存储之间的存储链路故障时,通过与第二服务器之间的管理网链路将针对位于共享存储上的虚拟机磁盘文件的I/O请求路由到第二服务器,以使第二服务器代理传输所述虚拟机与所述共享存储之间的I/O请求及响应。
当通过与共享存储之间的存储网链路向位于共享存储上的分配给虚拟机的虚拟机磁盘文件下发I/O请求时,如果下发失败,则将I/O请求缓存到缓存队列当中,在确定第一服务器上的虚拟机与共享存储之间的存储网链路故障时,将缓存队列中缓存的I/O请求及后续的I/O请求路由到位于第一服务器的I/O代理进程,由I/O代理进程将I/O请求转发给位于第二服务器的I/O代理进程,由第二服务器的I/O代理进程代理转发给共享存储,共享存储针对I/O请求响应和/或读取的数据按原路返回给位于第一服务器的虚拟机。
当服务器集群中存在两个以上的服务器时,存储链路产生故障的服务器需要获知其它服务器本身及其它服务器与共享存储之间的存储链路是否正常,并从其它服务器本身正常且服务器与共享存储之间的存储链路也正常的服务器中选择一个正常且链路状态较佳的服务器,将I/O请求转发给所选定的服务器,由选定的服务器上的I/O代理进程代理转发给共享存储。
例如,当服务器集群中存在三个服务器,分别为第一服务器、第二服务器和第三服务器,当第二服务器、第三服务器、第二服务器与共享存储之间的存储网链路和第三服务器与共享存储之间的存储网链路都正常时,第一服务器的I/O代理进程基于负载均衡策略从第二服务器和第三服务器中选择一个作为代理服务器,将I/O请求转发给代理服务器上的I/O代理进程以使其将I/O请求转发给共享存储。
本公开一实施例提供的可行的负载均衡策略可以为:(1)根据虚拟机标识对正常服务器总数取模的结果来确定代理服务器;(2)基于所述第二服务器和第三服务器与所述共享存储之间存储链路的I/O负载选择负载较小的服务器作为代理服务器。
图4为本公开一实施例提供的虚拟机高可用实现装置结构示意图,该装置400中的各功能模块可以采用软件模块、硬件单元亦或是软硬件结合的方式实现。该装置应用于服务器集群中多个服务器中的任一服务器,例如第一服务器上,第一服务器上运行有一个或多个虚拟机,该装置400包括:存储链路检测模块410、I/O选路模块420、I/O处理模块430。
存储链路检测模块410用于检测与共享存储之间的存储网链路是否故障。
I/O选路模块420用于根据存储链路检测模块410的检测结果为虚拟机选择与共享存储之间的I/O请求及响应的传输路径。当虚拟机与共享存储之间的存储网链路正常时,I/O选路模块420为虚拟机选择与共享存储之间的存储网链路传输I/O请求及响应。当虚拟机与共享存储之间的存储链路故障时,I/O选路模块420为虚拟机选择与第二服务器之间的管理网链路传输I/O请求及响应,由第二服务器代理传输所述虚拟机与所述共享存储之间的I/O请求及响应。
I/O处理模块430用于根据I/O选路模块选择的传输路径下发虚拟机针对共享存储上的虚拟机磁盘文件的I/O请求及接收响应。
优选地,存储链路检测模块410可通过心跳报文来周期性检测虚拟机与共享存储之间的存储网链路是否故障。
优选地,当I/O处理模块430通过与共享存储之间的存储网链路向位于共享存储上的分配给该虚拟机的虚拟机磁盘文件下发I/O请求时,如果下发失败,则所述I/O处理模块430将I/O请求缓存到缓存队列当中;
当存储链路检测模块410检测到所述虚拟机与共享存储之间的存储网链路故障时,所述I/O处理模块430还用于将缓存队列当中缓存的I/O请求通过管理网链路发送给共享存储;
进一步地,所述装置还包括I/O代理模块440,I/O处理模块430通过管理网链路发送I/O请求时,首先将I/O请求发送给第一服务器的I/O代理模块440,由I/O代理模块440将I/O请求转发给位于第二服务器的I/O代理进程,由所述第二服务器的I/O代理进程代理转发给所述共享存储。
优选地,当服务器集群中的第二服务器、第三服务器、第二服务器与共享存储之间的存储网链路和第三服务器与共享存储之间的存储网链路都正常时,第一服务器的I/O代理模块440基于负载均衡策略从第二服务器和第三服务器中选择一个作为代理服务器,将I/O请求转发给所述代理服务器上的I/O代理进程以使其将所述I/O请求转发给所述共享存储。
图5为本公开一实施例提供的一种电子设备结构示意图,该设备500包括:诸如中央处理单元(CPU)的处理器510、内部总线520、网络接口540以及计算机可读存储介质530。其中,处理器510与计算机可读存储介质530可以通过内部总线520相互通信。计算机可读存储介质530内可存储本公开提供的用于实施上述虚拟机高可用实现方法的计算机程序,当计算机程序被处理器510执行时即可实现本公开提供的虚拟机高可用实现方法的各步骤功能。其中,机器可读存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
以下通过一具体实施例来说明本公开技术方案的实现过程。该实施例中,通过在hypervisor层实现存储链路检测模块410(简称为Checker)和I/O代理模块440(简称为I/OAgent),如图6所示,假设服务器集群包括两个服务器,分别为主机A和主机B,主机A和主机B分别通过存储网络链路连接共享存储(Share Storage),存储链路检测模块410、I/O选路模块420和I/O处理模块430可位于虚拟机的Qemu模拟器中,Qemu模拟器可高效完成I/O选路切换和I/O正常下发,即使存储网中断虚拟机业务只有非常短暂的中断基本无感知,相比传统虚拟机高可用方案,这是一套更先进的虚拟机高可用方案。
I/O agent通过可通过C语言程序实现,每个hypervisor服务器可部署一个I/OAgent程序,主要用来处理I/O网络报文实现包括但不限于:组装包含I/O信息的TCP网路报文、发送TCP网络报文、接收网络报文并解析出I/O信息和目标文件信息、打开目标文件写I/O。
当主机A存储网链路异常后,虚拟机VM的I/O请求通过I/O Agent被发送到主机B上的I/O Agent进程,主机B上的I/O Agent在解析出I/O请求后将I/O请求继续读写目标文件。这样虚拟机里面的业务中断时间很短基本无感知。
Qemu模拟器是虚拟机I/O处理的用户态进程,需要在Qemu程序中主要实现几个功能:
(1)Checker模块的实现,该模块可周期性检测存储网链路是否正常,每5s检测一次,连续检测10次都异常,则认为存储网产生故障。
(2)I/O处理模块的实现,I/O处理模块实现错误I/O重试功能,当Qemu中I/O处理模块通过存储网链路向共享存储传送I/O请求时,若收到I/O请求传输失败信息,不将失败的I/O请求返回给虚拟机操作系统,而是将传输失败I/O请求置为pendding状态挂在缓存列表如pendding链表中并定期重试。
(3)I/O选路模块,I/O选路模块用于根据Checker模块的检测结果为I/O处理模块选择I/O请求的传输路径,当Checker模块检查存储网链路异常后,I/O处理模块将pendding链表中的I/O发给I/O Agent进程,同时虚拟机新下发的I/O也会发给I/O Agent,目的是将I/O通过管理网转发给其它主机完成I/O下发。当主机A上的Checker模块检测到存储网链路恢复后,I/O选路模块会将传输链路切换回存储网链路,I/O处理模块会等待所有的I/OAgent将I/O请求传送完成后,通过存储网链路继续下发新的I/O,实现链路切换回到存储网,虚拟机无感知。
(4)I/O代理模块即I/O Agent进程,主机A的I/O Agent进程在收到I/O请求后,将I/O通过管理网发送给主机B上的I/O Agent进程,主机B上的I/O Agent进程通过解析后将I/O写到共享存储上完成虚拟机I/O的读写。
使用本公开提供的虚拟机高可用实现方案后,在主机访问存储异常后,虚拟机I/O可以快速切换到管理网正常下发;相比传统的高可用方案,此高可用方案虚拟机不用关机,虚拟机影响更小,业务恢复速度更快,用户体验更好。
应当认识到,本公开的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本公开描述的过程的操作,除非本公开另外指示或以其他方式明显地与上下文矛盾。本公开描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本公开的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本公开所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本公开所述的方法和技术编程时,本公开还包括计算机本身。
本公开实施例提供的设备与本公开实施例提供的方法出于相同的技术构思,具有与其采用、运行或实现的方法相同的有益效果。
以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种虚拟机高可用实现方法,其特征在于,该方法应用于服务器集群中的第一服务器,所述第一服务器上运行有虚拟机,所述方法包括:
检测与共享存储之间的存储网链路是否故障;
当虚拟机与共享存储之间的存储网链路正常时,直接通过与共享存储之间的存储网链路传送针对位于共享存储上的虚拟机磁盘文件的I/O请求及响应;
当虚拟机与共享存储之间的存储链路故障时,通过与第二服务器之间的管理网链路将针对位于共享存储上的虚拟机磁盘文件的I/O请求路由到第二服务器,以使第二服务器代理传输所述虚拟机与所述共享存储之间的I/O请求及响应。
2.根据权利要求1所述的方法,其特征在于,所述检测与共享存储之间的存储网链路是否故障的方法为:
启动一个链路检测进程通过心跳报文周期性检测虚拟机与共享存储之间的存储网链路是否故障。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当虚拟机通过与共享存储之间的存储网链路向位于共享存储上的分配给该虚拟机的虚拟机磁盘文件下发I/O请求时,如果下发失败,所述虚拟机将I/O请求缓存到缓存队列;
当确定所述虚拟机与共享存储之间的存储网链路故障时,所述虚拟机将I/O请求通过管理网链路发送给共享存储的方法为:
所述虚拟机将缓存队列中缓存的I/O请求及后续的I/O请求路由到位于第一服务器的I/O代理进程,由I/O代理进程将I/O请求转发给位于第二服务器的I/O代理进程,由所述第二服务器的I/O代理进程代理转发给所述共享存储。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述服务器集群中的第二服务器、第三服务器、第二服务器与共享存储之间的存储网链路和第三服务器与共享存储之间的存储网链路都正常时,所述第一服务器的I/O代理进程基于负载均衡策略从第二服务器和第三服务器中选择一个作为代理服务器,将I/O请求转发给所述代理服务器上的I/O代理进程以使其将所述I/O请求转发给所述共享存储。
5.根据权利要求4所述的方法,其特征在于,
所述负载均衡策略为根据虚拟机标识对正常服务器总数取模的结果来确定代理服务器;或基于所述第二服务器和第三服务器与所述共享存储之间存储链路的I/O负载选择负载较小的服务器作为代理服务器。
6.一种虚拟机高可用实现装置,其特征在于,该装置应用于服务器集群中的第一服务器,所述第一服务器上运行有虚拟机,该装置包括:
存储链路检测模块,用于检测与共享存储之间的存储网链路是否故障;
I/O选路模块,用于根据存储链路检测模块的检测结果为虚拟机选择与共享存储之间的I/O请求及响应的传输路径;当虚拟机与共享存储之间的存储网链路正常时,选择与共享存储之间的存储网链路;当虚拟机与共享存储之间的存储链路故障时,选择与第二服务器之间的管理网链路,由第二服务器代理传输所述虚拟机与所述共享存储之间的I/O请求及响应;
I/O处理模块,用于根据I/O选路模块选择的传输路径下发所述虚拟机针对共享存储上的虚拟机磁盘文件的I/O请求及接收响应。
7.根据权利要求6所述的装置,其特征在于,
存储链路检测模块通过心跳报文周期性检测虚拟机与共享存储之间的存储网链路是否故障。
8.根据权利要求7所述的装置,其特征在于,
当所述I/O处理模块通过与共享存储之间的存储网链路向位于共享存储上的分配给该虚拟机的虚拟机磁盘文件下发I/O请求时,如果下发失败,则所述I/O处理模块将I/O请求缓存到缓存队列当中;
当存储链路检测模块检测到所述虚拟机与共享存储之间的存储网链路故障时,所述I/O处理模块还用于将缓存队列当中缓存的I/O请求通过管理网链路发送给所述共享存储;
所述I/O处理模块通过管理网链路发送I/O请求时,首先将I/O请求发送给第一服务器的I/O代理进程,由I/O代理进程将I/O请求转发给位于第二服务器的I/O代理进程,由所述第二服务器的I/O代理进程代理转发给所述共享存储。
9.根据权利要求8所述的装置,其特征在于,
当所述服务器集群中的第二服务器、第三服务器、第二服务器与共享存储之间的存储网链路和第三服务器与共享存储之间的存储网链路都正常时,所述第一服务器的I/O代理进程基于负载均衡策略从第二服务器和第三服务器中选择一个作为代理服务器,将I/O请求转发给所述代理服务器上的I/O代理进程以使其将所述I/O请求转发给所述共享存储。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实现如权利要求1至5中任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011531205.4A CN112637336B (zh) | 2020-12-22 | 2020-12-22 | 一种虚拟机高可用实现方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011531205.4A CN112637336B (zh) | 2020-12-22 | 2020-12-22 | 一种虚拟机高可用实现方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112637336A CN112637336A (zh) | 2021-04-09 |
CN112637336B true CN112637336B (zh) | 2022-05-27 |
Family
ID=75321083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011531205.4A Active CN112637336B (zh) | 2020-12-22 | 2020-12-22 | 一种虚拟机高可用实现方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112637336B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011159249A (ja) * | 2010-02-04 | 2011-08-18 | Nec Corp | コンピュータシステム、仮想マシン管理方法、及び仮想マシン管理プログラム |
CN204928858U (zh) * | 2015-09-01 | 2015-12-30 | 陕西长城信息有限责任公司 | 一种基于交换机的备份链路系统 |
CN105302661A (zh) * | 2014-06-04 | 2016-02-03 | 北京云端时代科技有限公司 | 一种实现虚拟化管理平台高可用的系统和方法 |
CN106293874A (zh) * | 2016-07-29 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种对高可用集群进行监控的方法及装置 |
CN107122229A (zh) * | 2017-04-21 | 2017-09-01 | 紫光华山信息技术有限公司 | 一种虚拟机恢复方法及装置 |
CN111880906A (zh) * | 2020-08-03 | 2020-11-03 | 广东省华南技术转移中心有限公司 | 虚拟机高可用性管理方法、系统以及存储介质 |
-
2020
- 2020-12-22 CN CN202011531205.4A patent/CN112637336B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011159249A (ja) * | 2010-02-04 | 2011-08-18 | Nec Corp | コンピュータシステム、仮想マシン管理方法、及び仮想マシン管理プログラム |
CN105302661A (zh) * | 2014-06-04 | 2016-02-03 | 北京云端时代科技有限公司 | 一种实现虚拟化管理平台高可用的系统和方法 |
CN204928858U (zh) * | 2015-09-01 | 2015-12-30 | 陕西长城信息有限责任公司 | 一种基于交换机的备份链路系统 |
CN106293874A (zh) * | 2016-07-29 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种对高可用集群进行监控的方法及装置 |
CN107122229A (zh) * | 2017-04-21 | 2017-09-01 | 紫光华山信息技术有限公司 | 一种虚拟机恢复方法及装置 |
CN111880906A (zh) * | 2020-08-03 | 2020-11-03 | 广东省华南技术转移中心有限公司 | 虚拟机高可用性管理方法、系统以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112637336A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5851503B2 (ja) | 高可用性仮想機械環境におけるアプリケーションの高可用性の提供 | |
US9600380B2 (en) | Failure recovery system and method of creating the failure recovery system | |
US8078764B2 (en) | Method for switching I/O path in a computer system having an I/O switch | |
KR101504882B1 (ko) | 하드웨어 장애 완화 | |
US9152447B2 (en) | System and method for emulating shared storage | |
JP2004030363A (ja) | 論理計算機システム、論理計算機システムの構成制御方法および論理計算機システムの構成制御プログラム | |
US10735250B2 (en) | Dynamic distributor selection for network load balancing | |
US20090083467A1 (en) | Method and System for Handling Interrupts Within Computer System During Hardware Resource Migration | |
US9049101B2 (en) | Cluster monitor, method for monitoring a cluster, and computer-readable recording medium | |
CN107145304B (zh) | 服务器、存储系统及相关方法 | |
CN113849136B (zh) | 一种基于国产平台的自动化fc块存储处理方法和系统 | |
JP5712714B2 (ja) | クラスタシステム、仮想マシンサーバ、仮想マシンのフェイルオーバ方法、仮想マシンのフェイルオーバプログラム | |
US10692168B1 (en) | Availability modes for virtualized graphics processing | |
CN112637336B (zh) | 一种虚拟机高可用实现方法、装置及存储介质 | |
CN112491570A (zh) | 一种虚拟网卡链路状态设置方法、装置及存储介质 | |
US10367711B2 (en) | Protecting virtual computing instances from network failures | |
US8935695B1 (en) | Systems and methods for managing multipathing configurations for virtual machines | |
KR101268290B1 (ko) | 가상화 시스템에서 디바이스 드라이버의 오류를 탐지하고 복구하는 장치 및 방법 | |
CN104618191A (zh) | 一种主机与裸存储块之间的通信故障检测方法和装置 | |
WO2015072004A1 (ja) | 計算機、計算機制御方法、および計算機制御プログラム | |
US10871908B2 (en) | Storage bypass driver operation in a highly available computer system | |
KR101432745B1 (ko) | 가상 클라우드 환경에서 클러스터의 분산 파일 시스템 및 데이터 복제 방법 | |
JP5832408B2 (ja) | 仮想計算機システム及びその制御方法 | |
US20220121463A1 (en) | Page fault support for virtual machine network accelerators | |
CN116700594A (zh) | 存储设备、存储方法、计算设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |