应用容错和恢复的系统和方法

文档序号:7651167阅读:214来源:国知局
专利名称:应用容错和恢复的系统和方法
技术领域
本发明一般地涉及改进的数据处理系统和方法。更具体地说,本发明涉及用于将正在运行的应用重定位到在拓扑上位于远程的计算系统的系统和方法。
背景技术
随着当今的社会越来越依赖电子系统执行日常活动,高可用性和灾难恢复在信息技术行业中越来越重要。在这种情况下,能够将正在运行的应用从一个服务器计算设备转移到另一个服务器计算设备,以便确保在服务器计算系统出现故障时可以使用正在运行的应用变得愈加重要。此外,在服务器计算系统出现故障时可以重定位正在运行的应用,以便可以在其他计算系统上恢复所述正在运行的应用很重要。
通过提供可以防止服务器和存储装置出现故障的群集式服务器/存储环境可以实现应用的高可用性。在此类环境中,当出现故障时,将在群集式服务器/存储环境中的冗余服务器和/或存储系统上重新启动应用,其中只有一小段时间使应用不可用。
在某些群集式服务器/存储环境中,提供了热备用服务器/存储系统并使用了日志传送技术。通过日志传送技术,可以通过生产服务器维护应用状态日志,并将所述日志传送到热备用服务器,以使备用服务器的应用状态接近生产服务器上的应用的当前状态。如果需要到备用服务器的故障转移,将只丢失自最后的日志更新传送到备用服务器以来的更新。
应该注意的是,此类服务器群集或存储系统群集在拓扑和地理上是受限制的,使得组成群集的设备必须彼此相对接近。群集式服务器/存储环境不提供任何用于在远程网络拓扑和/或地理距离上提供可用性和灾难恢复的应用独立机制。此外,群集式服务器/存储环境不提供任何此类具有零数据丢失(包括不丢失正在处理的事务)的可用性和恢复机制。
可从VMWare(可从www.vmware.com/products/vc/vmotion.html获得的VMotionTM的评估副本)获得的VMotionTM软件提供了一种用于在存储区域网络(SAN)中重定位正在运行的应用的已知解决方案。VMotionTM软件允许用户将正在运行的有效虚拟机从一个物理服务器计算系统移动到另一个连接到同一SAN的物理服务器计算系统,同时维护连续的服务可用性。由于SAN中的盘的虚拟化,所以VMotionTM软件能够执行此类重定位。
但是,VMotionTM的受限之处在于,它需要将整个虚拟机(其可以包括操作系统和多个正在运行的应用)移动到新的物理服务器计算设备。VMotionTM软件没有将单个应用从一个物理服务器计算设备移动到另一个物理服务器计算设备的能力。
此外,VMotionTM的受限之处在于,只能在同一SAN中将虚拟机从一个服务器计算设备移动到另一个服务器计算设备。因此,VMotionTM不能用于将虚拟机移动到SAN之外的其他服务器计算设备。这实质上对可以使用VMotionTM软件产品将虚拟机移动到其的服务器计算设备施加了网络拓扑和地理限制。
另一个用于提供正在运行的应用的高可用性和灾难恢复的已知解决方案是由Meiosys公司(最近被国际商业机器公司收购)提供的MetaClusterTMUC 3.0软件产品。如可从www.prnewswire.com的PR新闻专线访问的文章“Meiosys Releases MetaCluster UC Version 3.0(Meiosys发布MetaCluster UC 3.0版)”中所述,MetaClusterTM软件产品基于面向服务的体系结构并体现了最新一代的细粒度虚拟化技术,使得动态数据中心能够在所有负载条件下在应用无关的基础上提供服务级别保持和基础设施优化。
不同于粗粒度虚拟机技术和虚拟机移动技术(如上述的VMotionTM,其在操作系统级别运行并且一次只能移动整个虚拟机),MetaClusterTM软件产品在操作系统与应用之间的中间件层运行。MetaClusterTM提供了围绕每个应用的容器技术,为应用和应用过程提供资源隔离和机器到机器移动。
MetaClusterTM软件产品的应用虚拟化和容器技术允许跨物理和虚拟机来重定位应用。MetaClusterTM还提供了基本的业务智能,其允许企业设置阈值并定义规则以便管理从机器到机器重定位应用和应用过程,以解决高可用性和使用业务的情况。
为业务关键应用部署MetaClusterTMUC 3.0允许高效地虚拟化应用,使得性能影响并不明显(通常在1%以下)。然后可以将虚拟化后的应用移动到从资源优化和服务质量的观点来看最适合的基础设施。可以动态地重新分配服务器容量以实现高级别的利用率而不损害性能。由于MetaClusterTMUC 3.0允许在重定位期间保持应用的状态和上下文,所以重定位对于应用的用户来说是快速和透明的。
MetaClusterTMUC 3.0使用透明的“检查点和重新启动”功能在服务器群集中执行此类应用重定位。当生成检查点时,将保存特定时间点的用于重新创建正在运行的应用的完整状态、连接和上下文的必要有状态数据和元数据。然后可以将此检查点提供给与原始服务器计算设备在同一群集中的其他服务器计算设备。向其提供了检查点的服务器计算设备然后可以使用检查点信息来重新启动应用(使用从群集的共享存储系统获取的应用数据),并且在新的服务器计算设备上重新创建应用的状态、连接和上下文。
在由Meiosys提供的其他产品(即MetaClusterTMFT)中,提供了“记录和重播”技术,其中将在运行时持续影响应用行为的事件以日志文件的形式记录到盘,然后在出现故障时可以重播这些事件。这样,MetaClusterTMFT的“记录和重播”技术允许在出现故障时,在同一服务器群集的冗余应用实例上重播记录的事件,以便提供故障转移容错。例如,可以从月度的www.hoise.com/primeur/05/articles/monthly/AE-PR-05-05-46.html访问的“Meiosys breaks technology barrier for cost-effective faulttolerance technology designed to be embedded in OEM platformsolutions(Meiosys突破了旨在嵌入OEM平台解决方案的成本有效容错技术的技术障碍)”和可以从www2.laas.fr/IFIPWG/Workshops&Meetings/47/WS/04-Rougier.pdf访问的在波多黎各的第47届IFIP WG10.4会议的演示材料中,找到有关MetaClusterTMFT(先前称为“Meiosys FT”)的“记录和重播”方面的信息。
虽然MetaClusterTMUC 3.0和MetaClusterTMFT允许重定位和故障转移同一群集中的单个应用(与需要重定位整个虚拟机相反),但是MetaClusterTMUC和FT仍限于服务器计算设备的本地化的群集。就是说,MetaClusterTM依靠所有可以访问共享存储系统的服务器计算设备的能力来访问应用数据。因此,MetaClusterTMUC和FT不允许将正在运行的应用移动或重定位到服务器群集之外,或将应用实例故障转移到服务器群集之外。这再次限制了可以将正在运行的应用重定位到其和可以向其执行故障转移的计算设备的网络拓扑和地理位置。

发明内容
鉴于以上所述,具有一种用于使用在拓扑和/或地理上位于远程的计算设备来提供应用容错和恢复的系统、方法和计算机程序产品是有利的。此外,具有一种用于将正在运行的应用重定位到在拓扑上位于远程的、在计算设备(所述正在运行的应用先前存在于其中)的存储区域网络或群集之外的计算设备是有利的。此外,具有此类保持生产计算设备与位于远程的计算设备之间的同步以便不会出现数据丢失(包括不丢失与正在处理的事务有关的数据)的容错和重定位机制是有利的。下文描述的示例性实施例提供了这样的系统、方法和计算机程序产品。
应该注意的是,在此提供的示例性实施例的描述提到计算设备是“在拓扑上位于远程”。在本说明中,“在拓扑上位于远程”指计算系统在从其重定位正在运行的应用的计算设备的群集或存储区域网络之外。在许多情况下,在拓扑上位于远程的计算系统同样是在地理上位于远程的,但是这不要求该计算系统在拓扑上位于远程。相反,就连接不同计算设备的网络拓扑而言,在拓扑上位于远程的计算系统只需是位于远程的。
根据示例性实施例的机制,主计算设备在生产场所运行应用的一个实例(即,主应用实例),活动的备用计算设备在恢复场所运行应用的第二实例(即,影子应用实例),所述恢复场所可以在拓扑上远离所述生产场所。所述主计算设备和活动的备用计算设备具有相同的虚拟网络地址,这样两个计算设备都可以通过网络地址虚拟化从网络接收相同的输入,如本领域中通常公知的那样。
通过在主计算设备上运行初始应用“检查点”,之后在活动的备用计算设备上运行应用“重新启动”,使所述应用的两个实例变为一致的状态。在主计算设备上生成主应用实例的“检查点”和在活动的备用计算设备上“重新启动”影子应用实例可以利用在共同受让和共同未决的美国专利申请No.11/340,813(代理案号No.SJ0920050108US1,2006年1月25日申请,其全部内容在此引入作为参考)中描述的机制。例如,生成检查点可以涉及将主计算设备上的主应用实例的应用数据复制到在拓扑上位于远程的计算设备的存储系统。可以使用镜像技术(例如,对等远程复制操作)来执行应用数据的复制。
除了复制应用数据之外,还可以生成主应用实例的有状态检查点并将其存储在存储介质中。所述有状态检查点包括一组元数据,该组元数据描述了在生成所述有状态检查点时,在特定时间点的主应用实例的当前状态。优选地,与复制应用数据基本同时地生成有状态检查点,以便确保由有状态检查点元数据表示的应用的状态与应用数据匹配。
可以以与应用数据相似的方式将有状态检查点元数据复制到与在拓扑上位于远程的计算设备关联的相同或不同存储系统。例如,可以对检查点元数据执行对等远程复制操作以将检查点元数据复制到在拓扑上位于远程的存储系统。
在一个示例性实施例中,可以使用MetaClusterTM产品生成主应用实例的有状态检查点元数据,好像在服务器计算设备的本地群集中重定位应用那样。在此类示例性实施例中,可以使用可从纽约阿蒙克的国际商业机器公司购买的对等远程复制(PPRC)产品(也称为Metro MirrorTM)将有状态检查点元数据和应用数据重定位到在拓扑上位于远程的计算设备。
此外,在另一个实施例中,可以使用也可从国际商业机器公司购买的Global MirrorTM产品(该产品实现保证一致的异步复制方法)来执行重定位。Global MirrorTM实际上是可从国际商业机器公司购买的MetroMirrorTM产品、Global CopyTM产品和FlashCopyTM产品的组合。GlobalMirrorTM使用Global Copy最大化数据复制吞吐量并动态切换到同步模式(Metro Mirror)以达到一致状态,使用FlashCopyTM保持一致状态,以及切换回Global CopyTM(也称为PPRC-XD)。Metro MirrorTM没有数据丢失,但限于约300公里的范围,而Global MirrorTM存在很小程度的数据丢失,但没有距离限制。
生成在主计算设备上运行的主应用实例的初始检查点,并将此检查点的有状态检查点元数据和应用数据复制到在拓扑上位于远程的计算设备之后,使用所述应用数据和有状态检查点元数据来“重新启动”影子应用实例。这实际上使影子应用实例具有与主应用实例相同的状态和应用数据,由此将影子应用实例和主应用实例同步。
在同步应用实例以便它们彼此具有一致的状态后,可以将主应用实例中发生的事件连续地记录在日志中,然后在恢复场所重播所述事件,以使应用实例的状态保持一致。所述日志可以是到影子应用实例的高速管道、共享文件系统上的日志文件、自动复制并在恢复场所应用的日志文件等。
在一个示例性实施例中,可以在将日志事件数据写入生产场所的日志存储装置或在关闭日志文件时,通过对日志事件数据自动执行对等远程复制操作来提供应用实例之间的连续一致性。就是说,例如,可以将日志事件数据写入生产场所的日志存储装置内的日志文件,然后使用MetroMirrorTM或Global MirrorTM操作将所述数据自动复制到与恢复场所关联的存储系统。备选地,可以将日志事件数据写入生产场所的日志存储装置中的日志文件,然后在关闭日志文件时将所述数据复制到恢复场所处的日志存储装置。
在任一实施例中,最终都将关闭日志,如在日志已满或在某些预定时间间隔,在所述时间,将事件的记录从第一日志文件切换到第二日志文件。可以将日志的关闭告知恢复场所中的活动备用计算设备,此刻可以由影子应用实例重播第一日志文件中记录的事件,而使用第二日志文件继续事件记录。使用第二日志文件的事件记录同样被自动复制到与恢复场所关联的存储系统。
影子应用实例优选地禁用其所有的网络输出(即影子套接字),以避免在网络上与主应用实例出现冲突(如消息重复)。在生产场所的主应用实例出现故障并且影子应用实例必须接管出现故障的主应用实例的情况下,可以激活影子应用实例的网络输出。
当在生产场所出现主应用实例故障时,活动的备用计算设备将检测到主应用实例的丢失。影子应用实例处于与最后重播的记录事件对应的状态,这通常发生在将日志例如从第一日志文件切换到第二日志文件时。此时,通过使用对等复制操作连续自动复制的第二日志文件包含自日志切换以来主应用实例中发生的所有事件。因此,影子应用实例只需重播第二日志中的事件,以便使影子应用实例成为与主应用实例的状态对应的、恰好在主应用实例出现故障之前的状态。然后可以启用网络输出(即影子套接字),使得影子应用实例现在可以生成通过网络发送到客户机设备的输出。这样,影子应用实例便可以接管主应用实例的功能而没有数据丢失。
在一个示例性实施例中,提供了包括具有计算机可读程序的计算机可用介质的计算机程序产品。当所述计算机可读程序在备用计算设备上执行时,将导致所述备用计算设备从在拓扑上远离所述备用计算设备的主计算设备自动地接收写入与所述主计算设备关联的第一日志数据结构的主应用实例的事件数据。所述计算机可读程序还可以导致所述计算设备将所述事件数据存储在与所述备用计算设备和影子应用实例关联的第二日志数据结构中。所述主应用实例和影子应用实例可以是同一应用的实例。所述计算机可读程序还可以导致所述计算设备通过重播与所述影子应用实例关联的第二日志中的事件来更新所述影子应用实例的状态,由此使所述影子应用实例的状态变为与所述主应用实例一致的状态。此外,所述计算机可读程序还可以导致所述计算设备使用所述影子应用实例将所述主应用实例重定位到所述备用计算设备以响应所述主应用实例的故障。
所述计算机可读程序可以导致所述备用设备更新所述影子应用实例的状态,以响应从所述主计算设备接收到指示日志切换事件的日志切换事件消息。所述计算机可读程序可以导致所述备用计算设备在接收所述日志切换事件消息之后,将接收的事件数据存储到与所述影子应用实例关联的第三日志数据结构。所述计算机可读程序还可以导致所述备用计算设备通过检测所述主计算设备上的所述主应用实例的故障,以及重播所述第三日志数据结构中的事件以响应检测到所述主应用实例的所述故障,来将所述主应用实例重定位到所述备用计算设备。
所述主计算设备和备用计算设备具有相同的虚拟网络地址,在重定位所述主应用实例之前,启用了所述主应用实例的输入和输出套接字,但只启用了所述影子应用实例的输入套接字。
所述计算机可读程序还可以导致所述备用计算设备检测所述主计算设备上的所述主应用实例的故障,并且重播所述第三日志数据结构中的事件以响应检测到所述主应用实例的所述故障,由此使所述影子应用实例成为与所述主应用实例一致的、恰好在所述主应用实例的所述检测到的故障之前的状态。所述计算机可读程序还启用所述影子应用实例的输出套接字以响应检测到所述主应用实例的所述故障。
所述计算机可读程序还可以导致所述备用计算设备在从所述主计算设备接收事件数据之前,将所述影子应用实例的状态与所述主应用实例的状态同步。所述计算机可读程序可以导致所述备用计算设备通过以下操作将所述影子应用实例的状态与所述主应用实例的状态同步从所述在拓扑上位于远程的主计算设备接收所述主应用实例的应用数据,以及接收包括检查点元数据的应用检查点,所述检查点元数据代表与所述应用数据的副本相同的时间点。所述计算机可读程序可以使用所述应用数据和检查点元数据来初始化所述备用计算设备上的所述影子应用实例。
所述主计算设备可以自动地将所述主应用实例中发生的事件的事件数据写入所述第一日志数据结构,并在将所述事件数据写入所述第一日志数据结构时,自动地将所述事件数据复制到所述第二日志数据结构。可以通过由所述主计算设备执行的对等远程复制操作来自动接收所述事件数据。
所述备用计算设备可以在地理上远离所述主计算设备。所述备用计算设备可以在所述主计算设备的群集或存储区域网络之外。在另一个示例性实施例中,提供了包括处理器和连接到所述处理器的存储器的备用计算设备。所述存储器可以包含指令,当所述指令由所述处理器执行时,将导致所述处理器执行上述与计算机程序产品的示例性实施例相关的操作中的各种操作和操作组合。
在另一个示例性实施例中,提供了一种在备用计算设备中用于提供影子应用实例以便重定位主应用实例的方法。所述方法可以包括上述与计算机程序产品的示例性实施例相关的操作中的各种操作和操作组合。
本发明的这些和其他特征和优点将在以下详细说明中进行描述,或者鉴于以下详细说明,本发明的这些和其他特征和优点将对本领域的技术人员变得显而易见。


在所附权利要求中说明了被认为是本发明特性的新颖特征。但是,当结合附图阅读时,通过参考以下对示例性实施例的详细说明,可以最佳地理解发明本身及其优选使用方式、进一步的目的和优点,这些附图是图1是其中可以实现示例性实施例的示例性方面的分布式数据处理系统的示例性方块图;图2是其中可以实现示例性实施例的示例性方面的服务器计算设备的示例性方块图;图3是示出了根据一个示例性实施例的对等远程复制操作的示例性方块图;图4是示出了根据一个示例性实施例的用于维护两个在拓扑上位于远程的相关应用实例之间的连续一致的应用状态的操作的示例性方块图;图5是根据一个示例性实施例的主容错引擎的主操作组件的示例性方块图;图6是根据一个示例性实施例的远程容错引擎的主操作组件的示例性方块图;图7是示出了根据一个示例性实施例的用于维护在拓扑上位于远程的两个相关应用实例之间的连续一致状态的示例性操作的流程图;以及图8是示出了根据一个示例性实施例的用于执行从主应用实例到影子应用实例的故障转移操作的示例性操作的流程图。
具体实施例方式
在此说明的示例性实施例提供了用于维护在活动备用计算设备中运行的影子应用实例的机制,所述活动备用计算设备在拓扑上并且通常在地理上远离(即,不在同一存储区域网络或群集内)运行同一应用的主应用实例的主计算设备。这样,优选地在分布式数据处理环境中实现示例性实施例的机制。
在以下说明中,将根据分布式数据处理环境来描述示例性实施例的机制,在所述环境中提供了多个可以通过一个或多个网络和通信链路互相通信的数据处理系统。图1和2提供了其中可以实现示例性实施例的各方面的数据处理环境的实例。所示出的数据处理环境只是示例性的,并且未非旨在声明或暗示对其中可以实现示例性实施例的示例性方面的数据处理环境的类型或配置的任何限制。在不偏离本发明的精神和范围的情况下,可以对图1和2中示出的数据处理环境做出许多修改。
现在参考附图,图1示出了其中可以实现本发明的数据处理系统100的网络的图形表示。网络数据处理系统100包含局域网(LAN)102和广域数据网络130,所述网络是用于提供网络数据处理系统100中连接在一起的多个设备和计算机之间的通讯链路的介质。局域网102和广域数据网络130可以包括诸如有线通信链路、无线通信连接、光缆之类的连接。
在示出的实例中,服务器计算设备102-105连接到局域网102。例如,服务器计算设备102-105可以包括存储区域网络(SAN)或服务器群集120。SAN和服务器群集通常是本领域所公知的,因此,将不在此提供对SAN/群集120的更详细的说明。
除了服务器计算设备102-105之外,客户机112也连接到局域网102。客户机108和110连接到广域数据网络130。这些客户机108、110和112可以例如是个人计算机、工作站、应用服务器等。在示出的实例中,服务器计算设备102-105可以存储、跟踪和检索客户机108、110和112的数据对象。客户机108、110和112是服务器计算设备102-105的客户机,因此可以通过局域网102和/或广域数据网络130与服务器计算设备102-105通信,以便在服务器计算设备102-105上运行应用和与正在运行的应用联系,并从这些服务器计算设备102-105获取数据对象。网络数据处理系统100可以包括其他服务器、客户机和其他未示出的设备。
广域数据网络130连接到局域网102。在示出的实例中,广域数据网络130可以是因特网,其代表使用传输控制协议/网际协议(TCP/IP)协议套件来彼此通信的世界范围内的网络和网关的集合。在因特网的中心是主节点或主机之间的高速数据通信线路的主干,其包括数以千计的路由数据和消息的商业、政府、教育计算机系统和其他计算机系统。
当然,广域数据网络130还可以实现为多种不同类型的网络,例如,内联网、其他局域网(LAN),广域网(WAN)等。图1只是作为实例,并非旨在声明或暗示对在此说明的示例性实施例的任何体系结构限制。
应该注意,群集中的服务器通常使用因特网来彼此通信,使用TCP/IP用于消息传送业务。参与镜像的存储控制器(如下面说明的Metro MirrorTM或Global MirrorTM)通常使用FICON通道命令、SCSI命令或TCP/IP通过单独的存储网络进行通信。
服务器计算设备140连接到广域数据网络130并具有关联的存储系统150。存储系统150示为与服务器计算设备140直接相连,但是备选地,其可以由服务器计算设备140通过广域数据网络130或其他网络(未示出)来间接访问。服务器计算设备140在拓扑上远离SAN/群集120。就是说,服务器计算设备140不是SAN/群集120的一部分。此外,服务器计算设备140可以在地理上远离SAN/群集120。
在一个示例性实施例中,服务器计算设备140作为SAN/群集120中的一个或多个服务器计算设备102-105的活动备用服务器计算设备来运行。因此,服务器计算设备140在广域数据网络130上与SAN/群集120中的服务器计算设备102-105具有相同的虚拟网络地址。此类网络地址(如网际协议(IP)地址)的虚拟化通常是本领域所公知的,因此未在此提供详细的说明。说出以下事项就足够了通过虚拟化服务器计算设备102-105和140的网络地址,定向到或来自这些服务器计算设备102-105和140的网络业务可以使用与提供的用于将此类业务重定向到适当服务器计算设备102-105和140的机制相同的虚拟网络地址。
以下描述的示例性实施例通过使用在拓扑上位于远程的服务器计算设备140上的影子应用实例,提供了用于故障恢复SAN/群集120的一个或多个服务器计算设备102-105上的正在运行的应用实例的机制。应当理解,虽然将根据SAN/群集120上正在运行的应用实例的故障恢复来描述示例性实施例,但是所述示例性实施例和本发明并不限于此。相反,替代SAN/群集120,单个服务器计算设备或甚至客户机计算设备都可以是正在运行的主应用实例的源,使该应用实例的状态与在拓扑上位于远程的计算设备(服务器或客户机计算设备)上的相应影子应用实例一致,以便在不偏离本发明的精神和范围的情况下提供容错。
现在参考图2,图2示出了根据本发明的优选实施例的可以作为服务器计算设备(例如图1中的一个或多个服务器计算设备102-105或服务器计算设备140)实现的数据处理系统的方块图。数据处理系统200可以是包括连接到系统总线206的多个处理器202和204的对称多处理器(SMP)系统。备选地,可以使用单处理器系统。另外连接到系统总线206的是提供到本地存储器209的接口的存储器控制器/高速缓存208。I/O总线桥210连接到系统总线206并提供了到I/O总线212的接口。存储器控制器/高速缓存208和I/O总线桥210可以如图所示的那样集成。
连接到I/O总线212的外围组件互连(PCI)总线桥214提供了到PCI本地总线216的接口。可以将多个调制解调器连接到PCI本地总线216。典型的PCI总线实现将支持四个PCI扩展槽或附加连接器。可以通过经由附加连接器连接到PCI本地总线216的调制解调器218和/或网络适配器220提供到图1中的客户机102-112和/或其他连接网络的设备的通信链路。
其他PCI总线桥222和224提供了其他PCI本地总线226和228的接口,通过所述总线可以支持其他调制解调器或网络适配器。以这种方式,数据处理系统200允许到多个网络计算机的连接。还可以如图所示直接或间接地将存储器映射的图形适配器230和硬盘232连接到I/O总线212。
本领域的技术人员将理解,图2中示出的硬件可以有所变化。例如,除了所示的硬件或替代所示的硬件,还可以使用其他外围设备(如光盘驱动器等)。所示实例并非旨在暗示与本发明有关的体系结构限制。
例如,图2中示出的数据处理系统可以是IBM eServer pSeries系统,该系统是纽约阿蒙克的国际商业机器公司的产品,运行高级交互执行体(AIX)操作系统或LINUX操作系统。
再次参考图1,对于示例性实施例的机制,希望为在SAN/群集120的一个或多个服务器计算设备102-105上运行的应用实例提供高可用性和灾难恢复。具体地说,希望具有在拓扑和/地理上位于远程的服务器计算设备140,所述设备作为活动备用服务器计算设备进行操作,运行在一个或多个服务器计算设备102-105上正在运行的同一应用的影子应用实例。以这种方式,在拓扑和/或地理上位于远程的服务器计算设备140可以作为一个或多个服务器计算设备102-105的“热插拔”服务器计算设备进行操作,尽管它远离SAN/群集120。可以执行此类“热插拔”而不会在该过程中丢失数据。
如上所述,公知的机制(如VMotionTM和MetaClusterTM)只允许本地拓扑(如SAN/群集120)内正在运行的应用的重定位和故障转移。通过这些公知的机制,可以将正在运行的应用重定位或故障转移到其的计算设备必须可以访问同一共享存储系统,由此将重定位限于本地拓扑和地理区域。所述的公知机制不允许将正在运行的应用重定位/故障转移到在拓扑和/或地理上位于远程的计算设备。
借助示例性实施例的机制,主计算设备(如服务器102)在生产场所运行应用的一个实例(即主应用实例),活动的备用计算设备(如服务器140)在可能在拓扑和/或地理上远离生产场所的恢复场所处运行应用的第二实例(即影子应用实例)。主计算设备102和活动的备用计算设备140具有相同的虚拟网络地址,以便两个计算设备可以通过网络地址虚拟化从网络接收相同的输入,这通常在本领域是公知的。
通过在主计算设备102上运行初始应用“检查点”,之后在活动的备用计算设备140上运行应用“重新启动”,使应用的两个实例变为一致的状态。在主计算设备102上生成主应用实例的“检查点”和在活动的备用计算设备140上“重新启动”影子应用实例可以利用在共同受让和共同未决的美国专利申请No.11/340,813(2006年1月25日申请,其全部内容在此引入作为参考)中描述的机制。例如,生成检查点可以涉及将主计算设备102上的主应用实例的应用数据复制到在拓扑上位于远程的计算设备140的存储系统。可以使用镜像技术(例如,对等远程复制操作)来执行应用数据的复制。
除了复制应用数据之外,还可以生成主应用实例的有状态检查点并将其存储在存储介质中。所述有状态检查点包括一组元数据,该组元数据描述了在生成所述有状态检查点时,在特定时间点的主应用实例的当前状态。优选地,与复制应用数据基本同时地生成有状态检查点,以便确保由有状态检查点元数据表示的应用的状态与应用数据匹配。
可以以与应用数据相似的方式将有状态检查点元数据复制到与在拓扑上位于远程的计算设备140关联的相同或不同存储系统。例如,可以对检查点元数据执行对等远程复制操作以将检查点元数据复制到在拓扑上位于远程的存储系统。
在一个示例性实施例中,可以使用MetaClusterTM产品生成主应用实例的有状态检查点元数据,好像在服务器计算设备的本地群集中重定位应用那样。在此类示例性实施例中,可以使用对等远程复制操作(如由可从纽约阿蒙克的国际商业机器公司购买的产品Metro MirrorTM或GlobalMirrorTM提供的操作),将有状态检查点元数据和应用数据重定位到在拓扑上位于远程的计算设备。
例如,可以在可从PR新闻专线网站(www.prnewswire.com)访问的题为“Meiosys Releases MetaCluster UC Version 3.0(Meiosys发布MetaCluster UC版本3.0)”和“Meiosys Relocates MultiTier ApplicationWithout Interruption of Service(Meiosys重定位多层应用而不中断服务)”的文章中找到有关MetaClusterTM产品的信息。可以在美国专利申请公开No.2005/0251785中找到有关MetaClusterTM和在群集中复制应用状态的能力的其他信息。可以例如在可从国际商业机器公司官方网站(www.ibm.com)访问的作者为Castets等人的标题为“IBM TotalStorageEnterprise Storage Server PPRC Extended Distance(IBM TotalStorageEnterprise Storage Server PPRC扩展的距离)”的红皮书中获得有关示例性对等远程复制的信息。这些文档在此引入作为参考。
生成在主计算设备102上运行的主应用实例的初始检查点,并将此检查点的有状态检查点元数据和应用数据复制到在拓扑上位于远程的计算设备140之后,使用所述应用数据和有状态检查点元数据来“重新启动”影子应用实例。这实际上使影子应用实例具有与主应用实例相同的状态和应用数据,由此将影子应用实例和主应用实例同步。
在同步应用实例以便它们彼此具有一致的状态后,可以将主应用实例中发生的事件连续地记录在日志中,然后在恢复场所重播所述事件,以使应用实例的状态保持一致。所述日志可以是到影子应用实例的高速管道、共享文件系统(未示出)上的日志文件、自动复制并在恢复场所应用的日志文件等。例如,可以以与先前介绍的MetaClusterTMFT的记录和重播技术中提供的方式相似的方式来执行在日志中记录事件。
在一个示例性实施例中,可以在将日志事件数据写入生产场所的日志存储装置或在关闭日志文件时,通过对日志事件数据自动执行对等远程复制操作(例如,使用Metro MirrorTM或Global MirrorTM)来提供应用实例之间的连续一致性。就是说,例如,可以将日志事件数据写入生产场所的日志存储装置内的日志文件,然后使用对等远程复制操作将所述数据自动复制到与恢复场所关联的存储系统。备选地,可以将日志事件数据写入生产场所的日志存储装置中的日志文件,然后在关闭日志文件时将所述数据复制到恢复场所处的日志存储装置。
在任一实施例中,最终都将关闭日志,如在日志已满或在某些预定时间间隔,在所述时间,将事件的记录从第一日志文件切换到第二日志文件。可以将日志的关闭告知恢复场所中的活动备用计算设备,此刻可以由影子应用实例重播第一日志文件中记录的事件,而使用第二日志文件继续事件记录。使用第二日志文件的事件记录同样被自动复制到与恢复场所关联的存储系统。
影子应用实例优选地禁用其所有的网络输出(即影子套接字),以避免在网络上与主应用实例出现冲突(如消息重复)。例如,此类套接字禁用可以包括创建套接字并然后将其关闭。但是,在恢复场所的活动备用计算设备上,只禁用(关闭)套接字输出,而启用套接字输入。这允许由恢复场所处的活动备用计算设备重播所有记录的日志,但是不向网络发送出任何消息。生产场所计算设备从网络客户机接收输入消息(事件),而活动的备用计算设备从生产场所计算设备接收记录的事件日志,但是只有生产场所计算设备启用了套接字输出。
在生产场所的主应用实例出现故障并且影子应用实例必须接管出现故障的主应用实例的情况下,可以激活影子应用实例的网络输出。在生产场所的主应用实例出现故障时,活动的备用计算设备140检测到主应用实例的丢失。检测主应用实例的丢失可以例如基于未能从生产场所计算设备接收到心跳信号。可以在不偏离本发明的精神和范围的情况下,使用其他用于检测主应用实例故障的机制。
此刻,影子应用实例处于与最后重播的记录事件对应的状态,这通常发生在将日志例如从第一日志文件切换到第二日志文件时。此时,通过使用对等复制操作连续自动复制的第二日志文件包含自日志切换以来主应用实例中发生的所有事件。因此,影子应用实例只需重播第二日志中的事件,以便使影子应用实例成为与主应用实例的状态对应的、恰好在主应用实例出现故障之前的状态。然后可以启用网络输出(即影子套接字),使得影子应用实例现在可以生成通过网络发送到客户机设备的输出。由于活动的备用计算设备140具有与主计算设备102相同的虚拟网络地址,所以活动的备用计算设备140可以从客户机设备接收输入。以这种方式,影子应用实例便可以接管主应用实例的功能而没有数据丢失。
如上所述,通过示例性实施例,将主应用实例中发生的事件的日志自动并连续地传输到活动的备用计算设备140,以便使在活动的备用计算设备140上运行的影子应用实例的状态与在主计算设备102上运行的主应用实例的当前状态保持一致。借助远程复制操作(如对等远程复制操作)来帮助此自动和连续的传输。
图3是示出根据一个示例性实施例的对等远程复制操作的示例性方块图。在示出的实例中,Metro MirrorTM产品用于执行对等远程复制操作,虽然本发明并不限于使用Metro MirrorTM或Global MirrorTM。相反,可以使用任何允许将数据和元数据远程复制到在拓扑上位于远程的存储系统的机制而不偏离本发明的精神和范围。
使用Global MirrorTM作为用于执行数据和元数据的远程复制的一个示例性实施例的代表,Global MirrorTM允许将应用系统数据从一个场所(也称为生产场所)影射到第二个场所(也称为恢复场所)。在生产场所保存数据的逻辑卷称为主卷,在恢复场所保存镜像数据的对应逻辑卷称为辅助卷。在一个示例性实施例中,可以使用光纤通道协议(FCP)链路来提供主卷和辅助卷之间的连接。
图3示出了以同步模式(即,对等远程复制同步(PPRC-SYNC))操作Global MirrorTM时写入操作的顺序。如图3所示,在此同步类型的操作中,对生产场所主卷330所作的更新被同步影射到恢复场所的辅助卷330。由于这是同步的解决方案,所以对于在计算设备310上运行的应用,只有在两个副本(主和辅助)上都确保了写更新后,才将所述写入看作完成。
由于在PPRC-SYNC操作中,直到在主卷和辅助卷320和330两者中同步地完成更新后,应用才会获得“写入完成”条件,所以从应用的角度,恢复场所辅助卷330上的数据是始终与主卷320上的数据一致的实时数据。
此特性的含义之一是,在正常的PPRC-SYNC操作中,将相关写入以与将其应用于主卷320的相同顺序应用于辅助卷330。从应用一致性的角度,这在恢复时非常重要。PPRC-SYNC可以在恢复场所提供连续的数据一致性,而不需要定期中断应用以建立一致性检查点。从应用的角度,这是始终在恢复位置具有有效数据的无中断的方法。
虽然在图3中示出了同步PPRC操作,但是应当理解,示例性实施例的机制可以等同地应用于同步和异步远程复制操作。在异步远程复制操作中,在辅助卷330中提交数据之前,可以从主卷320返回“写入完成”。实质上,根据此处的示例性实施例的异步远程复制操作,在拓扑上位于远程的计算设备上重播任何日志事件之前,在拓扑上位于远程的计算设备的存储系统中的日志需要与主计算设备处的日志处于数据一致的状态,这样,通过示例性实施例的对等远程复制操作,对与主计算设备102关联的存储系统上存在的日志执行写操作时,同样对与在拓扑上位于远程的计算设备140关联的存储系统中的对应日志执行对应的写操作。可以按照同步或异步的方式执行所述操作。以这种方式,一致地维护生产场所和恢复场所中的日志。
如上所述,执行此类日志写入的对等远程复制操作的其他备选方式是使用例如连接到广域数据网络130的共享存储系统。在此类实施例中,主计算设备102和在拓扑上位于远程的计算设备140都必须对共享存储系统和共享存储系统上维护的日志具有访问权限。主机算设备102可以写入共享存储系统的日志,并且在拓扑上位于远程的计算设备140可以读取这些日志,以便重播日志事件以使影子应用实例成为与主应用实例一致的状态。例如,当主计算设备102将日志切换事件发信号通知在拓扑上位于远程的计算设备140时,可以发生此类读取和重播事件。
因此,通过示例性实施例,生成初始检查点并将其用于使主应用实例的状态与位于远程的影子应用实例的状态同步。此后,自动和连续地维护日志,使其在主应用实例位置和位于远程的影子应用实例之间一致。
定期地,将关闭日志并将事件的记录切换到辅助日志,以便可以将初始日志中记录的事件用于更新影子应用实例的状态。可以执行此从关闭的日志重播事件而不中断事件的连续记录。可以按照相反的方向根据需要的次数来重复初始日志与辅助日志之间的切换,以有助于连续记录事件和更新应用状态。
当主应用实例出现故障时,通过从当前用于记录事件的日志重播事件,可以自动更新影子应用实例的状态。这使影子应用实例的状态变为出现故障的主应用实例的当前状态。然后可以启用影子应用实例的网络输出,由此影子应用实例可以接管主应用实例的操作。所有这些操作都通过在拓扑和/或地理上远离主计算设备(主应用实例正在其上运行)的计算设备上运行的影子应用实例来完成。
图4是示出了根据一个示例性实施例的用于维护两个在拓扑上位于远程的相关应用实例之间的连续一致应用状态的操作的示意性方块图。如图4所示,在生产场所450提供了主计算设备410,在恢复场所460提供了活动的备用计算设备420。恢复场所460在拓扑和/或地理上远离生产场所450。主计算设备410具有关联的连接到主计算设备410的存储设备A、B和C。在示出的实例中,数据存储设备A存储在主计算设备410上运行的主应用实例412的应用数据。数据存储设备B存储有状态检查点元数据以及在主应用实例412的运行期间发生的事件的一个或多个日志。数据存储设备C也存储在主应用实例412的运行期间发生的事件的一个或多个日志。数据存储设备C中的日志为辅助日志,当关闭存储设备B中的初始日志时,将事件的记录切换到所述辅助日志。当主应用实例根据需要运行时,可以在存储设备B和C中的日志之间进行此类来回切换。
活动的备用计算设备420连接到存储设备D、E和F。存储设备D、E和F是存储设备A、B和C的镜像。因此,存储设备D存储主应用实例412的应用数据。存储设备E存储主应用实例的检查点元数据以及一个或多个在应用实例412中发生的事件的日志。存储设备F存储在应用实例412中发生的事件的辅助日志。
如上所述,可以使用对等远程复制操作,将存储在生产场所450处的数据存储设备A、B和C中的数据传输到位于远程的恢复场所460处的数据存储设备D、E和F。具体地说,PPRC用于将主应用实例412的初始应用数据从数据存储设备A复制到数据存储设备D。PPRC还用于将初始有状态检查点数据从数据存储B复制到数据存储E。此后,PPRC用于将写入数据自动和连续地复制到存储在数据存储设备B和C中的日志以及复制到数据存储设备E和F。
主计算设备410包括根据与主计算设备410有关的示例性实施例的负责执行操作的主容错引擎414。活动的备用计算设备420包括根据与活动备用计算设备420有关的示例性实施例的负责执行操作的远程容错引擎424。
在操作中,例如,初始化主计算设备410上的主应用实例412时,或在该处可以生成有状态检查点的任何其他适合的时刻,主容错引擎414生成主应用实例412的状态的检查点。此检查点涉及在检查点时间的应用数据的副本和在检查点时间的有状态检查点元数据。生成检查点应用数据副本并将其存储在数据存储设备A中,生成有状态检查点元数据并将其存储在数据存储设备B中。主容错引擎414可以例如使用上述的MetaClusterTM产品来生成检查点。
主容错引擎414使用对等远程复制(PPRC)操作启动将检查点应用数据和元数据的副本传输到恢复场所460。作为响应,将应用数据和检查点元数据的副本从存储设备A和B发送到与恢复场所460关联的存储设备D和E。主容错引擎414可以将消息发送到活动备用计算设备420以“重新启动”主应用实例412的影子应用实例422。
远程容错引擎424可以在影子应用实例422上启动“重新启动”操作,以响应来自主容错引擎414的消息。重新启动操作利用应用数据和有状态检查点元数据的副本来重新启动影子应用实例422,该影子应用实例422处于与由应用数据和有状态检查点元数据指定的主应用实例412的初始状态对应的状态。如上所述,远程容错引擎424可以使用MetaClusterTM产品来执行此重新启动操作。
在使用数据存储设备D和E中的应用数据和有状态检查点元数据来重新启动影子应用实例422时,使主应用实例412可供客户机设备使用。因此,主计算设备410可以通过一个或多个网络从客户机接收输入,并生成通过一个或多个网络发送到客户机设备的输出。
所述输入、输入的处理以及生成输出导致在主应用实例412中发生事件。主容错引擎414将主应用实例412中发生的这些事件记录在存储在数据存储设备B内的日志中。将继续这些事件的记录,直到达到预定准则为止,此时关闭数据存储设备B中的日志并将事件的记录切换到数据存储设备C中的辅助日志。然后执行与数据存储设备C有关的相同记录,直到再次达到预定准则为止,此刻将记录切换回在数据存储设备B中维护的日志。在主应用实例412的运行期间,可以按需要重复执行日志之间的来回切换。
将事件写入数据存储设备B和C中的日志时,使用PPRC操作将相同的事件写入数据存储设备E和F中的对应日志。如图3所示,在将事件数据写入主卷(如数据存储设备B或C中的日志)之后立刻执行此PPRC操作。因此,借助PPRC操作,以自动和连续的方式使数据存储设备E和F中的日志与数据存储设备B和C中的日志的当前状态保持一致。
在达到预定准则时(如日志已满,预定时间量到期等),主容错引擎414可以关闭数据B中的日志,并不再将事件记录到数据存储设备B的日志中。主容错引擎414将事件的记录切换到数据存储设备C中的辅助日志。主容错引擎414可以将日志的切换发信号通知远程容错引擎424,远程容错引擎424然后可以关闭其自己在数据存储设备E中的日志的副本。在关闭数据存储设备E中的日志之后,远程容错引擎424可以重播在关闭的日志中记录的事件,以将影子应用实例422的状态更新为日志切换时的状态。
在此更新期间,主容错引擎414继续将事件记录到数据存储设备C内的辅助日志中。通过PPRC操作,将这些事件写入辅助日志,并且还将它们写入数据存储设备F中的对应日志。这样,即使在更新影子应用实例422的状态时也不会发生数据丢失。
如图4所示,应当指出,在主计算设备410上运行主应用实例412期间,将启用主应用实例412的输入和输出套接字。关于影子应用实例422,将禁用影子应用实例422的输出套接字,这样不会将影子应用实例420生成的输出发送到客户机设备。这确保了网络上不存在与主应用实例412的冲突,如消息重复。
在某些时刻,主应用实例412可能出现故障,并且需要将操作传输到在拓扑和/或地理上位于远程的活动备用计算设备420上的影子应用实例422。下面是示出了从主应用实例412故障转移到影子应用实例422的实例。
假定在主计算设备410上运行主应用实例412时,将主应用实例412中发生的事件记录到生产场所450的数据存储设备B上的第一日志。当达到预定准则(如预定间隔)时,可以将记录从数据存储设备B上的第一日志切换到数据存储设备C上的第二日志。如果使用共享存储系统,则第一日志中的事件将从共享存储系统自动应用于影子应用实例422,以响应日志切换事件。但是,如果未使用共享存储系统(如图4所示),则将第一日志和第二日志自动复制到恢复场所460的数据存储设备E和F。可以将数据存储设备E上的第一日志的副本中的事件应用于影子应用实例422,而不必终止对正在写入数据存储设备C中第二日志的日志事件的PPRC操作。这允许连续复制数据存储设备E和F上的日志事件。
有时在将日志事件写入数据存储设备C中的第二日志时,主应用实例412出现故障。远程容错引擎424(例如通过未检测到心跳信号、经过预定时间间隔而没有从主应用实例复制日志事件等),检测到生产场所450处主应用实例412的丢失。
此刻,影子应用实例422的状态是发生日志切换事件时的主应用实例412的状态。因此,需要在影子应用实例422中重播记录到数据存储设备C的第二日志中并复制到数据存储设备F的事件,以便使影子应用实例422的状态成为主应用实例412的当前状态。远程容错引擎424帮助从在数据存储设备F中维护的第二日志的副本重播事件。
在通过重播第二日志副本中的事件使影子应用实例成为当前状态之后,可以将来自客户机设备的输入重定向到影子应用实例,并且可以启用与影子应用实例422关联的输出影子套接字。此后,影子应用实例可以接管主应用实例412的运行。因此,在拓扑和/或地理上位于远程的活动备用计算设备420可用于提供主应用实例的故障转移而不会造成数据丢失。
应当理解,虽然图4示出了用于存储应用数据、检查点元数据和日志的不同存储设备A-F,但是示例性实施例并不限于此。相反,可以在不偏离本发明的精神和范围的情况下使用任何数量的存储设备。例如,生产场所450可以包括其上可以存储应用数据、检查点元数据和各种日志的单个存储设备。同样,恢复场所460可以具有一个或多个存储设备,所述存储设备用于存储使用上述PPRC操作从生产场所450复制的此数据的副本。
图5是根据一个示例性实施例的主容错引擎的主要操作组件的示意性方块图。如图5所示,主容错引擎包括控制器510、对等远程复制模块520、存储系统接口540、初始检查点生成模块530、网络接口550,以及应用日志模块560。元素510-560可以以硬件、软件或硬件和软件的任何组合来实现。在一个示例性实施例中,元素510-560实现为由一个或多个处理设备执行的软件指令。
控制器510负责主容错引擎的整体操作并协调其他元素520-560的操作。对等远程复制模块520负责执行将应用数据、初始检查点元数据和日志事件数据从生成场所450对等远程复制到恢复场所460。存储系统接口540提供了接口,通过该接口可以将数据写入与生产场所450关联的一个或多个存储设备或从所述设备读取数据。初始检查点生成模块530负责生成应用数据和有状态检查点元数据的初始副本以传输到恢复场所460,以便初始化影子应用实例。
网络接口550负责提供接口,通过所述接口可以将应用数据、有状态检查点元数据和日志数据传输到恢复场所460。还可以将指示应用实例的初始化、日志切换、应用实例故障等的消息通过网络接口550从主容错引擎传输到远程容错引擎。
应用日志模块560负责将应用实例中发生的事件记录到在生产场所的存储系统中维护的一个或多个日志。应用日志模块560还执行在日志之间进行切换的操作。
在操作中,控制器510指示初始检查点生成模块530生成应用实例的初始检查点,并通过存储系统接口540将所述检查点数据存储到生产场所的存储系统。控制器510然后指示对等远程复制模块520将检查点数据复制到在拓扑和/或地理上位于远程的恢复场所460。
控制器510然后指示应用日志模块560开始记录主应用实例的事件,并使用对等远程复制模块520执行将此类事件数据对等远程复制到恢复场所460。通过存储系统接口540,可以根据存储在存储系统中的一个或多个日志来完成事件的记录。可以通过网络接口550执行对等远程复制操作。应用日志模块560还可以通过网络接口550将指示日志切换的消息发送到恢复场所460。
图6是根据一个示例性实施例的远程容错引擎的主要操作组件的示意性方块图。如图6所示,远程容错引擎包括控制器610、应用日志重播模块620、存储系统接口630、影子应用故障转移模块640,以及网络接口650。元素610-650可以以硬件、软件或硬件和软件的任意组合来实现。在一个示例性实施例中,元素610-650实现为由一个或多个处理设备执行的软件指令。
控制器610负责远程容错引擎的整体操作并协调其他元素620-650的操作。应用日志重播模块620负责从存储在与恢复场所460关联的存储系统中的日志重播日志事件。例如,当发生日志切换事件或主应用实例出现故障时,可以发生此类事件重播。
存储系统接口630提供了接口,通过所述接口,远程容错引擎可以访问存储在与恢复场所460关联的存储系统中的检查点数据和日志。网络接口650提供了接口,通过所述接口,可以通过一个或多个网络从主容错引擎接收消息和数据。
影子应用故障转移模块640使用在与恢复场所460关联的存储系统中维护的日志来执行将主应用实例的操作故障转移到影子应用实例的所需操作。影子应用故障转移模块640可以执行操作以重播来自当前活动的日志的事件,以便使影子应用实例成为当前状态,然后启用影子应用实例的影子套接字,以便影子应用实例可以接管出现故障的主应用实例的操作。
在操作中,控制器610可以从生产场所450的主容错引擎接收消息,并指示各个元素620和640相应地运行。例如,响应于接收到初始化影子应用实例的指令,以及响应于接收到存储在与恢复场所460关联的存储系统中的检查点数据,控制器610可以初始化影子应用实例。此后,可以通过网络接口650接收对存储在与恢复场所460关联的存储系统中的日志的更新,并通过存储系统接口630将所述更新存储在存储系统中。
当控制器610从主容错引擎接收到指示已发生日志切换事件的消息时,控制器610可以指示应用日志重播模块620重播先前日志中的事件以将影子应用实例更新到日志切换事件时的数据。如上所述,当控制器610接收到消息或以其他方式检测到主应用实例已出现故障时,控制器610可以指示影子应用故障转移模块640执行将主应用实例的操作故障转移到影子应用实例的操作。
图7和图8是示出示例性实施例的示意性操作的流程图。应当理解,流程图中的每个块和块的组合都可以由计算机程序指令来实现。可以将这些计算机程序指令提供给处理器或其他可编程数据处理装置以产生机器,以便在所述处理器或其他可编程数据处理装置上执行的指令将创建用于实现一个或多个流程图块中指定的功能的装置。这些计算机程序指令也可以被存储在引导处理器或其他可编程数据处理装置以特定方式执行功能的计算机可读存储器或存储介质中,以便存储在所述计算机可读存储器或存储介质中的所述指令产生一件包括实现所述一个或多个流程图块中指定的功能的指令装置的制品。
相应地,流程图的多个块支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置。还应理解,流程图中的每个块和流程图中的块的组合可以由执行指定功能或步骤的基于硬件的专用计算机系统来执行,或者通过专用硬件和计算机指令的组合来执行。
图7是示出了根据示例性实施例的用于维护在拓扑上位于远程的两个相关应用实例之间的连续一致状态的示例性操作的流程图。如图7所示,操作开始于主计算设备启动主应用实例(步骤710)。主容错引擎生成主应用实例的初始检查点(步骤720),并通过对等远程复制操作将初始检查点数据传输到恢复场所(步骤730)。
远程容错引擎接收检查点数据并使用该检查点数据启动影子应用实例(步骤740)。主容错引擎启动在与主应用实例关联的第一日志中记录事件(步骤750)。主容错引擎使用PPRC操作将写入日志的事件自动并连续地传输到恢复场所(步骤760)。
主容错引擎判定是否要执行日志切换(步骤770)。如果是,则主容错引擎将日志的记录从第一日志切换到第二日志(或在后续的切换事件中,将顺序相反),并且将切换日志事件消息发送到远程容错引擎。远程容错引擎接收切换日志事件消息并重播记录在先前日志(如第一日志)中的事件(步骤780)。
主容错引擎判定是否发生终止事件(步骤790)。此终止事件可以例如是停止主应用实例。如果发生终止事件,终止操作。否则,操作返回步骤750并使用新的事件日志继续记录事件。
图8是示出了根据一个示例性实施例的用于执行从主应用实例到影子应用实例的故障转移操作的示例性操作的流程图。如图8所示,操作开始于远程容错引擎检测主应用实例的故障(步骤810)。远程容错引擎使用影子应用实例重播记录在当前活动的日志中的事件(步骤820)。启用影子应用的影子套接字(步骤830),将到主应用实例的输入重定向到影子应用实例(步骤840)。然后终止操作。
因此,示例性实施例提供了将在拓扑和/或地理上位于远程的计算系统用作活动的备用计算系统以进行故障转移操作的机制。示例性实施例提供了在主应用实例和影子应用实例之间自动连续地复制日志事件以便使两个应用实例保持一致状态的机制。当主应用实例中出现故障时,在拓扑和/或地理上位于远程的活动备用计算设备上的影子应用实例可以接管发生故障的主应用实例的操作,使用存储在远程位置的记录事件的一致性复制对影子应用状态进行简单更新。执行所有这些操作都不会造成数据丢失。
上述示例性实施例可以采取完全硬件实施例、完全软件实施例或同时包含硬件和软件元素的实施例的形式。在优选实施例中,本发明以软件实现,所述软件包括但不限于固件、驻留软件、微代码等。
此外,示例性实施例可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的程序代码。出于在此说明的目的,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的装置。
所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括光盘-只读存储器(CD-ROM)、光盘-读/写(CR-R/W)和DVD。
如以上根据图2描述的,适合于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直接或间接连接到存储器元件的处理器。所述存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接或通过中间I/O控制器与系统相连。
网络适配器也可以被连接到系统以使所述数据处理系统能够通过中间专用或公共网络变得与其他数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以太网卡只是几种当前可用的网络适配器类型。
出于示例和说明目的给出了对示例性实施例的描述,并且所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说,许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的示例性实施例的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种示例性实施例。
权利要求
1.一种提供影子应用实例以便重定位主应用实例的备用计算系统,所述系统包括处理器;以及连接到所述处理器的存储器,其中所述存储器包含指令,当所述指令由所述处理器执行时,将导致所述处理器执行以下操作从在拓扑上远离所述备用计算系统的主计算设备自动地接收写入与所述主计算设备关联的第一日志数据结构的主应用实例的事件数据;将所述事件数据存储在与所述备用计算系统和影子应用实例关联的第二日志数据结构中,其中所述主应用实例和影子应用实例是同一应用的实例;通过重播与所述影子应用实例关联的第二日志中的事件来更新所述影子应用实例的状态,由此使所述影子应用实例的状态变为与所述主应用实例一致的状态;以及使用所述影子应用实例将所述主应用实例重定位到所述备用计算系统以响应所述主应用实例的故障。
2.根据权利要求1的备用计算系统,其中所述指令导致所述处理器更新所述影子应用实例的状态,以响应从所述主计算设备接收到指示日志切换事件的日志切换事件消息。
3.根据权利要求2的备用计算系统,其中所述指令导致所述处理器在接收所述日志切换事件消息之后,将接收的事件数据存储到与所述影子应用实例关联的第三日志数据结构。
4.根据权利要求3的备用计算系统,其中所述指令导致所述处理器通过执行下列操作来将所述主应用实例重定位到所述备用计算系统检测所述主计算设备上的所述主应用实例的故障;以及重播所述第三日志数据结构中的事件以响应检测到所述主应用实例的所述故障。
5.根据权利要求1的备用计算系统,其中所述主计算设备和备用计算系统具有相同的虚拟网络地址,并且其中在重定位所述主应用实例之前,启用了所述主应用实例的输入和输出套接字,但只启用了所述影子应用实例的输入套接字。
6.根据权利要求5的备用计算系统,其中所述指令还导致所述处理器执行下列操作检测所述主计算设备上的所述主应用实例的故障;重播所述第三日志数据结构中的事件以响应检测到所述主应用实例的所述故障,由此使所述影子应用实例成为与所述主应用实例一致的、恰好在所述主应用实例的所述检测到的故障之前的状态;以及启用所述影子应用实例的输出套接字以响应检测到所述主应用实例的所述故障。
7.根据权利要求1的备用计算系统,其中所述指令还导致所述处理器执行下列操作在从所述主计算设备接收事件数据之前,将所述影子应用实例的状态与所述主应用实例的状态同步。
8.根据权利要求7的备用计算系统,其中所述指令导致所述处理器通过执行下列操作来将所述影子应用实例的状态与所述主应用实例的状态同步从所述在拓扑上位于远程的主计算设备接收所述主应用实例的应用数据;接收包括检查点元数据的应用检查点,所述检查点元数据代表与所述应用数据的副本相同的时间点;以及使用所述应用数据和检查点元数据来初始化所述备用计算系统上的所述影子应用实例。
9.根据权利要求1的备用计算系统,其中所述主计算设备自动地将所述主应用实例中发生的事件的事件数据写入所述第一日志数据结构,并在将所述事件数据写入所述第一日志数据结构时,自动地将所述事件数据复制到所述第二日志数据结构。
10.根据权利要求1的备用计算系统,其中自动地接收所述事件数据包括通过由所述主计算设备执行的对等远程复制操作来接收所述事件数据。
11.根据权利要求1的备用计算系统,其中所述备用计算系统在地理上远离所述主计算设备。
12.根据权利要求1的备用计算系统,其中所述备用计算系统在所述主计算设备的群集或存储区域网络之外。
13.一种在备用计算设备中用于提供影子应用实例以便重定位主应用实例的方法,所述方法包括从在拓扑上远离所述备用计算设备的主计算设备自动地接收写入与所述主计算设备关联的第一日志数据结构的主应用实例的事件数据;将所述事件数据存储在与所述备用计算设备和影子应用实例关联的第二日志数据结构中,其中所述主应用实例和影子应用实例是同一应用的实例;通过重播与所述影子应用实例关联的第二日志中的事件来更新所述影子应用实例的状态,由此使所述影子应用实例的状态变为与所述主应用实例一致的状态;以及使用所述影子应用实例将所述主应用实例重定位到所述备用计算设备以响应所述主应用实例的故障。
14.根据权利要求13的方法,其中执行更新所述影子应用实例的状态,以响应从所述主计算设备接收到指示日志切换事件的日志切换事件消息。
15.根据权利要求14的方法,还包括在接收所述日志切换事件消息之后,将接收的事件数据存储到与所述影子应用实例关联的第三日志数据结构。
16.根据权利要求15的方法,其中将所述主应用实例重定位到所述备用计算设备包括检测所述主计算设备上的所述主应用实例的故障;以及重播所述第三日志数据结构中的事件以响应检测到所述主应用实例的所述故障。
17.根据权利要求13的方法,其中所述主计算设备和备用计算设备具有相同的虚拟网络地址,并且其中在重定位所述主应用实例之前,启用了所述主应用实例的输入和输出套接字,但只启用了所述影子应用实例的输入套接字。
18.根据权利要求17的方法,其中重定位所述主应用实例包括检测所述主计算设备上的所述主应用实例的故障;重播所述第三日志数据结构中的事件以响应检测到所述主应用实例的所述故障,由此使所述影子应用实例成为与所述主应用实例一致的、恰好在所述主应用实例的所述检测到的故障之前的状态;以及启用所述影子应用实例的输出套接字以响应检测到所述主应用实例的所述故障。
19.根据权利要求13的方法,还包括在从所述主计算设备接收事件数据之前,将所述影子应用实例的状态与所述主应用实例的状态同步。
20.根据权利要求19的方法,其中将所述影子应用实例的状态和所述主应用实例的状态同步包括从所述在拓扑上位于远程的主计算设备接收所述主应用实例的应用数据;接收包括检查点元数据的应用检查点,所述检查点元数据代表与所述应用数据的副本相同的时间点;以及使用所述应用数据和检查点元数据来初始化所述备用计算设备上的所述影子应用实例。
21.根据权利要求13的方法,其中所述主计算设备自动地将所述主应用实例中发生的事件的事件数据写入所述第一日志数据结构,并在将所述事件数据写入所述第一日志数据结构时,自动地将所述事件数据复制到所述第二日志数据结构。
22.根据权利要求13的方法,其中自动地接收所述事件数据包括通过由所述主计算设备执行的对等远程复制操作来接收所述事件数据。
23.根据权利要求13的方法,其中所述备用计算设备在地理上远离所述主计算设备。
24.根据权利要求13的方法,其中所述备用计算设备在所述主计算设备的群集或存储区域网络之外。
25.一种包括计算机可读介质的计算机程序产品,所述计算机可读介质具有计算机可读程序,其中当所述计算机可读程序在备用计算设备上执行时,将导致所述备用计算设备实现根据权利要求13-24中的任一权利要求的方法。
全文摘要
本发明提供了一种使用在拓扑上位于远程的计算设备进行应用容错和恢复的系统和方法。主计算设备在生产场所运行应用的一个实例(即,主应用实例),活动的备用计算设备在恢复场所运行应用的第二实例(即,影子应用实例),所述恢复场所可以在拓扑上远离所述生产场所。通过在所述主计算设备上运行初始应用“检查点”,之后在所述活动的备用计算设备上运行应用“重新启动”,使所述应用的两个实例变为一致的状态。可以在日志中自动和连续地记录在所述主应用实例中发生的事件,并使用对等远程复制操作将其传输到所述恢复场所,以便使所述应用实例的状态保持一致。
文档编号H04L1/22GK101055538SQ20071009136
公开日2007年10月17日 申请日期2007年3月30日 优先权日2006年4月12日
发明者J·T·小弗林, M·豪伊 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1