具体实施方式
现在将详细参考本发明,本发明的示例在附图中示出。在以下阐述中列举的实施方式不代表与要求保护的发明一致的所有实施方式。反之,这些实施方式仅仅是与本发明有关的一些方面一致的一些示例。只要有可能,在所有附图中相同的附图标记将用于指代相同或者类似的部件。
根据本发明的一些方面,实施方式可涉及一种用于利用联合的下游集群在网络上隔离虚拟机主机的系统。在一个示例性实施方式中,系统可包括第一计算节点,该第一计算节点被配置成:(1)通过第一应用服务器(例如,可扩展消息处理现场协议(XMPP)服务器)可操作地连接到第二计算节点,且(2)通过第二应用服务器(例如,另一XMPP服务器)可操作地连接到第三计算节点。这里,例如,第一计算节点可以被配置成被包括在联合的集群内,该联合的集群包括第三计算节点。在操作中,第一计算节点可以被配置成通过第一服务器接收来自第二计算节点的用以定义虚拟机的指令。此外,第一计算节点可以被配置成通过第二服务器将用以定义虚拟机的指令发送到第三计算节点。在一些实施方式中,第一XMPP服务器可以与第二XMPP服务器相同。
关于下文的讨论,利用联合的下游集群隔离虚拟机主机的系统可以用来在地理上和/或逻辑上隔离虚拟机主机。图1示出根据一个实施方式的可以涉及隔离虚拟机主机的示例性系统(“系统”)100的框图。系统100包括:联合的集群110,该联合的集群110包括计算节点102和计算节点104;应用服务器集群120(例如,Jabber集群);计算节点106;和网络140。在一些实施方式中,联合的集群110的计算节点102包括下游管理器112,联合的集群110的计算节点104包括下游代理组件114,以及计算节点106包括上游管理器组件130。
在下文详细描述的一些实施方式中,应用服务器集群120被描述成Jabber集群,该Jabber集群包括一个或多个可扩展消息处理现场协议(XMPP)服务器,所述XMPP服务器在逻辑上连接且被配置成支持在上游管理器组件130和下游管理器组件112之间以及在下游管理器组件112和下游代理组件114之间的XMPP通信。然而,与XMPP不同或者结合XMPP的各种其他处理组件和消息处理/通信协议(包括但不限于高级消息队列协议(AMQP)、ZeroMQ和超文本传输协议(HTTP)等)可以用来处理命令和对集群进行控制。这里,例如,通过混合协议(例如,HTTP和XMPP的组合)也可以进行处理和通信。因此,尽管图1的一些讨论可将系统100描述成包括Jabber集群,但是在一些实施方式中,系统100可包括其他的应用服务器和/或协议。例如,在一些实施方式中,可以利用大量的处理组件和/或协议,条件是实现在本文示出和描述的具体实施方式中所列举的特征,例如,拓扑结构、隔离和消息内容。这里,例如,该应用服务器可利用或者包括消息处理或通信协议,该消息处理或通信协议需要低的处理和存储资源、被标准化、是可定制的、是点对点的、和/或被配置成发送和接收状态和/或预配置消息。
另外,尽管图1可将系统100描述成包括单一集群或Jabber集群,但是在其他实施方式中,系统100可包括多于一个的集群或Jabber集群。在这样的多个Jabber集群的实施方式中,例如,第一Jabber集群可包括一个或多个服务器,该服务器在逻辑上连接且被配置成支持在上游管理器130和下游管理器112之间的通信,以及第二Jabber集群可包括一个或多个服务器,该服务器在逻辑上连接且被配置成支持在上游管理器112和下游代理114之间的通信。以该方式,在下游管理器112和下游代理114之间的通信可以独立于在上游管理器130和下游管理器112之间的通信是安全的,且在第一Jabber集群的任一部分发生故障的情况下可以继续进行。
根据本文的实施方式,上游管理器组件130、下游管理器组件112、和下游代理组件114可以是位于计算节点处(例如,在计算节点102、计算节点104、和/或计算节点106处)的软件和/或硬件模块。计算节点可以是被配置成将数据发送到系统100内的一个或多个装置以及通过网络140将数据发送到系统100外部的装置、和/或接收来自包括在网络140中的装置的数据和/或通过网络140接收来自系统100的外部的装置的数据的任一类型的装置。在一些实施方式中,计算节点可以被配置成起例如虚拟机主机、服务器装置(例如,web服务器装置)、网络管理装置、数据存储库和/或诸如此类的装置的作用。计算节点可以被配置成定义和发送预配置(provision)和/或动作指令,和/或增添、去除、锁定、修订和/或编辑虚拟机。
在一些实施方式中,计算节点可包括一个或多个存储器136和/或处理器138装置或组件。存储器136可以是例如随机存取存储器(RAM)、缓存器、硬盘、数据库、可擦除可编程只读存储器(EPROM)、电可擦除只读存储器(EEPROM)、只读存储器(ROM)和/或其他存储器。在一些实施方式中,计算节点的存储器136包括用来定义、发送和接收指令、消息、轮询请求和结果等的数据。在一些实施方式中,存储器136存储用以使处理器138执行与系统100关联的模块、进程和/或功能的指令。
计算节点(例如,计算节点102、计算节点104、和/或计算节点106)的处理器138可以是被配置成在系统100内运行和/或执行的任一合适的处理装置。在一些实施方式中,处理器可以是通用处理器、现场可编程门阵列(FPGA)、特定用途集成电路(ASIC)、数字信号处理器(DSP)、和/或诸如此类的处理器。处理器可以被配置成执行用以操作系统100的模块、功能和/或进程。
根据一些实施方式,上游管理器组件130可以是位于计算节点106处的软件和/或硬件模块,且可以被配置成通过应用服务器集群130(例如,Jabber集群)将联合的集群110在逻辑上连接到网络140。上游管理器组件130还可以被配置成通过网络140接收来自用户(例如,客户或网络管理员150)的装置145的超文本传输协议(HTTP)指令。在一些实施方式中,上游管理器组件130可以被配置成通过网络140按照其他协议(例如,代表性状态传输(REST))来接收指令。另外,上游管理器组件130可以被配置成通过应用服务器集群120将XMPP指令定义到下游管理器112。在一些实施方式中,XMPP指令可包括用于定义虚拟机的预配置指令。
在一些实施方式中,上游管理器组件130可以被配置成接收来自下游管理器112的预配置结果,可以存储这些结果,且可以通过网络140将状态更新和/或结果发送到用户等。此外,上游管理器组件130可以被配置成在逻辑上与作为单一计算节点的联合的集群110交互。这里,例如,上游管理器组件可以被配置成把包括单一的下游管理器和一个或多个下游代理的第一联合的集群看作具有第一计算量容量的单一计算节点,且可以把包括单一的下游管理器和十个下游代理的第二联合的集群看作具有不同于另一计算节点的第二计算量容量的单一计算节点。以该方式,上游管理器组件130不需要存储用于各个单独的下游代理的状态和其他信息,然而可仅存储用于各个联合的集群的状态和其他信息。上游管理器组件130还可以被配置成包括客户数据,例如,有效容量、虚拟机配额等。以该方式,上游管理器组件可接受或拒绝用以预配置虚拟机的请求,和/或能够基于该客户信息确定预配置选项。关于关联的计算节点,计算节点106除了包括用以存储系统和/或客户的数据、预配置规则等的存储器136A之外,还可包括一个或多个存储库144A和/或一个或多个数据库146A。
如本文所列举的,联合的集群110可以是计算节点或者多个协同操作的计算节点的集群,这些计算节点可以不是集中管理的。在一些实施方式中,联合计算节点的集群可包括将计算节点中的一个指定作为下游管理器的位置以及将其余的计算节点指定作为下游代理的位置。指定作为下游管理器的位置的计算节点可以操作代理仿真模块用以通过Jabber集群将联合的集群连接到上游管理器,且可以将该联合的集群作为单一的下游代理呈现给上游管理器,该单一的下游代理包括整个计算节点的集群的有效容量。
在图1中所示的示例性系统中,联合的集群110包括下游管理器组件112和下游代理组件114。尽管如图1中所示包括单一的下游代理组件114,但是在一些实施方式中,联合的集群110可包括任意数量的下游代理组件114。联合的集群110可以被配置成通过应用服务器集群与上游管理器130通信,且可以被配置成在逻辑上作为单一的计算节点呈现给上游管理器130。联合的集群110还可包括本地存储位置136B、136C和/或用于虚拟机的远程存储位置136A、136E,一个或多个本地的或者远程的数据库144A、144D、144E,和/或一个或多个本地的或者远程的存储库146A、146D、146E,或者与它们合作,其中,这样的本地数据库和/或存储库还可以或者反之可以位于特定的计算节点102、104内。例如,在此处的实施方式中,这样的一个或多个本地存储库146D可以被同步到上游存储库146A。
在一些实施方式中,联合的集群110的下游管理器组件112可以是位于计算节点102处的软件和/或硬件模块,且可以被配置成通过应用服务器集群120在逻辑上连接到计算节点106和上游管理器组件130以及通过应用服务器集群120在逻辑上连接到下游代理组件114。以该方式,通过应用服务器集群120可以发送和接收在下游管理器组件112和上游管理器组件130之间的所有流量,以及在下游管理器组件112和下游代理组件114之间的所有流量。下游管理器组件112可以被配置成接收来自上游管理器组件130的指令,例如,XMPP指令。下游管理器组件112还可以被配置成:(1)定义与下游代理组件114关联的预配置请求,以及(2)通过应用服务器集群120将该请求发送到下游代理组件114。在一些实施方式中,预配置请求可包括用以实例化虚拟机的请求。在这样的实施方式中,预配置请求是指既实例化又预配置虚拟机的请求。下游管理器组件112可以被配置成接收来自下游代理114的指示预配置是否成功的指示,且还可以被配置成通过Jabber集群120将指示预配置结果的消息发送到上游管理器130。
联合的集群110的下游代理组件114可以是位于计算节点104处的软件和/或硬件模块,且可以被配置成通过应用服务器集群120在逻辑上连接到计算节点102和下游管理器组件112。以该方式,通过应用服务器集群120可以发送和接收在下游管理器组件112和下游代理组件114之间的所有流量。下游代理组件112可以被配置成通过应用服务器集群120接收来自下游管理器组件112的预配置请求。在一些实施方式中,预配置请求可包括用以实例化虚拟机的请求。在这样的实施方式中,预配置请求是指用以既实例化又预配置虚拟机的请求。下游代理组件114可以被配置成将指示预配置是否成功的指示发送到下游管理器组件112。下游代理组件114可以被配置成,响应于来自下游管理器组件112的指令,定义虚拟机。在一些实施方式中,定义虚拟机可包括解压文件、模板等。
根据本文的各个实施方式,网络140可以是任一类型的被实施成有线网络和/或无线网络的网络(例如,局域网(LAN),广域网(WAN),虚拟网络,电信网络)。用户可以通过网络140与系统100通信。正因为如此,在一些实施方式中,利用一个或多个利用公用网络可以被发送到计算节点106的通信模式(例如,电子邮件、文本消息、即时消息、光学图像传输,利用移动装置应用程序,通过网站,利用个人计算机(PC)应用程序,互动广告,网络电视(ITV),传输控制协议(TCP)/互联网协议(IP)传输,交互式语音应答(例如,通过按键音和/或语音识别),等),用户装置145可以将数据发送到计算节点106和/或接收来自计算节点106的数据。
与本实施方式一致,系统100可以被配置成使得,利用例如XMPP消息,联合的集群110的状态信息被发送到上游管理器组件130。以该方式,上游管理器组件130可以接入联合的集群110的很多计算容量,而当联合的集群110内的状态发生变化时仅更新状态信息。这允许联合的集群110以较小的管理开销操作,从而使系统100和联合的集群110更加可扩展。而且,因为应用服务器集群120将联合的集群110看作单一的下游代理,所以联合的集群110的任一计算节点和/或关联的下游代理可以充当服务端点,例如,用以实例化虚拟机的位置。以该方式,如果联合的集群110的任一部分(例如,计算节点104和/或下游管理器114的一部分)变得不可用,则上游管理器组件130可以将预配置请求发送到另一位置,可以重新启动在另一位置处的离线虚拟机,和/或可以将虚拟机移动到另一位置。
系统100可以被配置成使得下游管理器组件112接收来自上游管理器组件130的命令和请求,但不需要被上游管理器组件130控制。在这样的实施方式中,上游管理器组件130和关联用户可以接入联合的集群110的计算容量而不完全控制联合的集群110的计算容量。以该方式,通过下游管理器组件112,联合的集群110可以被配置成通过配额、许可等限制可用于上游管理器组件130的计算容量。事实上,这里,将联合的集群110的控制与上游管理器组件130隔离可防止上游管理器组件130或者上游管理器组件130的用户独占联合的集群110的计算容量。
在本文的实施方式中,系统100可以被配置成使得,利用较低质量的链路(例如,无线区域网络(WAN)链路,或者互联网链路),计算节点106可以通过应用服务器集群120可操作地连接到联合的集群110。类似地,系统100可以被配置成使得,利用较低质量的链路,在联合的集群110内的计算节点102和计算节点104可以通过应用服务器集群120可操作地连接到联合的集群110。系统100可以被配置成使得如果通过集群120的链路在上游管理器组件130和下游管理器组件112之间或者在下游管理器组件112和下游代理组件114之间失效,则系统100可以失效切换到新的链路。在一些实施方式中,在发起新的链路之前,会经历等待时段,例如,以防止过早的失效切换。举例来说,上游管理器组件130可以检测到至下游管理器112的通信链路已经失效。上游管理器组件130可等待预定的时间量,然后可以通过Jabber集群120建立到下游管理器组件112的新的链路。这允许系统100具有改善的可靠性和故障修复。
参考图1中示出的系统100,图2示出根据一个实施方式的操作用于隔离虚拟机主机的系统的示例性方法200的流程图。在图2中,正如本文中的其他方法,由在系统内的各种实体中的一个或多个实体可以执行与方法步骤的性能有关的处理,或者在系统内的各种实体中的一个或多个实体中可以执行与方法步骤的性能有关的处理。例如,方法步骤或者与其有关的处理可以由系统中的一个或多个处理元件来执行,例如,通过联合的集群110,一个或多个计算节点(包括但不限于在联合的集群内的计算节点),一个或多个网络管理员组件150,和/或一个或多个管理组件160。根据图2中示出的示例性实施方式,示例性方法可包括联合计算节点的集群的可选的第一步骤,联合计算节点的集群包括将计算节点指定作为用于下游管理器的位置且将其余的计算节点指定作为用于下游代理的位置202。然而,例如,通过另一实体,该联合可以在下文更详细描述的处理之前发生。方法200然后可以继续进行到204且包括:在第一计算节点处,接收来自第二计算节点(例如,通过第一XMPP服务器)的用以定义虚拟机的指令。在图1的实施方式中阐述的细节之后,下游管理器组件112可以通过应用服务器集群120接收来自上游管理器组件130的用以定义虚拟机的指令。在206处,用以定义虚拟机的指令通过第二XMPP服务器从第一计算节点发送到第三计算节点。然后,下游管理器组件112可以通过集群120将用以定义虚拟机的指令发送到下游代理组件114。
图3是示出根据所公开的实施方式的处理与隔离虚拟机主机有关的信息的另一方法的流程图。如上文所述,图3的处理可以由系统100中的各种实体中的一个或多个实体来执行或者可以在系统100中的各种实体中的一个或多个实体中执行。
图3的示例性方法300可以开始于图2的步骤,即,在302处,在第一计算节点处,接收来自第二计算节点(例如,通过第一XMPP服务器)的用以定义虚拟机的指令。此外,在304处,用以定义虚拟机的指令可以通过第二XMPP服务器从第一计算节点发送到第三计算节点。另外,方法300可包括:在306处,接收来自下游代理组件的指示预配置是否成功的指示,以及在308处,将指示预配置结果的消息发送到上游管理器组件。
图4是示出根据所公开的实施方式的用于虚拟机隔离的另一方法的流程图。在图4中,正如本文的其他附图和过程,与方法步骤的性能有关的处理可以由在系统内的各种实体中的一个或多个实体来执行或者在系统内的各种实体中的一个或多个实体中执行。例如,方法步骤或者与其有关的处理可以由系统中的一个或多个处理元件来执行,例如,通过联合的集群110,一个或多个计算节点(包括但不限于在联合的集群内的计算节点),一个或多个网络管理员组件150,和/或一个或多个管理组件160。根据图4中所示的示例性实施方式,示例性方法可包括,在402处,处理与以下有关的信息:定义预配置请求和/或将预配置请求发送到上游管理器组件130。然后,在404处,处理与以下有关的信息:通过上游管理器组件130定义包括预配置请求的消息,以及通过应用服务器/Jabber集群120将消息/预配置请求发送到下游管理器组件112。接下来,该方法可包括,在406处,处理与以下有关的信息:在下游管理器组件112处,接收预配置请求和/或选择下游代理组件114以主持(host)虚拟机,以及,在408处,处理与以下有关的信息:通过应用服务器/Jabber集群120将预配置请求发送到下游代理组件114。最后,图4的示例性方法可包括,在410处,处理与以下有关的信息:通过下游代理组件114,接受预配置请求、和实例化/预配置/配置虚拟机。
图5是根据所公开的实施方式的用于虚拟机隔离的又一方法的流程图。图5的示例性方法的处理可以由如上文列举的组件和/或分布式组件来执行。根据图5中所示的示例性实施方式,另一示例性方法可包括,在502处,处理与以下有关的信息:通过下游代理组件114,将预配置结果发送到下游管理器组件112。此外,该方法可包括,在504处,处理与以下有关的信息:针对预配置结果轮询上游管理器组件130。接下来,该方法可包括,在506处,处理与以下有关的信息:通过上游管理器组件130,将轮询结果发送到例如用户145、管理员150和/或管理组件160。然后,该方法可包括,处理与以下有关的信息:通过下游管理器组件112定义预配置结果和通过应用服务器/Jabber集群120将指示预配置结果的消息发送到上游管理器组件130。最后,在510处,该方法可包括,处理与以下有关的信息:通过上游管理器组件130存储和/或更新记录。
图6示出根据所公开的实施方式的操作用于隔离虚拟机主机的系统的示例性方法600的流程图。方法600沿着箭头AA从BB流至CC。如方法600中所示,在602处,用户采用用户装置接入网络,定义预配置请求(例如,实例化,预配置,和/或配置虚拟机),以及通过HTTP或REST将预配置请求发送到上游管理器。在604处,上游管理器定义包括预配置请求的XMPP消息,以及通过Jabber集群将XMPP预配置请求发送到下游管理器。在一些实施方式中,上游管理器可验证该配置,其包括核实请求不违反任何用户许可或者限制。在606处,下游管理器然后接收XMPP预配置请求且选择下游代理来主持虚拟机,以及在608处,通过Jabber集群将预配置请求发送到下游代理。在610处,下游代理然后可以接受预配置请求以及实例化、预配置和/或配置虚拟机。在一些实施方式中,实例化、预配置和/或配置虚拟机可包括,例如,解压文件、模板等。在一些实施方式中,下游代理可拒绝预配置请求。在这样的实施方式中,下游代理可以将拒绝响应发送到下游管理器,以及下游管理器可选择替选的下游代理。在612处,下游代理将预配置结果发送到下游管理器。在614处,用户装置针对预配置结果轮询上游管理器。上游装置然后可以将轮询结果发送到用户装置。例如,在616处,轮询结果可指示预配置正在进行、已经失败、或者完成。下游管理器在618处定义预配置结果,以及在620处通过Jabber集群将指示预配置结果的消息发送到上游管理器。在622处,上游管理器存储预配置请求的结果以及更新用户记录,例如,虚拟机配额等。在624处,用户装置然后可以针对预配置结果轮询上游管理器。最后,在626处,上游装置可以将轮询结果发送到用户装置,例如,轮询结果可指示预配置正在进行、已经失败或者完成。
如在本申请中所用的,除非上下文中另外清楚地指出,否则单数形式“一个”和“该”包括多个指示对象。因此,例如,术语“一个下游代理”旨在意味着单一的下游代理、或者下游代理的组合。
本文描述的一些实施方式涉及具有计算机可读介质(也可称为处理器可读介质)的计算机存储产品,该计算机可读介质具有在其上用于执行各种用计算机实施的操作的指令或者计算机代码。介质和计算机代码(也可称为代码)可以是被设计和构建用于专用用途的介质和代码。计算机可读介质的示例包括但不限于:磁性存储介质,例如,硬盘、软盘、和磁带;光学存储介质,例如,压缩盘/数字视频盘(CD/DVD)、压缩盘只读存储器(CD-ROM)、和全息照相装置;磁光存储介质,例如,光盘;以及尤其配置成存储和执行程序代码的硬件装置,例如,专用集成电路(ASIC)、可编程的逻辑装置(PLD)、以及只读存储器(ROM)和随机存取存储器(RAM)装置。
计算机代码的示例包括但不限于,微码或者微指令,机器指令,例如,由编译器所生成的机器指令,用来生成web服务的代码,以及含有利用译码器由计算机执行的高级指令的文件。例如,可以利用Java,C++,或者其他编程语言(例如,面向对象的编程语言)和开发工具来实现实施方式。计算机代码的另外的示例包括但不限于:控制信号、加密的代码,和压缩的代码。
尽管在上文已经描述了各种实施方式,应该理解,这些实施方式仅通过示例呈现而非限制,可以做出形式和细节上的各种变化。除了互相排斥的组合之外,本文描述的设备和/或方法的任一部分可以以任一组合来组合。本文描述的实施方式可包括描述的不同实施方式的功能、组件和/或特征的各种组合和/或子组合。例如,尽管图1示出具有单一的下游代理114的单一的联合的集群110,但是在一些实施方式中,系统100可包括两个或更多个分别具有一个或多个下游代理114的联合的集群110。