CN104169881A - 用于服务器集群应用程序虚拟化的***和方法 - Google Patents

用于服务器集群应用程序虚拟化的***和方法 Download PDF

Info

Publication number
CN104169881A
CN104169881A CN201380005537.0A CN201380005537A CN104169881A CN 104169881 A CN104169881 A CN 104169881A CN 201380005537 A CN201380005537 A CN 201380005537A CN 104169881 A CN104169881 A CN 104169881A
Authority
CN
China
Prior art keywords
server
application program
cluster
server cluster
engine
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.)
Granted
Application number
CN201380005537.0A
Other languages
English (en)
Other versions
CN104169881B (zh
Inventor
吴光青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DH2i Co
Original Assignee
DH2i Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by DH2i Co filed Critical DH2i Co
Publication of CN104169881A publication Critical patent/CN104169881A/zh
Application granted granted Critical
Publication of CN104169881B publication Critical patent/CN104169881B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/046Network management architectures or arrangements comprising network management agents or mobile agents therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

应用程序实例能够进行虚拟化并在服务器集群上以容错和负载均衡的方式运行,同时仍然还维持对公共数据池的访问。对各应用程序实例进行实例化,以便在处理不同的虚拟互联网协议地址的虚拟主机上运行。服务器集群环境内的各节点均可具备一个或多个虚拟主机,其中,在服务器发生故障转移之后,在不干扰所述虚拟主机上的应用程序实例化的情况下,可以将所述虚拟主机及其相关的虚拟互联网协议地址重新定位到另一个服务器上。

Description

用于服务器集群应用程序虚拟化的***和方法
相关申请
本申请涉及并要求2012年1月18日提交的美国临时专利申请案第61/588011号以及2013年1月16日提交的美国专利申请案第13/743007号的优先权权益,其全部内容以引用的方式并入本文以便实现充分陈述本文之目的。
技术领域
本发明实施例一般涉及软件虚拟化,更特别地涉及服务器集群中多个节点上的集群服务器应用程序的虚拟化。
背景技术
服务器是一种专用于运行一种或多种服务以满足网络上其它计算机用户的需求的物理计算机。换句话说,就所有意图和目的而言,任何将资源共享至一个或多个客户端进程的计算机化过程都是服务器。例如,通过操作***将文件共享至客户端的设备是文件服务器。因此,根据服务器所提供的计算服务,服务器可以是数据库服务器、文件服务器、邮件服务器、打印服务器、网络服务器、游戏服务器或者某些其它类型的基于所提供服务的服务器。从硬件意义上来讲,措辞“服务器”通常指的是用于托管网络环境中需求量较大的软件应用程序的计算机模型。在某些情况下,这些特定功能的硬件是专业化的。换言之,服务器计算机具备不同于通用个人计算机的性能。
服务器集群是一组数量至少为两个的独立服务器,它们通过网络彼此连接并作为单一***进行管理,以便为客户端实现较高的服务可用性。图1A是相关领域中适当技术人员已知的服务器集群环境的概括说明。如图示出的描述中,四个服务器构成了服务器集群100。这种情况下,服务器A 110、服务器B 120、服务器C 130以及服务器D 140直接经由负载均衡器/路由器150连接。路由器150还用作访问互联网170和防火墙160的通路。
服务器集群的设计是使得该集群内的服务器能一起工作,以便保护数据、在该集群内的一个或多个服务器发生故障之后维持应用程序和服务继续运行、以及维持集群配置的一致性。服务器的群集相对于独立服务器来说实现了若干有益的效果。其中一种重要的有益效果就是:在集群内各服务器上运行的集群软件自动检测出应用程序的故障或者该集群内另一服务器的故障。在检测到这类故障后,可以在仍然能运转的服务器上终止并重启发生了故障的应用程序。因此,当集群内的一个计算机发生故障时,资源会进行重新定向,而工作负载会重新分配到该集群内的另一计算机处。
图1B是对图1A所示的服务器集群的进一步示出,在图1A中,服务器C 130已经发生了故障。正如相关领域中适当技术人员已知的那样,服务器集群内服务器的移除是利用了现有的故障转移技术来终止并重启该服务器集群内另一服务器上与服务器C 130相关联的应用程序。然而,这样处理的结果却是,与服务器C相关联的应用程序必须采用新的主机和新的互联网协议地址来进行重新实例化。
服务器集群的其它有益效果包括管理员检查集群资源的状态并相应地平衡该集群内不同服务器之间的工作负载以提高性能的能力。这种可管理性也为管理员提供了在不让重要数据和应用程序离线的情况下对集群内的一个服务器进行更新的能力。可以理解的是,服务器集群是用于关键数据库管理、文件与内联网数据共享、消息发送和一般业务应用等。
服务器集群具有各种形状和大小,但是通常是非对称集群或对称集群。在非对称集群中,备用服务器的存在仅仅是在另一服务器发生故障时接替该服务器。这种类型的集群实现了较高的服务可用性和服务可靠性,但是却是以具有冗余和未使用容量为代价。备用服务器并未执行有用的工作,而且能力上也是与主服务器相当或者是更弱。在对称服务器集群中,该集群内的每个服务器都执行了有用的工作,而且该集群内的每个服务器对于特定应用程序组来说都是主要主机。如果服务器发生了故障,那么剩余的服务器将继续处理分配的应用程序组并且从发生故障的服务器中挑选出新的应用程序。对称服务器集群的性价比更高,但是当发生故障时,工作服务器上的附加负载同样能够使它们出现故障。
在各个服务器上均存在有各应用程序的一个或多个实例。这些应用程序的底层为数据库引擎,如微软处理结构化查询语言或T-SQL。T-SQL是一种专用编程语言,其设计来管理相关数据库管理***中的数据。T-SQL最初是建立在关系代数和元组关系演算的基础上,其范围包括数据***、查询、更新和删除功能、模式创建与修改、以及数据存取控制。SQL的其它关系替代方案包括.QL、4D 查询语言、Datalog、基于URL的查询方法、IBM业务***12、ISBL、JPQL、对象查询语言、UnQL以及QBE等。
SQL是一种服务器将其用作为许多较大的自定义应用程序的构件的流行数据库引擎。采用SQL服务器(或其它)所构建的各应用程序通常利用服务器名称和互联网协议地址与该数据库引擎的单个实例进行通信。这样,具有许多基于SQL服务器来访问数据库的应用程序的服务器通常情况下必须运行相等数量的SQL服务器的实例。在大多数情况下,SQL服务器的各实例在服务器集群内的单个节点上运行,同时各节点具有自己的名称和地址。如果节点(服务器)发生故障,数据库就无法再使用,直到***在具有新地址与新名称的新节点上恢复为止。如果该节点由于一个或多个应用程序而承受较大负载时,那么数据库与其它应用程序的性能便会降低。
一般来说,存在有三种类型的服务器集群故障。第一种是应用程序或服务故障。当服务器上运行的应用软件不能正确执行时,这类故障便会出现。第二种是***或硬件故障。正如所揭示的那样,这类故障与一个或多个服务器的硬件组件有关。例如,一个或多个CPU、驱动器、存储器或电源发生故障。最后,在整个站点由于暴风雨等自然事件或停电而不能如预期一样运转时,就会发生站点故障。处理各类故障的能力是服务器集群可靠性的关键所在。
因此,应用程序从集群内的一个服务器(即,机器)到另一服务器的故障转移可以是对第一机器上的软件或硬件故障做出的自动响应,或者,也可以由管理员手动发起。然而,除非应用程序是“集群感知的”(即,设计有可以在集群环境中运行的知识),否则,故障转移过程中就会出现问题。
现有的非集群感知型虚拟应用程序(即,如SQL服务器的遗留应用程序)的一个问题是:这类应用程序假设当前机器名称是唯一的计算机名称。因此,如果应用程序将机器名称透露给了客户端或将该机器名称写入了其持久性配置信息中,那么,当该应用程序的故障转移到具有不同机器名称的机器上并在该机器上运行时,***将不能正确运转。举例来说,电子邮件应用程序将自己的机器名称提供给网络中与其相连的其它机器。如果应用程序正在集群中运行并且服务器故障转移至了另一机器,那么这个其它机器的名称将不会是已经提供给其它网络机器的名称,而且该电子邮件应用程序也不会正确运行。
为了解决该缺陷,在现有技术中,传统的应用程序虚拟化平台采用故障转移集群技术。例如,Microsoft Windows®采用微软故障转移集群技术(“MSCS”)®。MSCS以及其他类似MSCS的产品使得一个或多个计算机能够结合在一起,从而形成集群。然后,便能使得应用程序经由集群主机名称或互联网协议(“IP”)地址(而不是单独的计算机名称)来收听并提供数据给客户端。如果活动节点(计算机)发生故障,那么MSCS会将应用程序重新定位到该集群内的下一个可用节点上,以保持该应用程序的功能。为了避免数据损坏并保证整个集群内只有一个节点可以访问文件***,采用的是新技术文件***(“NTFS”)和小型计算机***接口(“SCSI”)预留。然而,所缺乏的是在不采用MSCS与SCSI预留的情况下对集群环境中的应用程序(比如,SQL服务器)进行虚拟化的能力。
相关领域内的适当技术人员将认识到的是,广义的虚拟化是指对软件和/或其上运行有其它软件的硬件的模拟。这种模拟的环境常常称为虚拟机(VM)。因此,虚拟机是对通常不同于目标(真实)机器(其正在被模拟的位置)的机器(抽象的或真实的)的模拟。虚拟机可基于假想计算机的规格或者可以仿效真实世界计算机的计算机结构和功能。目前存在有许多形式的虚拟化,主要由计算架构层和虚拟化的组件来进行区分。这些虚拟化的组件可包括硬件平台、操作***(OS)、存储装置、网络装置或其它资源。
应用程序或进程虚拟化可以视为是包括自动计算在内的企业IT的总体趋势的一部分。自动计算是一种IT环境能够基于感知到的活动及效用计算来管理自身的场景,而在效用计算中,计算机处理能力被视为是客户端可以仅在需要时付费使用的效用。虚拟化的通常目标是在提高可扩展性和整体硬件资源利用的同时集中管理任务。这样的并行度有助于减少开销成本,而且也与涉及在同一OS(组件)上运行若干程序的多任务处理有所区别。
硬件虚拟化或平台虚拟化是指创建像具有操作***的真实计算机一样动作的虚拟机。这些虚拟机上所执行的软件与底层的硬件资源分开。例如,正在运行Microsoft Windows的计算机可以作为看上去像具有Ubuntu Linux操作***的计算机的虚拟机的主机;基于Ubuntu的软件可以在该虚拟机上运行。
在硬件虚拟化中,主机是进行虚拟化的实际机器,而客机是虚拟机。措辞“主”和“客”用于将在物理机上运行的软件与在虚拟机上运行的软件加以区分。在主机硬件上创建虚拟机的软件或固件有时称为管理程序。
服务器集群环境的一个主要限制是不能在故障转移期间对单独的应用程序进行管理。因此,所需要的是一种在不需要使用MSCS等技术的情况下对集群环境中的应用程序(如SQL服务器)进行虚拟化的方法和***。这也需要建立共享集群***,并且,在该共享集群***中,集群内的每个节点均具有连续的全读和全写权限,从而消除了对MSCS或SCSI预留的需要。现有技术的这些和其它缺陷通过本发明的一个或多个实施例得以解决。
本发明的其他优点和新颖特点将在下面的描述中部分地进行陈述,并在理解下面的说明书之后对于本发明的技术人员而言部分地变得更加明显,或者可以从本发明的实施中获知。本发明的优点可以通过所附权利要求中特别指出的手段、组合、组成部分以及方法来实现和获得。
发明内容
下文通过举例的方式公开了一种***以及相关方法,该方法使得应用程序实例能够实现虚拟化,并且能够在服务器集群上以容错和负载均衡的方式运行,但是仍然可以访问公共数据池。服务器集群上应用程序的虚拟化使得***无论是托管在哪个物理节点上都能够无缝并透明地运转。一旦被虚拟化,应用程序便通过“虚拟”端点(不同于本地主机名称或互联网协议地址的虚拟主机名称或互联网协议地址)来作出应答并提供自己的数据。实例化的虚拟化应用程序犹如是在独立模式下运行一样进行运转和发挥作用。然而,尽管如此,该应用程序仍然能够从集群中的一个节点过渡到另一节点并继续无缝运转。
根据本发明的一个实施例,一种用于服务器集群应用程序虚拟化的***包括多个配置为服务器集群场的服务器。此外,集群内的各个服务器包括本地监控引擎、集群监控引擎、主机引擎以及应用程序引擎。而且,所述主机引擎还可操作地用以形成至少一个虚拟主机以及相关联的虚拟互联网协议地址。此外,所述用于服务器集群应用程序虚拟化的***包括应用程序的至少一个实例,其配置为在各服务器处的一个或多个虚拟主机的其中一个虚拟主机上运行。
根据本发明的另一实施例,描述了一种虚拟化服务器集群应用程序的方法。所述方法首先在服务器集群中形成至少一个虚拟主机。该虚拟主机存在于所述集群内的节点上,而该节点包括有节点互联网协议地址、本地监控引擎、集群监控引擎、主机引擎以及应用程序引擎。紧接着是以下过程:对所述虚拟主机上的应用程序进行实例化,其中,所述应用程序与不同于所述节点互联网协议地址的虚拟互联网协议地址相关联。
根据本发明的另一实施例,一种计算机可读取存储介质实际包含的是由服务器集群内的服务器所执行的指令程序,其中,所述指令程序包括多个用于服务器集群应用程序虚拟化的程序代码。所述指令程序包括用于对从所述服务器集群内其它节点处接收的请求进行管理的程序代码,以及用于从用户界面接收请求的程序代码。所述指令程序还包括在所述服务器集群的各节点处建立一个或多个虚拟主机的代码,其中,各虚拟主机包括虚拟互联网协议地址。最后,所述指令程序还包括对所述一个或多个虚拟主机上的应用程序进行实例化的代码。
本公开中描述的以及以下详述的特点和优点并不是详尽的。对相关领域的普通技术人员而言,许多其他的特点和优点结合本文的附图、说明书及其权利要求书将变得更加显而易见。此外,应注意的是,本说明书中所使用的语言主要是出于可读性和指导性之目的来选择的,并非用于描绘或限制本发明的主题。本发明主题的确定必须参考权利要求书进行。
附图说明
参考以下结合附图描述的一个或多个实施例,本发明上述的和其它的特点和目的以及取得方式将变得更加显而易见,并且,也将更好地理解本发明,其中:
图1A是现有技术中已知的服务器集群环境的概括框图。
图1B是图1A中描述服务器故障和***故障转移的服务器集群环境的概括框图。
图2是根据本发明一个实施例的服务器集群应用程序虚拟化框架的***原理图。
图3是根据本发明的用于对服务器集群应用程序进行虚拟化的一个方法实施例的流程图。
图4A-D示出了根据本发明一个实施例的服务器集群应用程序虚拟化的进展性应用。
这些附图仅仅出于图示的目的对本发明的实施例进行了说明。从下面的论述中,本领域的技术人员容易明白的是,在不脱离本文所述的本发明原理的情况下,可以采用本文所述的结构和方法的替代实施例。
具体实施方式
下文将以举例的方式对用于服务器集群应用程序虚拟化的***以及相关方法进行描述。计算机或服务器集群是指一组松散连接且共同工作的计算机。在许多方面,“集群”可视为单个机器。通常情况下,如图1A所示,单独的组件经由本地网络相互连接,而在本地网络中,各计算机或节点运行自身的文件***实例。这些文件***和数据库引擎充当较大的自定义应用程序的构件,然而,如先前所述,各应用程序通常与底层文件***的单个实例进行通信。因此,具有多个应用程序的环境必须维持***文件的多个对应实例,或者作为替代方案,将各实例化服务器限制至单个应用程序。如果服务器(***)发生故障,那么必须重新创建各应用程序及其对应的底层文件***的实例,并且,直到恢复完成之前,该应用程序及其相关数据都不可用。同样地,由单个应用程序分配了较重任务的服务器可导致该应用程序以及存在于底层文件***的平行实例上的其他应用程序的性能出现降低。本发明虚拟化或形成一个或多个虚拟主机,以提供容错和负载均衡平台,而借由该容错和负载平台访问服务器集群上的公共数据池。虚拟主机上运行的虚拟应用程序能够使应用程序在***上进行无缝且透明地运行,无论该应用程序的实际(物理)主机是在何处。根据本发明,一旦被虚拟化之后,应用程序会通过不同于本地主机名称或物理互联网协议地址的虚拟端点(虚拟主机名称和虚拟互联网协议地址)进行通信。虚拟化的应用程序犹如是在独立模式下运行一样在物理服务器上运转和发挥作用,但仍然能够从一个节点过渡到另一节点处并继续运转。
下面将结合附图对本发明的实施例进行详细描述。尽管已经以一定的特殊性来描述并图示了本发明,但是应理解的是,本公开只是示例性的,在不脱离本发明的精神和范围的前提下,本领域的技术人员能够对组件的组合和设置做出若干变化。本公开包括各种具体细节以帮助理解,但是这些具体细节都被视为只是示例性的。因此,本领域的技术人员应该明白的是,在不脱离本发明的精神和范围的前提下,能够对本文描述的实施例做出各种变化和修改。同样,出于清楚和简洁起见,省略了对已知功能和构造的说明。
以下说明与权利要求书中所使用的术语和措辞并不限于书目含义,相反,其仅由发明人用于实现对本发明的清楚和一致的理解。因此,对本领域的技术人员而言应显而易见的是,下面说明的本发明的示例性实施例仅出于说明的目的,而不用于限制本发明,本发明应由所附权利要求书及其等效物来进行限定。
如本文所用,任何对“一个实施例”或“实施例”的引用都是指,结合该实施例所述的特定元件、特点、结构或特征包括在至少一个实施例中。在说明书不同地方出现的短语“在一个实施例中”并不一定都指同一个实施例。术语“大体上”是指所述的特征、参数或数值不必是精确获得的,相反,可以在数量上出现偏差或变化,只要该数量不会对特征旨在实现的效果产生影响即可,其中包括:例如,本领域的技术人员已知的容错、测量误差、测量精度限制等其它因素。
本文使用的术语只是为了描述特定实施例,并不旨在对本发明加以限制。除非上下文另有明确说明,否则本文使用的单数形式“一”、“一个”和“所述”也旨在包括复数形式。因此,例如,“一个组件表面”包括一个或多个这种表面。
本文使用的术语“包括”、“包含”、“具有”或其任何其它变形旨在涵盖非排他性的包含。例如,包括一系列元素的过程、方法、物品或设备并不一定只限于这些元素,也可以包括没有清楚列出的其它元素或该过程、方法、物品或设备固有的其他元素。进一步地,除非另有明确说明,否则“或者”指的是包含性的“或者”,并非排他性的“或者”。例如,下列任意一项满足条件A或B:A为真(或存在),且B为假(或不存在);A为假(或不存在),且B为真(或存在);以及A和B都为真(或存在)。
除非另有限定,否则本文使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中普通技术人员的一般理解相同的意义。还应理解的是,诸如常用字典中所定义的那些术语应被理解为具有与本说明书的上下文和相关领域中的意义相一致的意义,并且除非像本文这样定义,否则不会用理想化的或过于正式的含义来对这些术语进行解释。出于简洁和/或清楚的目的,公知的功能或构造可以不用详细说明。
还应理解的是,当一个元件被称为“在……上”、“附接”至、“连接”至、“耦接”至、“接触”或“安装”在另一元件上时,该元件可以是直接在、附接至、连接至、耦接至另一元件上或接触另一元件,或者,也可以存在中间元件。反之,当一个元件被称为,例如,“直接在……上”、“直接附接”至、“直接连接”至、“直接耦接”至或“直接接触”另一元件时,则不存在中间元件。本领域的技术人员还将理解的是,对与另一特点“相邻”设置的结构或特点的引用可以具有与该相邻特点重叠或置于该相邻特点之下的部分。
为了实现本发明的目的,定义了下面的术语,以便更加清楚并避免任何混淆或误解。
互联网协议(IP)是主要的通信协议,用于采用该组通信协议在网络上转播数据报(也称为网络包)。它是普遍认为的最流行的广域网协议栈,而且也因其最重要的协议通常被称为TCP/IP。IP负责将数据包路由穿过网络边界,而且IP是互联网协议组的互联网层中的主要协议。为此,IP限定了对需要传送的数据进行封装的数据报结构,也限定了用于标记数据报来源和目的地的寻址方法。
新技术文件***(NTFS)是由微软公司为操作***的Windows系列(包括,例如Windows NT、 Windows XP 以及 Windows Server)开发的标准专有文件***。
小型计算机***接口(SCSI)是一套在计算机与***设备之间进行物理连接并传送数据的标准。SCSI标准定义了命令、协议以及电气与光学接口。SCSI最常用于硬盘和磁带驱动器。虽然并非所有的控制器都能操作所有的设备,但是SCSI能够连接其它各种不同的设备,包括扫描器和CD驱动器。SCSI标准定义了用于特定***设备类型的命令集。作为这些类型中的其中一种,“未知”的存在是指,理论上它可以用作几乎所有装置的接口,但是其标准是非常实际的并且偏向商务需求。
微软集群服务器软件(MSCS)是一种软件,其设计来使得服务器能够作为计算机集群一起运行,并且能提供故障转移和增强的应用程序可用性,或者,在高性能计算(HPC)集群(在超级运算时)的情况下,提供能使服务器作为计算机集群一起运行的并行计算能力。
在面向对象的程序设计中,无论当前是否执行,实例(或实例化)都是指一个对象的出现或拷贝。同一类的实例共享相同的属性集,但是,它们通常的区别在于那些属性所包含的内容。例如,“雇员”类别会描述该雇员类别的所有实例共有的属性。为了正确完成任务,雇员对象可以大体上都相似,但区别是在于如“名字”和“薪资”等属性。对类别的描述会详细说明这类属性并且限定与该类别相关的操作或动作,比如“增加薪资”或“变更电话号码”。之后,就可以用名字=“Jane Doe”来谈论该雇员对象的一个实例,而用名字=“John Doe”来谈论该雇员对象的另一个实例。
同样,在面向对象的程序设计中,类别是一种用作创建自身实例的蓝图的概念—称为类别实例、类别对象、实例对象或者简称为对象。类别限定了能使这些类别实例具有状态和行为的组成成员。数据域成员(成员变量或实例变量)能使类别对象保持状态。其它种类的成员,尤其是方法,能实现类别对象的行为。类别实例具有相关类别的类型。
本发明的一个方面包括框架,在该框架上,在不使用现有故障转移集群技术或类似产品的情况下,能够对节点上存在的应用程序的实例进行虚拟化。根据本发明的一个实施例,框架建立在始终为集群中每个节点提供全读和全写权限的共享集群文件***上。此外,不需要MSCS(或类似产品)和SCSI预留来管理对文件***的访问。因此,应用程序可以进行虚拟化,并且可以在集群内的任意节点上快速地实现上线。
图2是根据本发明一个实施例的能实现集群感知应用程序虚拟化的服务器集群的各节点上的组件的概况逻辑图。除此之外,根据本发明的一个实施例,服务器集群内的各节点包括集群监控引擎220、本地监控引擎210、主机引擎230以及应用程序引擎240。在本发明的其它实施例中,各节点上还包括其他的组件,比如健康监控器250、注册表监控器260和应用程序安装器280。各节点还包括故障转移策略270以及各种用户界面285或客户端,借由用户界面285或客户端,解决方案图示软件可以获取服务器集群的状态并做出配置变化。如图2所示,客户端285经由用于发送命令、响应和事件的线路协议与本地监控引擎210进行通信。
根据本发明的一个实施例,本地监控引擎210负责接收来自用户界面285的请求并将请求转发至主机引擎230和集群监控引擎220。本地监控引擎210还包括客户端管理器,其处理进入的客户端请求并将这些请求传送到处理引擎以便保持客户端连接。处理引擎通过将请求转发至主机引擎230和/或集群监控引擎220来解析并执行客户端请求。本地监控引擎210还包括同步管理器,其保持整个集群上的状态和配置文件的同步。因此,当用户界面285接收到命令而添加或形成虚拟主机时,同步管理器将该信息转播至集群监控引擎,从而可以更新其它节点上的配置文件。
集群监控引擎220是服务器集群内其它节点之间通信的主要装置。集群监控引擎负责接收来自其它集群监控器的请求并将其转发至各节点处的本地监控引擎。集群监控引擎还负责在节点加入或离开服务器集群时发起并管理故障转移和故障转移策略。在本发明的一个实施例中,集群监控引擎通过写下***服务守护进程来完成该任务。此外,还要求集群监控引擎通过采用集群协调器来协调集群内所有可用节点之间的所有动作。集群监控引擎还包括同步管理器,其保持集群上的状态和配置文件的同步并且与本地监控引擎210的同步管理器一起工作。存储管理器与集群共享文件***进行界面连接并维持集群成员列表,从而使各节点维持整个服务器集群的最新文件列表。最后,集群监控引擎220包括执行故障转移和故障恢复策略的策略管理器。
服务器集群的各节点还包括主机引擎230,其负责建立并维持虚拟主机和虚拟互联网协议地址。主机引擎230由本地监控引擎210调用后,对特定请求加以处理以创建虚拟主机,并在创建完成之时退出。由此,主机引擎230包括维持并管理虚拟主机列表的虚拟主机管理器以及管理虚拟互联网协议地址订阅的互联网地址管理器。
本地监控引擎210还与应用程序引擎240通信。应用程序引擎240负责建立并管理应用程序,如SQL服务器(或其它虚拟化的应用程序)。与主机引擎230一样,应用程序引擎240响应于请求而被本地监控引擎210调用。一旦应用程序被实例化,应用程序引擎240便退出。如图2所示,应用程序引擎包括维持并管理各实例的数据库文件的数据库管理器。注册表管理器还维持并管理各虚拟化实例的注册表值,而管理并维持实例配置的实例管理器存储在各磁盘上。最后,集成管理器利用注册表监控引擎和健康监控引擎来处理实例注册。
在本发明的另一实施例中,服务器集群的各节点还包括健康监控器250和注册表监控器260。健康监控器负责监控应用程序的各实例的健康并发送故障转移或故障恢复事件的信号。健康监控器作为***服务守护进程运行,并且在用于远程程序请求的特定通信协议上进行监听。健康监控引擎250包括处理来自本地监控引擎210的进入请求并维持这些请求的注册列表的进程管理器。它还包括基于注册策略对服务健康和其它事件进行监控的服务监视器。当需要时,健康监控引擎250在需要重新配置集群时调用故障转移工具270。故障转移工具和策略存在于故障转移储存库270内,而该故障转移储存库270与本地监控引擎210进行通信并相应地与集群监控引擎220进行通信。
与应用程序引擎240通信的注册表监控器260监控注册表的变化,并且维持这些变化到非易失性存储器。注册表监控器也作为用于其他远程过程请求的***服务守护进程来运行。注册表监控器的职责包括:处理进入请求并维持注册列表、以及基于所建立的注册策略执行注册表注册请求和事件。
通过连接监控器引擎,特别是连接监控器守护进程,客户端应用程序下发管理命令给后端组件,并且发送具体格式化的命令给各节点的其它组件和服务器集群内的其它节点。此类客户端应用程序也可接收命令回复,并且,通过相同连接命令的异步状态消息通常是作为类似于互联网RFC 1832中描述的XDR格式的二进制数据流来进行传送的。本发明的另一个特点是能够发送并接收集群环境的状态性警报。状态性警报表示集群内某一处正在发生的状态,例如,可访问节点或不工作节点。通过发送单个状态消息给集群能够增强、修改或降低警报。由于能够连接组件(节点)并断开组件(节点)的连接,因此,可以突出若干警报以作为连接集群的新节点。例如,如果一个节点崩溃,那么增强无法访问节点警报。如果是新节点连接几秒钟之后,那么,将不会从该无法访问节点警报处接收状态消息,也不能在屏幕上显示该消息或将该消息传送给用户。为了解决该问题,状态中继网络内的各组件必须以内存中小型警报数据库的形式保留住最近的状态性增强警报。当新计算机与状态中继网络连接时,将整个警报数据库转播到新的对等数据库,正如刚刚产生警报一样。健康监控器的一个作用是接收并分析警报。基于所接收到的警报,健康监控器可配置为执行特定的动作。这些动作通过策略进行配置,而这些策略通常是针对各个类型的警报。通常,具体的细节包括一组建立为在警报增强时发生的预定行动。
本发明(通常参考图2)建立了用于应用程序虚拟化的***。除此之外,在服务器集群的各节点上,本地监控引擎与集群监控引擎和主机引擎进行通信,以形成一个或多个环境,而在该一个或多个环境上可以形成虚拟版本的应用程序。各虚拟应用程序均位于具有唯一主机名称和IP地址的虚拟主机上。在发生故障转移或故障恢复这些情况后,基于建立的故障转移策略将虚拟主机及其相关虚拟应用程序重新定位到新节点上。一旦重新定位,虚拟主机的新实例具有与先前版本相同的名称和IP地址,因而,从应用程序的角度来看,对***的访问是无缝的。
本发明利用了集群共享文件***,其中,集群内的每个服务器都可以从磁盘的相同区块处进行读取或写入。在没有SCSI预留强加的约束的情况下,可以快速、轻易并有效地实现虚拟化应用程序在集群内任意服务器上的上线。而且,对于任何支持“共享一切”架构的应用程序来说,本发明可以扩展为:为应用程序提供更便宜且更有效的负载均衡平台。
为了更好地理解本发明的复杂性,将对下列示例加以考虑。在一个示例(通常参考图2)中,本地监控引擎210与主机引擎230进行通信,以建立虚拟主机和虚拟IP地址并将其与本地服务器绑定。然后主机引擎230与应用程序引擎240进行通信以便对选择的应用程序的实例(在本示例中)处理并转换成与虚拟主机绑定的集群应用程序。在本发明的上下文中,集群应用程序是一种与仅仅知晓其底层主机的应用程序截然相反的集群感知型应用程序。回到这个示例中,本地监控引擎210也与集群监控引擎220进行通信,以确保集群内所有服务器都知道新的集群应用程序,从而使得它们能正确地加入集群仲裁。相似地,集群监控器220监控在该集群内其它节点处进行实例化的其它应用程序。为了给应用程序提供高可用性,应用程序引擎240利用注册表监控器260和健康监控270注册应用程序。
当应用程序的本地注册码发生变化时,注册表监控器260会保留对共享磁盘的改变。这样就保证了整个集群将会一直具有注册表单元的最新图像。如果应用程序服务发生故障或在集群内的其中一个活动服务器上离线(即,节点发生故障)时,健康监控器250利用本地监控引擎210结合故障转移策略储存库270发送故障转移信号。根据本发明的一个实施例,故障转移策略指出在发生节点故障时应用程序的特定示例的位置。一旦标识了目标节点,便可启动请求。
本地监控引擎210与集群监控引擎220进行通信,以便将请求转发至其它远程集群监控引擎。各远程集群监控引擎依次将该请求转发给它们各自的本地监控引擎。远程本地监控引擎然后将该请求传到主机引擎和应用程序引擎处。如果该远程服务器是虚拟主机的下一个可用服务器(由故障转移策略来指定),那么远程主机引擎开始将之前的虚拟主机和虚拟IP与其新的网络接口相绑定,而远程应用程序引擎开始处理该应用程序并利用远程注册表和健康监控器对其进行注册。
本公开中所述的以及以下详述的特征和优点并不是详尽的。对相关领域的普通技术人员来说,许多其他的特征和优点结合本文的附图、说明书以及权利要求书将会变得更加明显。此外,应该注意的是,本说明书中所使用的语言主要是出于可读性和指导性目的来选择的,可以不用于描述或限制本发明的主题。对本发明主题的确定必须参考权利要求书。
根据本发明的一个或多个实施例对应用程序进行虚拟化可使得应用程序无缝并透明地工作,不管该应用程序实际的主机在何处或在哪个***上(即在物理或虚拟服务器上)。虚拟化应用程序(如SQL服务器)犹如在独立模式下运行一样进行运转和发挥作用。根据本发明,利用建立在集群共享文件***上的合适的故障转移引擎,虚拟化的应用能续能够在集群/云端基础架构内的节点间过渡并继续运转。此外,多个应用程序共享单个存储池,从而消除了预先为各集群应用程序分配单独存储仲裁的需要。本发明提供一种应用程序整合平台,其中,应用程序的多个实例能够堆叠在单个服务器上。
以下还对流程图进行了说明,这些流程图示出了可用于形成服务器集群应用程序虚拟化的方法的示例。在以下描述中,将会理解的是,流程图的各个框以及流程图的框的组合能够通过计算机程序指令来实现。这些计算机程序指令可以加载在计算机或其它可编程设备上以产生机器,从而使得在计算机或其它可编程设备上执行的指令建立起用于实现流程图框或者框内指明的功能的装置。这些计算机程序指令也可以储存在能够指导计算机或其它可编程设备以特定方式运转的计算机可读取存储器中,从而使得存储在该计算机可读取存储器的指令产生包括实现流程图框或者框内指明的功能的指令装置的制品。计算机程序指令也可以加载在计算机或其它可编程设备上,以使得一系列可操作步骤在计算机内或其它可编程设备上执行,进而产生计算机实施进程,从而使得在计算机或其它可编程设备上执行的指令提供实现流程图框或者框内指明的功能的步骤。
因此,流程图的框支持用于实施指定功能的装置的组合以及用于实施指定功能的步骤的组合。还将理解的是,流程图的各个框和流程图的框的组合能够通过专用的基于硬件的计算机***来实施。该专用的基于硬件的计算机***用于实施指定功能或步骤,或者实施专用硬件与计算机指令的组合。
现在转向图3,可以看到根据本发明一个实施例的对服务器集群中的应用程序进行虚拟化的流程图。该过程以请求对应用程序的实例进行虚拟化310作为开始305。该请求不仅在接收节点的组件中传送,而且还转发315至服务器集群内的其它各个集群监控器/节点。对应用程序的实例进行虚拟化的请求同时发送到应用程序引擎和主机引擎。在到达主机引擎之后,该请求引起虚拟主机的增加330以及虚拟互联网协议地址的增加335。因此,应用程序引擎增加了应用程序的实例320,并发起查询340,以确定该节点是否是应用程序实例的主要节点。
如果接收该请求的节点是主要节点340,那么将与该应用程序相关联的数据库复制到存储区网络上350。其后,更新实例的注册表355,并且在整个集群环境内更新实例服务360。对实例服务器名进行更新365以与虚拟主机的名称相匹配,而该名称正是与该实例相关联的互联网协议地址;创建该实例的别名370,并将该别名向健康监控器注册375。同时也向注册表监控器进行注册380,并且启动应用程序实例化85,而且,在实例化完全的情况下,更新应用程序配置345,并将新应用程序的存在传达给剩余的服务器集群,结束该过程395。
相关领域的技术人员将知道的是,本说明书的某些部分是以对数据进行运算的算法或符号表示来呈现的,而这些数据是作为比特或二进制数字信号存储在机器存储器(比如,计算机存储器)上。这些算法或符号表示是数据处理领域内普通技术人员用于将他们工作内容传递给本领域其它技术人员的技术示例。本文所使用的“算法”或“过程”是一系列通向预期结果的前后一致的运算或类似处理。在本文的上下文中,算法和操作涉及对信息元素的处理。通常,但并非必要,这类元素可采取能够由机器进行存储、存取、传输、结合、比较等操作的电信号、磁信号或光信号的形式。有时候,主要是出于共同使用的目的,采用措辞“数据”、“内容”、“比特”、“数值”、“元素”、“符号”、“字符”、“术语”、“数字”、“数词”、“字”等来指代这类信号是比较方便的。但是,这些特定的措辞只是为了方便标记,并且也与适当的信息元素关联。
除非另有特别说明,否则,这里使用“处理”、“运算”、“计算”、“确定”、“表示”、“显示”等措辞所进行的论述可能指的是对在一个或多个存储器(如易失性存储器、非易失性存储器或其组合)、寄存器或其它接收、存储、发送或显示信息的机器组件内以物理(如电子的、磁性的或光学的)量来表示的数据进行操作或转换的机器的动作或过程。
同样地,模块、管理器、功能、***、引擎、图层、特点、属性、方法等其它方面的特定命名和划分并不是强制性的或有意义的,并且,实施本发明或其特点的机制可以有不同的名称、划分和/或格式。此外,对于相关领域的普通技术人员来说应该显而易见的是,本发明的模块、管理器、功能、***、引擎、图层、特点、属性、方法等其它方面能够作为软件、硬件、固件或三者的任意组合来实现。当然,无论本发明的组件是在何处作为软件来实现,该组件都能作为脚本、单独的程序、较大程序的一部分、多个单独脚本和/或程序、静态或动态链接的程序库、内核可加载模块、装置驱动程序来实现,和/或以任何计算机程序设计领域的技术人员现在或将来熟知的任何其它方式来实现。此外,本发明决不限于任何特定编程语言的实施,或者限于任何特定操作***或环境。
为了更好地理解本公开中所呈现的概念以及明白本发明在服务器集群中的应用,将对下列示例加以考虑。图4A至4D呈现了根据本发明实施例的对服务器集群环境所进行的一系列描述,其中,在该服务器集群环境中,虚拟化的应用程序处于一个或多个服务器上。现在参考图4A,其示出了一种集群服务器环境,该集群服务器环境包括多个以通信方式耦合在一起并进一步与整合的共享文件***410进行通信的服务器421。服务器集群420通过集群管理器430来管理,并且依次与多个客户端或用户界面440进行通信。在本描述中,共享数据或整合的共享文件***410由一系列存储介质415组成,比如存储区域网或类似的***。的确,存储池可以是单个存储阵列,或者可以由来自各第三方供应商的存储区域网络阵列的组合组成。具有结束服务器集群420的各服务器可以是虚拟化服务器或者物理服务器。在本描述中,描述了15个服务器,分别是4201-42015。要注意的是,由于本发明支持异构服务器集群,所以本发明同样适用于各种不同的服务器尺寸和类型。
图4B示出了相同的服务器集群环境,其中,至少一个应用程序与服务器集群内的各个服务器相关联。例如,服务器4201与SQL 1应用程序4501相关联。同理,服务器4205与交换应用程序4505相关联。由此可以看出整个服务器集群中应用程序服务器的相似对应关系。图4B描绘出了一种典型的服务器集群环境,其中,各应用程序位于每个服务器应用程序的单个实例上。
根据本发明,服务器集群内的各节点均包括各种组件,其中包括集群监控引擎、本地监控引擎以及主机引擎。这些组件与其他组件(如健康监控器和注册表监控器)一起工作,以对特定节点以及集群环境内的其它节点的整体健康状况进行评估。通过构建虚拟主机以及针对该主机的虚拟互联网地址,能够将多个应用程序实例放置在单个物理服务器上,而不是出现单个实例必须存在于单个服务器上的典型情况。如果特定节点的健康状况出现问题时,虚拟主机处理其自身互联网协议地址并变得服务器集群感知以便自由地从整合的共享文件***中存取数据的能力使得虚拟主机能够从一个物理节点重新定位到另一个物理节点。
图4C是服务器集群环境中一个或多个节点发生故障的示例。在这个具体示例中,有两个服务器已经认定是发生故障了的。出于维修目的,已经故意将第一个服务器42013取下,正如覆盖服务器的图像的扳手465所示。同样地,第二个服务器42014已经通过健康监控器认定是发生了故障460.在这两种情况中,各服务器上的应用程序实例不再运行。根据本发明的一个实施例,存在有如下的故障转移策略:在服务器发生故障的情况下,指定特定应用程序的实例重新定位到另一节点上。针对本示例,考虑在第一个服务器42013上的SQL 5应用程序和SP 5应用程序具有重新定位到42010上的故障转移策略。同理,在发生故障的服务器42014上进行实例化的应用程序EXCH 2具有重新定位到服务器42015上的故障转移策略。
图4D示出了根据预定故障转移策略,已经对位于正在维修的服务器上以及位于正处于故障中的服务器上的应用程序实例进行了重新定位。按照类似的方式,IT专业人士可以将某些服务器和服务器集群指定为处于闲置状态或处于人为导致应用程序故障的状态下,该应用程序可以在该服务器上进行实例化以遵循其预定的故障转移策略。这样处理可以将应用程序实例重新定位到其它服务器上,以便更有效地利用服务器容量。根据本发明的一个实施例,这是通过对虚拟主机上的应用程序进行实例化来实现的,同时,该虚拟主机带有自身唯一的虚拟互联网协议地址。通过这样做,无论处于哪个物理服务器上,应用程序的实例都保持了与整合的共享文件***的无缝传导。因此,图4D示出了已经对与许多物理服务器相关联的应用程序实例进行了重新定位,以便在一个或多个服务器上堆叠多个应用程序。如图4D所示,通过这样的处理,原来由十五个分别处于应用程序中的物理服务器组成的服务器集群能够整合成七个物理服务器,其中,应用程序的多个实例堆叠在一个或多个服务器上。这样,这种服务器集群应用程序虚拟化使得IT专业人士能够更有效地且更高性价比地管理服务器集群,并且,在从一个服务器移到另一个服务器时,避免或者最大程度地减少了因维修或计算机故障而引起的应用程序再实例化的昂贵的故障停机时间。
下面概述了本发明的优选实施例。在一个实施例中,一种用于服务器集群应用程序虚拟化的***包括:
多个配置为服务器集群的服务器,其中,该服务器集群内的各服务器均包括本地监控引擎、集群监控引擎、主机引擎以及应用程序引擎,其中,主机引擎可操作来形成一个或多个虚拟主机;以及
应用程序的至少一个实例,其配置为在各服务器处的一个或多个虚拟主机的其中一个虚拟主机上运行。
一种用于服务器集群应用程序虚拟化的***的其它特征可包括:
其中,监控引擎可操作来管理来自用户界面和/或集群监控引擎的进入请求;
其中,监控引擎使得来自用户界面的请求与集群监控引擎同步;
其中,集群监控引擎以通信方式耦合至服务器集群内的各服务器,并且可操作来管理从服务器集群中的其它服务器处接收的请求;
其中,集群监控引擎维持并执行故障转移策略;
其中,主机引擎可操作来为各虚拟主机创建虚拟互联网协议地址;
其中,应用程序引擎可操作来在虚拟主机上创建并维持应用程序的至少一个实例;
其中,应用程序引擎将物理服务器上的应用程序的至少一个实例转换为与虚拟主机绑定的集群应用程序;
其中,服务器集群内的各服务器均还包括健康监控器;
其中,健康监控器可操作来监控一组预定的应用程序性能与***需求;
其中,服务器集群内的各服务器均还包括注册表监控器;以及
其中,服务器集群内的各服务器均与多个虚拟主机相关联。
在另一优选实施例中,一种用于服务器集群应用程序虚拟化的方法包括:
在服务器集群内的各节点上形成至少一个虚拟主机,其中,各节点均包括节点互联网协议地址、本地监控引擎、集群监控引擎、主机引擎以及应用程序引擎;以及
对虚拟主机上的应用程序进行实例化,其中,该应用程序与不同于所述节点互联网协议地址的虚拟互联网协议地址相关联。
用于服务器集群应用程序虚拟化的方法的其它特征可包括:
其中,监控引擎管理来自用户界面和/或集群监控引擎的进入请求;
其中,集群监控引擎管理从服务器集群中的其它节点处接收的请求;
其中,主机引擎创建一个或多个虚拟主机以及一个或多个虚拟互联网协议地址;以及
还包括:将虚拟主机及其虚拟互联网协议地址和应用程序从该服务器集群内的一个节点传送到另一个节点。
本发明的另一特点是一种计算机可读取存储介质,其实际包含了可由服务器集群内的服务器执行的指令程序,其中,该指令程序包括多个用于服务器集群应用程序虚拟化的程序代码。该指令程序包括:
用于对从服务器集群内的其它节点处接收的请求进行管理的程序代码;
用于从用户界面接收请求的程序代码;
用于在服务器集群的各节点处建立一个或多个虚拟主机的程序代码;以及
用于对一个或多个虚拟主机上的应用程序进行实例化的程序代码。
该指令程序的其它特征可包括:
其中,该指令程序还包括用于利用一个或多个虚拟主机来维持并执行故障转移策略的程序代码;
其中,该指令程序还包括用于创建与一个或多个虚拟主机中的各个虚拟主机相关联的虚拟互联网协议地址的程序代码;以及
其中,该指令程序还包括用于将应用程序的实例耦合至虚拟主机的程序代码。
尽管以上已经结合了用于服务器集群应用程序虚拟化的***与方法来对本发明的原理进行描述,但是,应清楚理解的是,上述描述只是示例性的,并不构成对本发明范围的限制。尤其应该明白的是,上述公开所给出的启示是建议相关领域的技术人员做出其它修改。这些修改可以包含本身已知的其它特征,也可以用作本文中已经描述的特征的替换或增加。虽然在本申请中已经将权利要求书论述为特定的特征组合,但是应理解的是,本公开的范围也包括任何新颖的特征、或者明确或隐含公开的特征的任何新颖组合、或者对相关领域的技术人员来说显而易见的任何概述或修改,无论这些是否涉及与任何权利要求中当前要求的发明相同的发明,以及是否缓解了本发明所面对的任意或全部的相同技术问题。因此,在本申请或由此导出的任何进一步申请的起诉期间,本申请保留了对这些特征和/或这些特征的组合制定新权利要求的权利。

Claims (21)

1.一种用于服务器集群应用程序虚拟化的***,包括:
多个配置为服务器集群的服务器,其中,所述服务器集群内的各个服务器均包括本地监控引擎、集群监控引擎、主机引擎以及应用程序引擎,其中,所述主机引擎可操作来形成一个或多个虚拟主机;以及
应用程序的至少一个实例,其配置为在各服务器处的所述一个或多个虚拟主机的其中一个虚拟主机上运行。
2.如权利要求1所述的用于服务器集群应用程序虚拟化的***,其中,所述监控引擎可操作来管理来自用户界面和/或所述集群监控引擎的进入请求。
3.如权利要求2所述的用于服务器集群应用程序虚拟化的***,其中,所述监控引擎使得来自所述用户界面的请求与所述集群监控引擎同步。
4.如权利要求1所述的用于服务器集群应用程序虚拟化的***,其中,所述集群监控引擎以通信方式耦合至所述服务器集群内的各个服务器,并且可操作来管理从所述服务器集群中的其它服务器处接收的请求。
5.如权利要求1所述的用于服务器集群应用程序虚拟化的***,其中,所述集群监控引擎维持并执行故障转移策略。
6.如权利要求1所述的用于服务器集群应用程序虚拟化的***,其中,所述主机引擎可操作来为各虚拟主机创建虚拟互联网协议地址。
7.如权利要求1所述的用于服务器集群应用程序虚拟化的***,其中,所述应用程序引擎可操作来在所述虚拟主机上创建并维持应用程序的至少一个实例。
8.如权利要求1所述的用于服务器集群应用程序虚拟化的***,其中,所述应用程序引擎将物理服务器上的应用程序的至少一个实例转换为与虚拟主机绑定的集群应用程序。
9.如权利要求1所述的用于服务器集群应用程序虚拟化的***,其中,所述服务器集群内的各服务器均还包括健康监控器。
10.如权利要求9所述的用于服务器集群应用程序虚拟化的***,其中,所述健康监控器可操作来监控一组预定的应用程序性能与***需求。
11.如权利要求1所述的用于服务器集群应用程序虚拟化的***,其中,所述服务器集群内的各服务器均还包括注册表监控器。
12.如权利要求1所述的用于服务器集群应用程序虚拟化的***,其中,所述服务器集群内的各服务器均与多个虚拟主机相关联。
13.一种用于服务器集群应用程序虚拟化的方法,包括:
在服务器集群内的各节点上形成至少一个虚拟主机,其中,各节点均包括节点互联网协议地址、本地监控引擎、集群监控引擎、主机引擎以及应用程序引擎;以及
对所述虚拟主机上的应用程序进行实例化,其中,所述应用程序与不同于所述节点互联网协议地址的虚拟互联网协议地址相关联。
14.如权利要求13所述的用于服务器集群应用程序虚拟化的方法,其中,所述监控引擎对来自用户界面和/或所述集群监控引擎的进入请求进行管理。
15.如权利要求13所述的用于服务器集群应用程序虚拟化的方法,其中,所述集群监控引擎管理从所述服务器集群中的其它节点处接收的请求。
16.如权利要求13所述的用于服务器集群应用程序虚拟化的方法,其中,所述主机引擎创建一个或多个虚拟主机以及一个或多个虚拟互联网协议地址。
17.如权利要求13所述的用于服务器集群应用程序虚拟化的方法,还包括:将虚拟主机及其虚拟互联网协议地址和应用程序从所述服务器集群内的一个节点传送到另一个节点。
18.一种实际包含可由服务器集群内的服务器执行的指令程序的计算机可读取存储介质,其中,所述指令程序包括多个用于服务器集群应用程序虚拟化的程序代码,所述指令程序包括:
用于对从所述服务器集群内的其它节点处接收的请求进行管理的程序代码;
用于从用户界面接收请求的程序代码;
用于在所述服务器集群的各节点处建立一个或多个虚拟主机的程序代码;以及
用于对所述一个或多个虚拟主机上的应用程序进行实例化的程序代码。
19.如权利要求18所述的包含指令程序的计算机可读取存储介质,其中,所述指令程序还包括用于利用一个或多个虚拟主机来维持并执行故障转移策略的程序代码。
20.如权利要求18所述的包含指令程序的计算机可读取存储介质,其中,所述指令程序还包括用于创建与所述一个或多个虚拟主机中的各个虚拟主机相关联的虚拟互联网协议地址的程序代码。
21.如权利要求18所述的包含指令程序的计算机可读取存储介质,其中,所述指令程序还包括用于将所述应用程序的实例耦合至所述虚拟主机的程序代码。
CN201380005537.0A 2012-01-18 2013-01-17 用于服务器集群应用程序虚拟化的***和方法 Active CN104169881B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261588011P 2012-01-18 2012-01-18
US61/588,011 2012-01-18
US13/743,007 2013-01-16
US13/743,007 US9515869B2 (en) 2012-01-18 2013-01-16 Systems and methods for server cluster application virtualization
PCT/US2013/021858 WO2013109702A1 (en) 2012-01-18 2013-01-17 Systems and methods for server cluster application virtualization

Publications (2)

Publication Number Publication Date
CN104169881A true CN104169881A (zh) 2014-11-26
CN104169881B CN104169881B (zh) 2017-11-24

Family

ID=48780772

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380005537.0A Active CN104169881B (zh) 2012-01-18 2013-01-17 用于服务器集群应用程序虚拟化的***和方法

Country Status (9)

Country Link
US (1) US9515869B2 (zh)
EP (2) EP2805239A1 (zh)
CN (1) CN104169881B (zh)
AU (1) AU2013209780B2 (zh)
CA (1) CA2863442C (zh)
IN (1) IN2014DN05896A (zh)
MY (1) MY184551A (zh)
SG (1) SG11201403937PA (zh)
WO (1) WO2013109702A1 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106100940A (zh) * 2016-08-25 2016-11-09 上海斐讯数据通信技术有限公司 一种网络报文监控装置及其监控方法
CN107450980A (zh) * 2016-05-31 2017-12-08 西门子公司 运行自动化装置的方法以及自动化装置
CN107533480A (zh) * 2015-04-17 2018-01-02 日本电信电话株式会社 服务器选择装置、服务器选择方法及服务器选择程序
CN108737271A (zh) * 2017-04-14 2018-11-02 华为技术有限公司 一种报文路由方法、装置及***
CN109074280A (zh) * 2016-04-29 2018-12-21 英特尔Ip公司 网络功能虚拟化
CN110389775A (zh) * 2018-04-17 2019-10-29 慧与发展有限责任合伙企业 升级编排器
CN110603522A (zh) * 2017-05-02 2019-12-20 纳木技术株式会社 在云平台上将应用程序容器化的方法
CN111149071A (zh) * 2017-10-04 2020-05-12 奥卡多创新有限公司 物品处理协调***和重新定位运输容器的方法
CN111367202A (zh) * 2018-12-26 2020-07-03 华为技术有限公司 监控节点、***和方法
CN112860382A (zh) * 2014-09-30 2021-05-28 亚马逊技术有限公司 线程化作为服务
CN112866342A (zh) * 2020-12-31 2021-05-28 中冶赛迪重庆信息技术有限公司 一种面向钢铁行业的分布式数据采集***及方法
CN114780272A (zh) * 2022-04-18 2022-07-22 北京亚康万玮信息技术股份有限公司 基于共享存储和虚拟化的智能故障自愈调度方法和装置

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9083709B2 (en) * 2012-05-11 2015-07-14 Cisco Technology, Inc. Virtual internet protocol migration and load balancing
US10454997B2 (en) * 2012-09-07 2019-10-22 Avigilon Corporation Distributed physical security system
US9323628B2 (en) * 2012-10-09 2016-04-26 Dh2I Company Instance level server application monitoring, load balancing, and resource allocation
US9853949B1 (en) * 2013-04-19 2017-12-26 Amazon Technologies, Inc. Secure time service
US9450700B1 (en) * 2013-08-05 2016-09-20 Amazon Technologies, Inc. Efficient network fleet monitoring
US9571603B2 (en) 2013-09-17 2017-02-14 Cisco Technology, Inc. Redundancy network protocol system
WO2015118377A1 (en) 2014-02-04 2015-08-13 Telefonaktiebolaget L M Ericsson (Publ) Managing service availability in a mega virtual machine
EP3767896A1 (en) * 2014-08-12 2021-01-20 Eingot LLC A zero-knowledge environment based social networking engine
US10237342B2 (en) * 2014-09-17 2019-03-19 Dh2I Company Coordinated and high availability storage access
US10148727B2 (en) * 2014-12-31 2018-12-04 Vidscale Services, Inc. Methods and systems for an end-to-end solution to deliver content in a network
US10091111B2 (en) * 2014-12-31 2018-10-02 Vidscale Services, Inc. Methods and systems for an end-to-end solution to deliver content in a network
US9959109B2 (en) 2015-04-10 2018-05-01 Avigilon Corporation Upgrading a physical security system having multiple server nodes
US10089131B2 (en) 2015-07-01 2018-10-02 Dell Products, Lp Compute cluster load balancing based on disk I/O cache contents
US10110670B2 (en) * 2015-07-20 2018-10-23 Oracle International Corporation Allocation of service endpoints to servers
US9851986B2 (en) 2015-08-04 2017-12-26 International Business Machines Corporation Application configuration in a virtual environment
CN105553732B (zh) * 2015-12-23 2019-03-22 中国科学院信息工程研究所 一种分布式网络模拟方法及***
US20170255506A1 (en) * 2016-03-07 2017-09-07 Dell Software, Inc. Monitoring, analyzing, and mapping of computing resources
US10255147B2 (en) * 2016-04-14 2019-04-09 Vmware, Inc. Fault tolerance for containers in a virtualized computing environment
CN107526659B (zh) 2016-06-21 2021-02-12 伊姆西Ip控股有限责任公司 用于失效备援的方法和设备
CN106227635A (zh) * 2016-07-17 2016-12-14 合肥赑歌数据科技有限公司 基于web界面的HPC机群管理***
CN110520843B (zh) * 2017-03-23 2023-08-29 Dh2I公司 集群环境中高度可用的有状态容器
CN107633094B (zh) * 2017-10-11 2020-12-29 北信源***集成有限公司 一种集群环境中数据检索的方法和装置
US11281551B2 (en) 2019-04-05 2022-03-22 Hewlett Packard Enterprise Development Lp Enhanced configuration management of data processing clusters
US11347562B2 (en) * 2019-07-09 2022-05-31 Hewlett Packard Enterprise Development Lp Management of dependencies between clusters in a computing environment
CN112241293A (zh) * 2019-07-19 2021-01-19 北京东土科技股份有限公司 工业互联网云平台的应用管理方法、装置、设备及介质
US11363441B2 (en) * 2019-09-24 2022-06-14 At&T Intellectual Property I, L.P. Facilitating mobility as a service in fifth generation (5G) or other advanced networks
CN112306670B (zh) * 2019-10-22 2023-12-19 中建材信息技术股份有限公司 一种Docker虚拟化场景下的服务器集群优化方法
US11038763B1 (en) 2019-12-02 2021-06-15 At&T Intellectual Property I, L.P. Intelligent policy control engine for 5G or other next generation network
CN111343296B (zh) * 2020-02-26 2022-09-30 深信服科技股份有限公司 一种虚拟化应用通信方法、装置、服务器及可存储介质
CN111752695A (zh) * 2020-06-28 2020-10-09 北京百度网讯科技有限公司 下线方法、装置、设备以及存储介质
US11349964B2 (en) 2020-07-22 2022-05-31 International Business Machines Corporation Selective TCP/IP stack reconfiguration
CN112087336B (zh) * 2020-09-11 2022-09-02 杭州海康威视***技术有限公司 一种虚拟ip服务***的部署、管理方法、装置及电子设备
CN112130960A (zh) * 2020-09-29 2020-12-25 联想(北京)有限公司 一种轻量化移动边缘计算节点及构建方法
US11563802B2 (en) * 2020-11-06 2023-01-24 Dh2I Company Systems and methods for hierarchical failover groups
US11656926B1 (en) 2022-01-26 2023-05-23 Bank Of America Corporation Systems and methods for automatically applying configuration changes to computing clusters
EP4268912A1 (en) * 2022-04-26 2023-11-01 Build A Rocket Boy Games Ltd. Dynamic transitioning of a simulating host of a portion or all of a network interactive environment
CN115190044B (zh) * 2022-06-28 2023-08-08 平安银行股份有限公司 设备连接状态检查方法、装置、设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1554055A (zh) * 2001-07-23 2004-12-08 �Ƚ�΢װ�ù�˾ 高可用性集群虚拟服务器***
US20060195561A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Discovering and monitoring server clusters
US20080126834A1 (en) * 2006-08-31 2008-05-29 Dell Products, Lp On-demand provisioning of computer resources in physical/virtual cluster environments
CN101593133A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 虚拟机资源负载均衡方法及装置
US20110307886A1 (en) * 2010-06-11 2011-12-15 Oracle International Corporation Method and system for migrating the state of a virtual cluster

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7519814B2 (en) * 2003-09-15 2009-04-14 Trigence Corp. System for containerization of application sets
WO2006026402A2 (en) * 2004-08-26 2006-03-09 Availigent, Inc. Method and system for providing high availability to computer applications
IL185224A0 (en) * 2007-08-13 2008-01-06 C S L Computing Solutions Lead System and method for managing a virtual machine environment
GB2458157B (en) * 2008-03-07 2012-04-25 Hewlett Packard Development Co Virtual machine liveness check
US20090328077A1 (en) * 2008-06-25 2009-12-31 International Business Machines Corporation Software Appliances not Requiring Virtual Machines
US9542222B2 (en) 2008-11-14 2017-01-10 Oracle International Corporation Resource broker system for dynamically deploying and managing software services in a virtual environment based on resource usage and service level agreement
DE112010003675T5 (de) * 2009-09-17 2013-01-10 International Business Machines Corp. Adress-Server
US8443365B2 (en) * 2010-11-03 2013-05-14 Hewlett-Packard Development Company, L.P. Methods and systems to clone a virtual machine instance
US8745214B2 (en) * 2011-06-03 2014-06-03 Oracle International Corporation System and method for collecting request metrics in an application server environment
US9304798B2 (en) * 2011-06-07 2016-04-05 Hewlett Packard Enterprise Development Lp Scalable multi-tenant network architecture for virtualized datacenters
WO2013002777A1 (en) * 2011-06-29 2013-01-03 Hewlett-Packard Development Company, L.P. Application migration with dynamic operating system containers
US9712599B2 (en) * 2011-10-03 2017-07-18 International Business Machines Corporation Application peak load processing
US8756455B2 (en) * 2011-11-17 2014-06-17 Microsoft Corporation Synchronized failover for active-passive applications
US20130159487A1 (en) * 2011-12-14 2013-06-20 Microsoft Corporation Migration of Virtual IP Addresses in a Failover Cluster
US8893147B2 (en) * 2012-01-13 2014-11-18 Ca, Inc. Providing a virtualized replication and high availability environment including a replication and high availability engine

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1554055A (zh) * 2001-07-23 2004-12-08 �Ƚ�΢װ�ù�˾ 高可用性集群虚拟服务器***
US20060195561A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Discovering and monitoring server clusters
US20080126834A1 (en) * 2006-08-31 2008-05-29 Dell Products, Lp On-demand provisioning of computer resources in physical/virtual cluster environments
CN101593133A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 虚拟机资源负载均衡方法及装置
US20110307886A1 (en) * 2010-06-11 2011-12-15 Oracle International Corporation Method and system for migrating the state of a virtual cluster

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860382A (zh) * 2014-09-30 2021-05-28 亚马逊技术有限公司 线程化作为服务
CN107533480B (zh) * 2015-04-17 2020-08-28 日本电信电话株式会社 服务器选择装置、服务器选择方法及记录介质
CN107533480A (zh) * 2015-04-17 2018-01-02 日本电信电话株式会社 服务器选择装置、服务器选择方法及服务器选择程序
CN109074280B (zh) * 2016-04-29 2023-11-17 苹果公司 网络功能虚拟化
CN109074280A (zh) * 2016-04-29 2018-12-21 英特尔Ip公司 网络功能虚拟化
CN107450980A (zh) * 2016-05-31 2017-12-08 西门子公司 运行自动化装置的方法以及自动化装置
CN106100940A (zh) * 2016-08-25 2016-11-09 上海斐讯数据通信技术有限公司 一种网络报文监控装置及其监控方法
CN108737271A (zh) * 2017-04-14 2018-11-02 华为技术有限公司 一种报文路由方法、装置及***
CN108737271B (zh) * 2017-04-14 2021-06-01 华为技术有限公司 一种报文路由方法、装置及***
CN110603522A (zh) * 2017-05-02 2019-12-20 纳木技术株式会社 在云平台上将应用程序容器化的方法
CN110603522B (zh) * 2017-05-02 2023-04-18 纳木技术株式会社 在云平台上将应用程序容器化的方法
CN111149071B (zh) * 2017-10-04 2024-03-12 奥卡多创新有限公司 物品处理协调***和重新定位运输容器的方法
CN111149071A (zh) * 2017-10-04 2020-05-12 奥卡多创新有限公司 物品处理协调***和重新定位运输容器的方法
US11673743B2 (en) 2017-10-04 2023-06-13 Ocado Innovation Limited Object handling coordination system and method of relocating a transporting vessel
CN110389775A (zh) * 2018-04-17 2019-10-29 慧与发展有限责任合伙企业 升级编排器
CN110389775B (zh) * 2018-04-17 2022-04-05 慧与发展有限责任合伙企业 升级编排器
CN111367202B (zh) * 2018-12-26 2022-12-13 华为云计算技术有限公司 监控实例的方法、监控节点和监控集群
CN111367202A (zh) * 2018-12-26 2020-07-03 华为技术有限公司 监控节点、***和方法
CN112866342A (zh) * 2020-12-31 2021-05-28 中冶赛迪重庆信息技术有限公司 一种面向钢铁行业的分布式数据采集***及方法
CN114780272B (zh) * 2022-04-18 2023-03-17 北京亚康万玮信息技术股份有限公司 基于共享存储和虚拟化的智能故障自愈调度方法和装置
CN114780272A (zh) * 2022-04-18 2022-07-22 北京亚康万玮信息技术股份有限公司 基于共享存储和虚拟化的智能故障自愈调度方法和装置

Also Published As

Publication number Publication date
SG11201403937PA (en) 2014-09-26
AU2013209780A1 (en) 2014-07-24
IN2014DN05896A (zh) 2015-06-05
EP2805239A1 (en) 2014-11-26
US20130185408A1 (en) 2013-07-18
EP3896570A1 (en) 2021-10-20
AU2013209780B2 (en) 2018-07-19
CN104169881B (zh) 2017-11-24
MY184551A (en) 2021-04-01
CA2863442C (en) 2020-03-10
US9515869B2 (en) 2016-12-06
WO2013109702A1 (en) 2013-07-25
CA2863442A1 (en) 2013-07-25

Similar Documents

Publication Publication Date Title
CN104169881A (zh) 用于服务器集群应用程序虚拟化的***和方法
US11461329B2 (en) Tracking query execution status for selectively routing queries
CN110520843B (zh) 集群环境中高度可用的有状态容器
US10237342B2 (en) Coordinated and high availability storage access
EP2758888B1 (en) Storage area network attached clustered storage system
Campbell et al. Extreme scale with full sql language support in microsoft sql azure
US8832498B1 (en) Scalable codebook correlation for cloud scale topology
US20100241896A1 (en) Method and System for Coordinated Multiple Cluster Failover
US9423956B2 (en) Emulating a stretched storage device using a shared storage device
US20180004777A1 (en) Data distribution across nodes of a distributed database base system
US10826812B2 (en) Multiple quorum witness
US9736046B1 (en) Path analytics using codebook correlation
US9442811B2 (en) Emulating a stretched storage device using a shared replicated storage device
Kim et al. Human-centric storage resource mechanism for big data on cloud service architecture
CN107203639A (zh) 基于高性能计算技术的并行文件***
US11750691B2 (en) Systems and methods for hierarchical failover groups
RU2721235C2 (ru) Способ и система для маршрутизации и выполнения транзакций
Neng Construction of high-availability bank system in virtualized environments
US10996864B1 (en) Aggregating ALUA statuses from multiple arrays
Salapura et al. Enabling enterprise-level workloads in the enterprise-class cloud
US12028411B2 (en) Systems and methods for hierarchical failover groups
RU2714602C1 (ru) Способ и система для обработки данных
Parziale et al. End-to-End High Availability Solution for System z from a Linux Perspective
Brady Designing GIS for high availability and high performance

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant