针对容器的虚拟网络、热交换、热缩放与灾难恢复的制作方法

文档序号:15307372发布日期:2018-08-31 21:13阅读:142来源:国知局

本公开涉及计算机网络,更具体地,涉及云服务。



背景技术:

云计算指的是使用经由诸如互联网等网络可访问的动态可扩展计算资源。计算资源(通常称为“云”)向用户提供一个或多个服务。可以根据服务类型对这些服务进行分类,服务类型可以包括例如应用/软件、平台、基础设施、虚拟化以及服务器和数据存储器。服务类型的名称通常添加到短语“as-a-service(即服务)”的前面,使得应用/软件和基础设施的传送,作为示例,可以分别称为软件即服务(saas)和基础设施即服务(iaas)。

术语“基于云的服务”或更简单地“云服务”不仅指由云提供的服务,而且还指其中云服务客户为了由云提供的服务的在线传送而与云服务供应商联系的服务提供的形式。云服务供应商(“csp”)管理公共云、私有云或混合云,以促进向一个或多个云服务客户在线传送云服务。

云交换可以允许云交换的客户的专用网络在公共点处与云交换的任何其他客户互连,从而允许在客户的网络之间直接交换网络流量。客户可以包括网络运营商(或网络服务供应商)、企业以及由一个或多个csp提供的云服务的其他用户。云交换的一个示例使用是将一组客户与一组csp连接(interface,接口连接)。每个csp可以向客户提供对“云”计算网络的访问,其中,客户在远程服务器的网络上而不是在客户的本地服务器或个人计算机上存储、管理和处理数据。



技术实现要素:

通常,本公开描述了用于经由云交换促进在逻辑上隔离的网络处执行的容器(例如,docker容器、linux容器(lxc)容器、coreosrocket容器)的容器间通信的技术。例如,云交换可以提供使用容器执行一个或多个应用程序(例如,微服务)的企业网络与也使用容器执行一个或多个应用程序的云服务供应商网络之间的连接。通过扩展容器以向云交换注册并与云交换通信并经由云交换提供的连接相互通信,这些技术不仅可以促进容器之间的通信,而且在一些情况下,还可以为云交换提供对容器操作和部署的更多控制,以提高客户服务质量。

这些技术可以提供一个或多个优点。例如,云交换供应商可以利用这些技术来经由云交换向企业客户提供备份服务,该企业客户使用其企业网络上的容器来执行应用程序。企业客户可以从csp购买基于云的资源,用于执行企业部署到csp的基于容器的应用程序。云交换可以提供在企业网络处执行的容器与在csp处执行的容器之间的连接。另外,使用从在csp和企业网络处执行的容器获得的信息,云交换可以将在企业网络处执行的主要容器与在csp处执行的次要容器相关联,并引导容器交换通信,用于备份目的。例如,主要容器可以经由云交换周期性地检验次要容器,以确定次要容器可操作用于执行部署的应用程序。如果发生主要容器应用程序的故障、主要容器应用程序的过载或其他触发事件,则主要容器可能会将应用程序负载重定向到在csp上执行的次要容器。通过这种方式,云交换促进到云的无缝应用程序复制和备份服务。

作为另一示例,云交换供应商可以利用这些技术来经由云交换提供经由云交换的容器间通信,以对可以在相同或不同的云服务网络处执行的额外容器执行容器的热交换和热缩放,包括在容器中执行的应用程序或其他资源。热交换可能涉及在容器正在执行的同时,由云交换将应用程序、运行时间和其他资源的所有代码、数据和其他状态从一个容器复制到另一容器。因此,云交换可以将第一容器交换(或复制或传输)到第二容器,同时第一容器是热的,或者在执行期间,而不中断或干扰第一容器及其应用程序和/或或其他资源的执行。

热缩放可能涉及云交换,在容器正在执行的同时,由云交换将应用程序、运行时间和其他资源的所有代码、数据和其他状态的部分从一个容器复制到另一容器。热缩放可能涉及由容器执行的云交换编制和克隆事件,而不会影响容器正在执行的应用程序。这可能涉及云交换,在通过新容器中的容器化应用程序快速恢复执行事件之前,在将代码、数据或其他状态从第一容器复制或传输到第二容器期间,暂时停止应用程序事务。因此,云交换可以将第一容器缩放或扩展到多个额外容器,同时第一容器是热的,或者在执行期间,而不中断或干扰第一容器及其应用程序和/或或其他资源的执行。

例如,云交换可以提供使用容器执行一个或多个应用程序(例如,微服务)的企业网络与还使用容器执行一个或多个应用程序的一个或多个云服务供应商网络之间的连接。通过促使容器向云交换注册并与云交换通信,并且经由云交换提供的连接将数据从一个或多个第一容器传送到一个或多个第二容器,本公开的各种技术可以在大量容器提供资源上,包括在网络处执行的容器或具有不同底层技术基础设施的云服务上,弹性地并且自动地实现容器化应用程序和企业的其他资源的热交换和热缩放。

本公开的技术可以提供各种优点。例如,云交换供应商可以利用本公开的技术来经由云交换向企业客户提供热交换和热缩放服务。企业客户可以从云服务供应商(“csp”)购买基于云的资源,用于执行企业部署到csp的基于容器的应用程序。云交换可以提供在一个或多个csp处执行的容器与可能在企业网络处执行的容器之间的连接,并且可以在横跨可能大型且可能异构阵列的容器提供资源上实现容器的自动热交换和热缩放。被配置为执行本公开的热容器交换和热容器缩放技术的云交换因此可以扩展云服务客户可用的容器资源的范围和灵活性,而不会对企业客户施加容器管理负担。

本公开的热容器交换和热容器缩放技术还可以有助于由云交换执行的诸如自动备份等额外服务和功能,以及扩展缩放以处理应用需求的突然增加。例如,在第一容器或其他触发事件发生故障的情况下,云交换可以将第一容器热交换第二容器,可能是从企业网络上的第一容器到csp上的第二容器或从第一csp上的第一容器到第二csp上的第二容器,并且将第一容器的应用程序加载重定向到第二容器。作为另一示例,在第一容器或其他触发事件过载的情况下,云交换可以在一个或多个额外容器上热缩第一容器,并且在一个或多个额外容器上引导第一容器的一些应用程序负载。通过这些方式,云交换促进到云的无缝应用程序复制和备份服务。另外,在一些示例中,该技术可以允许使用云服务的企业在云服务供应商的预定或非预定停机期间避免应用中断。

作为另一示例,云交换供应商可以利用这些技术来经由云交换向企业客户提供灾难恢复或其他复制服务,该企业客户在其企业网络上使用容器来执行应用程序。因为在不同csp上执行的容器彼此隔离,所以无法交换数据。云交换可以提供不同csp之间的连接,以实现在不同csp处执行的各个容器之间的容器间通信。如果容器发生故障(例如,遇到连接问题或软件错误),则云交换可以将客户从在第一csp上执行的主要容器切换到在第二csp上执行的次要容器,以便客户可以继续访问该应用程序。在另一示例中,csp本身可能希望管理网络资源的使用,并且选择性地提供或取消提供容器,以管理网络上的负载。在另一示例中,例如,客户可能希望在他订阅的两个云服务之间共享文件或信息,这可能需要云交换将信息从第一云中的第一容器内的第一应用程序传送到第二云中的第二容器内的第二应用程序。

因此,云交换可以协调从故障的或中断的云服务到备份云服务的容器上的自动基于云的灾难恢复(dr)。在各种示例中,云交换的编制引擎包括灾难恢复(dr)管理器,其检测云服务向云交换供应商的企业客户的服务传送中断的指示,并开始复制和保存来自故障云服务的代码、数据和其他状态。dr管理器在云服务供应商的容器中提供新dr基础设施的层,dr管理器已选择该云服务供应商托管dr基础设施,作为故障云服务的备份,从而至少暂时向企业提供备用云服务。dr基础设施可以包括与云服务的不同功能对应的多个层。这种dr基础设施层可以包括存储层、计算层、网络层和/或接口层。

在一些示例中,备份云服务中的dr基础设施可能不能立即用于处理来自企业客户的服务请求。为了避免在提供dr基础设施时丢失服务请求,云交换的dr管理器可以提供dr基础设施接口层,以暂时拦截和缓冲由企业发送到故障云服务的服务请求。云交换网络平台可以被配置为在该暂时缓冲周期内将来自企业客户的服务请求引导到云交换的dr基础设施接口层。

dr管理器可以将复制的代码、数据和其他状态推送到备份云服务的容器中的新dr基础设施。一旦dr基础设施在备份云服务中完全提供并因此能够处理服务请求,dr基础设施接口层可以将缓冲的服务请求发送到新dr基础设施,如由备份云服务中的容器执行的,以进行处理。在一些情况下,云交换可以在备份云服务中的故障云服务和新dr基础设施之间提供容器间通信。由涉及故障云服务和所选择的备用云服务的云交换编制引擎执行和编制的整套dr活动可以称为dr过程。故障云服务和备用云服务可以由共同位于数据中心内的相应云服务供应商提供,以经由云交换与企业互连并向企业提供云服务。

在一些情况下,dr管理器可以锁定或暂停故障云服务的一个或多个执行容器的操作,并从故障云服务的容器复制用于应用程序、微服务、运行时间和其他资源的代码、数据和其他状态。暂停第一云服务的一个或多个容器的操作可以包括锁定存储在第一云服务处的内存数据存储器中的状态。因此,云交换处的dr管理器可以在容器处于执行过程中时复制容器,包括在执行过程中复制和保留当前操作和指令,而不会干扰容器及其应用程序和/或其他资源的执行。

然后,一旦在备份云服务中提供了dr基础设施,dr管理器就可以将从故障云服务的容器复制的代码和状态传送并复制到在所选择的备份云服务处的新dr基础设施层的容器。因此,云交换的dr管理器可以克隆由故障云服务处的容器执行的过程、指令和其他事件,从备份云服务的容器中编制故障云服务的容器中代码和状态再现,并从备份云服务的容器中继续执行故障云服务的这些过程、指令和其他事件,在执行的过程中包括这些过程、指令和其他事件从该故障云服务中停止。

本公开的技术可以提供各种优点。例如,云交换供应商可以利用本公开的技术来经由云交换向企业客户提供容器化的灾难恢复服务。企业客户可以从一个或多个云服务供应商(“csp”)购买基于云的资源,用于由企业执行部署到由csp操作的第一云服务的基于容器的应用程序。云交换可以在云交换的企业客户和在云服务上执行的容器之间提供连接,无缝地实现灾难恢复响应和灾难恢复基础设施创建和操作,作为企业与云交换供应商签约的云计算服务的一部分。云交换可以保持对云服务提供的功能中断的任何指示保持警觉,并且如果云交换检测到合格中断,则可以保持准备好干预并发起一组dr过程,如先前作为部分dr服务来用户定义的那样。

在检测到合格中断的情况下,云交换可以实现dr过程,从而将代码和状态从故障云服务的容器复制到所选择的备份云服务的容器,可能横跨多个异构云服务中的大型并且可能是异构的阵列的容器提供资源。一旦来自故障云服务的容器的复制版本在备份云服务上启动并运行,云交换还可以将云服务流量(例如,应用流)重定向到故障云服务上的复制容器,无需改变提供给备份云服务的容器化资源的统一资源标识符(uri)。被配置为执行本公开的灾难恢复技术的云交换因此可以扩展云服务客户可用的容器资源的范围和灵活性,而不会对云服务客户施加容器管理和灾难恢复负担。以这些方式,本公开的云交换促进了云中的无缝灾难恢复。

在一个示例中,本公开描述了一种方法,包括:由容器经由云交换的互连平台公开的应用程序编程接口向云交换发送容器的容器注册数据,所述容器注册数据包括执行容器的主机的网络地址和容器的容器标识符。

在另一示例中,本公开描述了一种方法,包括:由云交换从在耦接到云交换的专用网络处执行的容器接收容器的容器注册数据,所述容器注册数据包括执行容器的主机的网络地址和容器的容器标识符;并且由云交换存储所述容器注册数据。

在另一示例中,本公开描述了一种计算装置,包括:至少一个处理器,其可操作地耦接到存储器;内核,其被配置为由至少一个处理器执行;以及容器,其被配置为由内核执行,其中,容器包括网络模块,其被配置为经由云交换的互连平台公开的应用程序编程接口将容器注册数据输出到云交换,所述容器注册数据包括执行容器的主机的网络地址和容器的容器标识符。

在另一示例中,本公开描述了一种云交换,包括:网络;以及互连平台,其被配置为将网络配置为互连多个专用网络,其中,所述云交换被配置为从在多个专用网络中的专用网络处执行的容器中经由互连平台接收容器的容器注册数据,所述容器注册数据包括执行容器的主机的网络地址和容器的容器标识符。

在另一示例中,本公开描述了一种方法,包括:由耦接到云交换的多个专用网络的第一专用网络的第一容器向云交换的路由器,传输第一数据通信,以请求耦接到云交换的多个专用网络中的第二专用网络的第二容器的健康的指示;并且由第一容器从路由器中接收由耦接到云交换的多个专用网络中的第二专用网络的第二容器发起的第二数据通信,所述第二数据通信指示所述第二容器的健康。

在另一示例中,本公开描述了一种方法,包括:利用云交换的至少一个处理器,存储指示第一专用网络的第一容器与第二专用网络的第二容器的关联的数据,其中,所述第一专用网络和所述第二专用网络耦接到云交换,以经由云交换发送和接收数据分组;利用云交换的至少一个处理器,基于所述关联,将第一容器的状态发送给第二容器。

在另一示例中,本公开描述了一种计算系统,包括:至少一个存储器装置;以及包括在云交换中的至少一个处理器,其可操作地耦接到所述至少一个存储器装置,并且被配置为执行指令,以:存储指示第一专用网络的第一容器与第二专用网络的第二容器的关联的数据,其中,所述第一专用网络和所述第二专用网络耦接到云交换,以经由云交换发送和接收数据分组;并基于该关联,将第一容器的状态发送到第二容器。

在另一示例中,本公开描述了一种计算机可读存储介质,包括指令,用于促使云交换的至少一个可编程处理器:存储指示第一专用网络的第一容器与第二专用网络的第二容器的关联的数据,其中,所述第一专用网络和所述第二专用网络耦接到云交换,以经由云交换发送和接收数据分组;基于所述关联,将第一容器的状态发送到第二容器;由云交换接收来自企业网络的云服务流量;并且由云交换将云服务流量从第一容器重定向到第二容器。

在另一示例中,本公开描述了一种方法,包括:利用云交换,检测由耦接到云交换以经由云交换发送和接收数据分组的第一云服务供应商网络提供的第一云服务中断的指示。所述方法还包括利用云交换,响应于检测到第一云服务中断的指示,在由耦接到云交换以经由云交换发送和接收数据分组的第二云服务供应商网络提供的第二云服务的容器中,提供灾难恢复基础设施层。所述方法还包括利用云交换,从第一云服务的容器获得代码和状态。所述方法还包括利用云交换,将代码和状态传送到第二云服务的容器中的灾难恢复基础设施层。

在另一示例中,本公开描述了一种计算装置,包括:至少一个处理器,其可操作地耦接到存储器;用于云交换的编制引擎,所述编制引擎被配置为由所述至少一个处理器执行。所述编制引擎被配置为检测由耦接到云交换以经由云交换发送和接收数据分组的第一云服务供应商网络提供的第一云服务中断的指示。所述编制引擎还被配置为响应于检测到第一云服务中断的指示,提供由耦接到云交换以经由云交换发送和接收数据分组的第二云服务供应商网络提供的第二云服务的容器中的灾难恢复基础设施层。所述编制引擎还被配置为从第一云服务的容器中获得代码和状态。所述编制引擎还被配置为将代码和状态传送给第二云服务的容器中的灾难恢复基础设施层。

在另一示例中,本公开描述了一种计算机可读介质,包括指令,用于促使云交换的至少一个可编程处理器检测由耦接到云交换以经由云交换发送和接收数据分组的第一云服务供应商网络提供的第一云服务中断的指示。这些指令还促使云交换的至少一个可编程处理器响应于检测到第一云服务中断的指示,提供由耦接到云交换以经由云交换发送和接收数据分组的第二云服务供应商网络提供的第二云服务的容器中的灾难恢复基础设施层。这些指令还促使云交换的至少一个可编程处理器从第一云服务的容器中获得代码和状态。这些指令还促使云交换的至少一个可编程处理器将代码和状态传送给第二云服务的容器中的灾难恢复基础设施层。

在附图和以下描述中阐述了本公开的技术的一个或多个示例的细节。根据说明书和附图以及权利要求,本公开的技术的其他特征、目的和优点将是显而易见的。

附图说明

图1是示出根据本公开的示例技术的示例网络的方框图。

图2是示出根据本公开的示例技术的示例网络的方框图。

图3是示出根据本公开的示例技术的示例网络的方框图。

图4是示出根据本公开的示例技术的示例路由器的方框图。

图5是示出根据本公开的示例技术的示例专用网络的方框图。

图6是示出根据本公开的示例技术的示例容器的方框图。

图7是示出根据本公开中描述的技术的具有包括热交换管理器和dr管理器的编制引擎的云交换的方框图。

图8是示出根据本公开的示例技术的示例方法的流程图。

图9是示出根据本公开的技术的用于确定容器的健康的示例方法的流程图。

图10是示出用于传输容器的容器注册数据的示例方法800的流程图。

图11是示出根据本公开的示例技术的示例方法的流程图。

图12是示出根据本公开的示例技术的示例方法的流程图。

图13是示出根据本公开的一种或多种技术操作的计算装置的一个示例的方框图。

具体实施方式

概括而言,本公开描述了用于通过基于云的服务交换或“云交换”来协调容器(例如,docker容器、lxc容器、coreosrocket容器)之间的容器间通信的技术,用于经由云交换能够对在逻辑上隔离的网络处执行的容器实现容器间通信,并且用于提供由这种容器间虚拟网络实现的服务,例如,容器的热交换和热缩放以及跨不同网络中的容器的灾难恢复。例如,描述了以下技术,该技术用于创建虚拟专用网络,以允许连接到云交换的第一csp内的虚拟化容器,与连接到云交换的第二csp内的虚拟化容器透明地通信。

在一些示例中,云交换可以将在初始云服务处的第一容器的第一容器的状态(包括可执行代码)以及在第一容器上执行的应用程序、微服务、运行时间和其他资源中涉及的其他状态(包括在执行中间的资源状态)传输到第二容器,同时第一容器的应用程序正在执行,以便应用程序在第二容器上继续执行。第一容器的状态的这种传输可以涉及将容器化的代码和数据交换到不同的容器,或者涉及将至少一些容器化的代码和数据缩放到额外容器,以弹性地增加专用于容器化应用程序的处理能力。这样将容器的代码、数据和其他状态交换或缩放到一个或多个其他容器并在新的一个或多个容器中继续执行代码、处理或服务,可以分别称为“热交换”和“热缩放”。在涉及灾难恢复处理的其他示例中,云交换可以将执行中间的第一容器的代码、数据和其他状态传输到第二云服务处的新提供的灾难恢复(“dr”)基础设施的第二容器。

云交换的编制引擎还可以包括灾难恢复管理器(“dr管理器”),其检测提供给云交换的企业客户的云服务中的合格中断的指示,复制和保存来自提供云服务的云服务供应商网络的数据以及其他状态,选择第二云服务来托管dr基础设施,在所选择的第二云服务中的容器中提供新dr基础设施的层,并提供dr基础设施接口层,以接收并且缓冲来自企业客户网络的服务请求,直到在所选择的第二云服务处的新提供的dr基础设施层的容器可操作为处理服务请求。

在不同的实现方式中,容器化应用程序可以热交换或热缩放到位于相同云服务的相同子网内的不同容器、相同云服务的不同子网中的不同容器、或者完全不同的云服务。在热交换或热缩放横跨在可以具有不同的云服务基础设施技术并且可以是专用云或公共云服务的不同云服务上的情况下,本公开的技术可以在内部管理对应用程序、运行时间和在不同云基础设施技术栈之间的其他资源的代码、数据和状态进行翻译的所有方面。初始云服务和所选择的第二云服务可以由不同的云服务供应商提供。初始云服务供应商网络和所选择的第二云服务供应商网络可以共同位于数据中心(或“主机托管设施”)中,该数据中心由云交换供应商部署并且包括用于互连初始云服务供应商网络和企业客户网络以及选择的第二云服务供应商网络和企业客户网络的云交换。因此,本公开的技术可以确保容器化的应用程序跨不同的云服务进行热交换或热缩放,或者平稳地并且在云交换自动管理和兼容不同云服务之间的所有技术基础设施差异的情况下从初始云服务复制到在第二云服务处的灾难恢复基础设施,好像潜在异构底层云服务是统一的容器提供资源,同时还为客户或其他用户提供热交换或热缩放处理或dr处理的透明性。

图1是示出根据本公开的示例技术的示例系统的方框图。云交换可以促进用于从一个或多个云服务供应商到一个或多个云服务客户的云服务传送的虚拟连接,包括诸如热交换和热缩放能力和/或灾难恢复能力等服务。云交换可以使云客户(例如,云交换供应商的企业客户)能够绕过公共互联网,以直接连接到云服务供应商(“csp”),从而提高性能,降低成本,提高连接的安全性和隐私性,并将云计算用于额外应用程序。通过这种方式,例如,企业、网络运营商和saas客户可以将云服务与其内部应用程序集成,好像这些服务是他们自己的数据中心网络的一部分或以其他方式直接耦接到他们自己的数据中心网络。云交换包括编制引擎,其可以执行容器以及在容器中执行的应用程序的热交换和热缩放,并且可以执行灾难恢复功能,灾难恢复功能包括将容器和在容器中执行的应用程序从受影响的云服务复制到所选择的第二云服务。

云交换102可以在网络环境100中将诸如企业116等云服务客户与由csp网络122a-122b(在下文中,称为“csp122”)提供的多个云服务124a-124b(统称为“云服务124”)连接。作为云交换的一个示例,equinix(易困尼克斯)公司提供的equinixcloudexchange(ecx,易困尼克斯云交换)可以将多个云服务客户(例如,企业、组织和个人)连接到多个csp(例如,microsoftazure和amazonwebservices)。云交换102可以提供用于从多个csp122到企业116的云服务传送的一个或多个互连以及多个csp122之间的互连。互连可以表示各种示例中的物理交叉连接或虚拟电路。可以在美国临时申请no.62/072,976、美国专利申请no.14/927,306和美国专利申请no.15/099,407中找到经由云交换的互连网络的额外细节,其全部内容通过引用结合于此。云交换102包括:编制引擎106,编制引擎可以配置有能够执行热交换和/或热缩放处理的热交换管理器;和/或灾难恢复(dr)管理器,其能够执行dr处理,如下面进一步描述的。

csp可以向云服务客户提供虚拟机管理程序(vm),以访问云网络。vm模拟虚拟硬件。换言之,每个vm都提供虚拟化操作系统和应用程序套件,以供客户访问。由于vm是虚拟化的,所以云服务客户及其应用程序与主机的硬件和其他客户的虚拟机隔离。这允许csp提供对云服务客户是安全且稳固的云服务。例如,csp可以在单个网络上实现数十或数百个vm,以供一组客户访问。然而,由于每个vm虚拟化完整的操作系统,所以可能会消耗大量网络资源。

在许多应用程序中对虚拟机的更有效的替代方案是虚拟化容器,例如,由开源docker容器应用程序、lxc容器或coreosrocket容器提供的容器。与vm一样,每个容器都是虚拟化的,并且可以与主机和其他容器保持隔离。然而,与vm不同,每个容器可以省略完整的单个操作系统,而是仅提供操作系统内核接口、应用程序套件和专用库。每个容器可以由主机作为隔离的用户空间实例来执行,并且可以与在主机上执行的其他容器共享操作系统和公共库。换言之,每个容器可以是共享在主机上执行的操作系统的多个用户空间实例中的用户空间实例。因此,与实现vm的云网络相比,使用容器的云网络可需要显着更少的处理功率、存储和网络资源。如这里所使用的,容器也可以称为虚拟化引擎、虚拟专用服务器、筒仓(silo,竖井)或监狱(jail)。

在一些示例中,容器由其主机内核管理,以允许限制和优先化资源(cpu、存储器、模块i/o、网络等),而无需启动任何虚拟机,在一些情况下,使用命名空间隔离功能,该功能允许完全隔离应用程序(例如,给定容器)的操作环境视图,包括过程树、网络、用户标识符和安装的文件系统。在一些示例中,可以根据linux容器(lxc)来部署容器,linux容器,是一种用于使用单个linux内核在控制主机上运行多个隔离的linux系统(容器)的操作系统级虚拟化方法。lxc是一种用于在单个控制主机(lxc主机)上运行多个隔离的linux系统(容器)的操作系统级虚拟化方法。lxc不使用虚拟机。相反,lxc使用具有其自己的cpu、存储器、模块i/o、网络和/或其他资源空间的虚拟环境。lxc资源控制机制由lxc主机上linux内核中的命名空间和cgroup提供。在docs.docker.com/engine/understanding-docker上可获得的并且最后一次访问时间为2016年7月9日的docker公司的“dockeroverview”中;以及在ncc集团,2016年4月20日,aarongrattafiori的“understandingandhardeninglinuxcontainers”中,找到有关容器的额外信息;这些文献的全部内容均通过引用结合于此。

企业116部署企业网络118,例如,企业内部部署数据中心或专用云,以执行为由企业116所部署的应用程序提供操作环境的容器125a、125b。在一些情况下,由容器125a、125b执行的应用程序可以是微服务。通常,微服务均实现一组集中且不同的特征或功能,并且微服务符合(或可用于)以下架构模式,其中,可以独立地开发和部署数十或数百个微服务。微服务可以围绕业务能力来组织,并且可以为业务能力实现软件的“广义栈(broad-stack)”,包括持久存储和任何外部协作。各种微服务公开了接口,这些接口使微服务能够相互调用,以交换数据并执行各组功能,以便创建一个或多个整体应用程序。每个微服务可以遵循明确定义的应用程序编程接口(api),并且可以通过调用微服务的api来编制。每个微服务独立地执行并且公开用于相对于其他微服务进行的异步调用的接口。

经由云交换102,csp122a-122b可以分别向诸如企业116等云服务客户提供可用的云服务124a-124b,从而为企业116的应用程序提供执行环境。编制引擎106可以提供企业116和云服务124a之间的虚拟电路127a,如下面进一步描述的。在所示的示例中,每个云服务124可以托管或包括多个容器126,每个容器126为由企业116部署的至少一个应用程序(例如,微服务)提供执行环境。例如,云服务124a可以包括容器126a、126b、...126n,这些容器可以表示在云服务124a的计算资源上执行的任何数量的容器(在设计的约束内),并且云服务124b可以包括容器129a、129b、......129n,这些容器同样可以表示在云服务124b的计算资源上执行的任意数量的容器。在容器125上执行的应用程序可以经由对云交换102设置的虚拟电路127a和/或如下所述的其他虚拟电路127b、127c(“虚拟电路127”)与在容器126、129上执行的应用程序通信,以将企业116与云服务124互连。云交换102可以在云交换102的网络平台108中设置虚拟电路127,以在第一云服务124a的容器126和第二云服务124b的容器129之间传输数据分组。云交换102(或其组成系统,例如,热交换管理器140或灾难恢复(dr)管理器141,如下所述)可以经由虚拟电路127将代码和状态从第一云服务124a的容器126传送到第二云服务124b的dr基础设施层144的容器129。

此外,云服务可以将多个容器分组到网络子网中,用于组织和网络寻址目的。在图1的示例中,云服务124a可以将代表性容器126a和126b(例如)分组到子网128a中,而云服务124b可以将容器129a和129b(例如)分组到子网128b中。子网128a的容器126a和126b可以在相同或不同的主机(例如,服务器、计算机硬件单元或其他计算资源)上执行,所述一个或多个主机可由作为子网128a的成员的网络地址寻址。在一个示例中,云服务可以将多个容器分组到多个子网中,以将服务组织到不同的子网中。在另一示例中,云服务可以将多个容器分组到多个子网中,以在云服务的客户之间划分容器。

云交换102包括互连平台103,互连平台103可以公开大量软件接口,在本文中也称为和描述为应用程序编程接口(api)105,这些接口可以允许以可编程的方式访问互连平台的能力和资产。api105可以提供可扩展框架,可扩展框架允许与云交换102的客户和合作伙伴相关联的软件开发者构建访问互连平台103的软件应用程序,该互连平台103自动管理与参与互连平台103的多个云服务供应商122的互连,以向云交换供应商102的客户提供在本文中描述的互连和其他服务。来自网络服务供应商、云服务供应商、管理服务供应商和其他企业的开发者可以使用由互连平台103公开并由api105定义的软件接口来构建用于与互连平台103无缝交互的自定义应用程序和框架,以促进将云服务从云服务供应商122传送(交付)到云服务客户。

由api105定义的这些软件接口使机器到机器通信能够近实时设置和修改互连,并有助于如本文所述的容器间通信和容器控制。由api105定义的软件接口还可以减少或消除对整个互连设置和管理过程的人工交互的需要。以这种方式,软件接口提供一种使用和管理在连接到云交换102的多个不同云服务或网络处执行的容器的自动且无缝的方式。

企业116可以将企业116的多个企业工作站120a-120b(统称为“企业工作站120”)连接到企业116外部的网络。企业116可以将企业工作站120连接到与互联网114连接的网站,例如,网站门户112,其可以为企业工作站120提供对csp122之一的网站的访问。此外,企业116可以将企业工作站120连接到云交换102。如本文所使用的,输入到企业116、云交换102或者csp122的动作可以分别表示由企业116、云交换102或csp122引导的人工操作员或自动代理。企业网络118、云服务供应商122网络和云交换102中的每一个可以位于数据中心(或“主机托管设施”或“互连设施”)内。

企业工作站120可以访问客户门户104,以登录到云交换102。客户门户104可以表示经由网站向客户公开并且可以使用浏览器访问的基于网络的应用程序。客户可以使用客户门户104来报名参加或注册云服务。在客户经由客户门户104向云交换102注册之后,客户可以接收服务许可标识符(例如,注册密钥)。服务许可标识符可以识别客户、客户的类型(例如,企业或个人)、客户可以访问的服务(例如,由例如microsoftazure或amazonwebservices提供的公共云服务)和服务参数,例如,根据例如云服务供应商资源(例如,带宽、处理单位)购买的服务量。经由客户门户104,例如,企业116的代理可以从云服务供应商接收服务许可标识符并向云交换102注册服务许可标识符,和/或使用客户门户104请求或配置热交换、热缩放和/或灾难恢复服务,如下面进一步详细描述的。

在一些示例中,互连平台103可以符合基于微服务的应用架构。在图1的示例中,互连平台103包括内部编制引擎106,内部编制引擎组织、引导和集成底层微服务以及其他软件和网络子系统,用于管理由云交换102提供的各种服务。编制引擎106可以包括容器热交换管理器140和/或灾难恢复(dr)管理器141,如下面进一步描述的。

用于云交换102的互连平台103的编制引擎106可以促进在企业116与任何csp122之间以及csp122、云服务客户、网络服务供应商、云交换管理员或云交换的其他客户或用户之间动态创建专用连接。编制引擎106可以从客户门户104接收在注册时从用户获得的注册信息和服务许可标识符。编制框架可以使用该信息来协调通过工作流编制的异构的一组不相关的api、微服务、web服务、套接口、远程方法调用(rmi)以及类似实体和服务之间的交互,以无缝地创建企业与多个云服务供应商之间的专用连接(例如,虚拟电路)。编制引擎106可以负责处理整个请求,可以从诸如网络门户和api等各种通道接收该请求。在美国临时申请no.62/072,976、美国临时申请no.62/286,259和美国专利申请no.14/927,306中记载了用于设计和实现编制引擎的具体技术,其全部内容通过引用结合于此。

网络平台108可以包括多个路由器和交换机110a-110n(统称为“路由器110”),其中,“n”表示任意数量的路由器和交换机。网络平台108可以使用路由器110在企业116和云服务124a-124b之间传输数据。编制引擎106可以管理网络平台108的操作,以促进动态创建企业116和云服务124a-124b之间的专用连接。在图1的示例中,编制引擎106可以例如在企业116和csp122a网络之间,以基于虚拟局域网(vlan)或基于互联网协议-虚拟专用网(ip-vpn)的连接形式提供虚拟电路127a,以允许数据在企业116和csp122a之间的传输。例如,虚拟电路127a可以表示l2连接或端到端l3连接。虚拟电路127a可以包括在云服务124a和在来自云服务124a网络的物理交叉连接上操作的网络平台108之间的vlan以及网络平台108的端口。在一些情况下,编制引擎106可以提供热交换虚拟电路127b(如图2所示并在下面描述),以互连csp122a和122b的相应网络。在一些情况下,编制引擎106可以提供灾难恢复(dr)虚拟电路127c(在图3中示出并在下面描述),以互连csp122a和122b的相应网络。因此,根据本公开的示例技术,编制引擎106可以用于促进在企业116与云服务供应商122的网络之间的安全、快速和有效的连接和服务。

根据本公开的示例技术,云交换102可以促进在连接到云交换102的不同网络处执行的两个容器之间的通信。例如,云交换102可以促进在企业116处执行的容器125a与在提供云服务124a的csp122a的网络处执行的容器126a之间的通信。云交换102还可以促进两个不同云服务的容器之间,例如,在提供云服务124a的csp122a的网络处执行的容器126和在提供云服务124b的csp122b的网络处执行的容器126之间的容器间通信,包括用于热交换和热缩放的容器间通信,如下面进一步描述的。促进不同云服务之间的通信可以包括提供热交换虚拟电路127b以互连csp122a和122b的相应网络的编制引擎106,包括用于热交换和热缩放服务以及用于dr服务,如下面分别参考2和3进一步描述的。

图2是示出根据本公开的示例技术的示例系统的方框图。与图1中一样,云交换102可以促进用于从多个云服务供应商到一个或多个云服务客户的具有热交换和热缩放能力的云服务传送的虚拟连接。云交换102包括编制引擎106,编制引擎执行容器以及在容器中执行的应用程序的热交换和热缩放,特别是在不同csp(例如,csp122a、122b)的容器之间。编制引擎106可以使云交换102能够操作与csp122a、122b的连接,例如,vlan129a、129b。因此,编制引擎106可以在csp122a、122b之间实现高带宽热交换虚拟电路127b。编制引擎106可以使用热交换虚拟电路127b来促进csp122a和122b的容器之间的热交换和热缩放。

为了实现csp122a和122b的容器之间的通信,云交换102可以从相应的csp122接收针对每个容器的用于识别容器的容器标识符以及用于识别执行容器的主机的网络地址。在一个示例中,csp122a中的容器126a可以生成将由云交换102引导到csp122b中的容器126d的数据通信,使得数据通信具有特定的容器标识符并且由云服务124b内的特定主机执行。该数据通信可以由云服务124a作为第2层和/或第3层(l2/l3)流量转发到网络平台108的路由器110。编制引擎106可以协调网络平台108的操作,使得路由器110可以将数据通信转发到云服务124b,使得将数据通信引导到执行云服务124b内的容器126d的主机。在一些示例中,云交换102可以通过改变不同csp122a、122b中的云交换地址和容器主机地址之间的映射来将流量从csp122a中的容器126a切换到csp122b中的容器129a。

各种csp124的容器126可以经由api105向编制引擎106注册,以提供相应的容器注册数据,包括例如主机网络地址数据和容器标识数据。所选择的容器的容器注册数据(包括容器的主机网络地址和容器的容器标识符)也可以称为注册句柄(registrationhandle)。使用容器注册数据,编制引擎106可以促进不同csp124的容器126之间的容器间通信和热交换/热缩放能力以及可能的其他功能,例如,备份服务、灾难恢复服务和/或其他服务。

例如,编制引擎106可以将从csp122a中的容器126a获得的容器注册句柄发送到csp122b中的容器129a。编制引擎106与部署到云服务124a的容器126a一起,以这种方式扩展从csp122a中的容器126a到csp122b中的容器129a的热交换虚拟电路127b上的网络连接性,并且可以使csp122a能够使用容器126a的容器注册句柄,以经由虚拟电路127b直接寻址并向csp122b的容器129a发送数据。同样,编制引擎106可以使用容器126a的容器注册句柄来经由虚拟电路127b直接寻址并将数据自csp122a中的容器126a发送到csp122b中的容器129a。在一些示例中,在热交换或热缩放过程,编制引擎106可以指示与第一容器126a相关联的第二容器129a的uri,以实现将寻址到第一容器126a的所有应用流量、数据或其他交互(在热交换中)或者至少一些应用流量、数据或其他交互(在热缩放中)重定向到第二容器129a。

使用这种扩展网络连接,在一些情况下,云交换102可以促进使用csp122a、122b中的容器126所执行的应用程序的热交换和热缩放功能。例如,编制引擎106的热交换管理器140可以将云服务124a的第一容器126a与不同云服务124b的第二容器129a相关联,并使第一容器126a将其全部或部分应用程序代码、数据以及状态传送给第二csp122b中的第二容器129a,为了热交换或热缩放的目的。编制引擎106的热交换管理器140可以经由云交换102将第二csp122b中的第二容器129a的容器注册句柄与第一csp122a中的第一容器126a关联或对其登记,使得寻址到csp122a中的第一容器126a的交互可以传送到csp122b中的第二容器129a。在一些示例中,热交换管理器140可以首先识别用于执行在第一csp122a中的容器126a的热交换或热缩放的标准的需求、潜在益处或履行,然后,在进行容器126a的热交换或热缩放之前,可以将不同的csp122b中的一个或多个新容器(可能包括第二容器129a)的创建引导到第二csp122b中的一个或多个新容器。一旦第二csp122b中的一个或多个新容器“展开”或启动并准备开始运行,云交换106可以从第一csp122a中的容器126a检索并暂时存储代码、数据和其他状态中的一些或全部,并且将来自容器126a的代码、数据和其他状态传送到第二csp122b中的一个或多个新容器(例如,容器129a)。

因此,编制引擎106的热交换管理器140可以将应用程序、运行时间数据和其他状态从第一csp122a中的第一容器126a交换到第二csp122b中的第二容器129a,或者跨在第一容器126a和第二csp122b中的容器129a以及第二csp122b中的可能额外容器(例如,容器129b、129n)上,缩放来自第一csp122a中的第一容器126a的应用程序、运行时间数据和其他状态。编制引擎106的热交换管理器140因此可以将应用程序、运行时间数据和其他状态从第一csp122a中的第一容器126a交换或缩放到第二csp122b中的一个或多个容器126,同时应用程序继续运行而不间断并且由编制引擎106的容器热交换管理器140执行交换或缩放的必要功能。因此,编制引擎106可以在不同的csp上热交换和/或热缩放容器化应用程序,以可能减少客户对交换和/或缩放的管理。

在一些实例中,诸如企业116或其代理等客户或其他用户可以经由客户门户104建立热交换和热缩放配置设置或时间表(schedule)。编制引擎106的热交换管理器140然后可以根据客户选择的(例如,经由客户门户104选择的)配置设置或时间表执行热交换或热缩放。在一些示例中,编制引擎106可以检测到csp122a处的容器126a已经发生故障(例如,由于超时或者软件错误),客户选择的配置设置或默认设置可以指示第一csp中的故障容器热交换到第二csp中的新容器。一些配置设置或默认设置可以进一步包括用于评估一个csp中的多个容器故障的标准以及检测第一csp中的多个故障的迹象触发从第一csp中的容器热交换或热缩放到不同csp中的容器的标准。在这些示例中,编制引擎106的热交换管理器140然后可以根据客户选择的配置设置或默认设置将第一csp中的故障容器125a或多个故障容器热交换到第二csp122b处的一个或多个新容器129a-n。

在一些示例中,热交换管理器140可以首先引导在第二csp122b中创建一个或多个新容器129a-n,以便能够将第一csp122a中的一个或多个容器126a-c热交换到第二csp122b中的一个或多个新容器129a-n。然后,编制引擎106可以将应用流量从第一csp122a的容器重定向到第二csp122b中的热交换或热缩放的对应容器,例如,从csp122a中的容器126a到csp122b中的容器129a。例如,响应于编制引擎106确定csp122a中容器126a发生故障,或者已经变得过载,或者已经满足指示容器126a将受益于热交换或热缩放到新容器的一些其他配置的标准,编制引擎106可以将接收csp122a的应用请求的api网关配置为在虚拟电路127b上将应用流量从容器126a重定向到csp122b中的容器129a。

在其他示例中,编制引擎106可以检测到csp122a处的容器126a由于增加的应用流量水平而过载,并且客户选择的配置设置或默认设置可以指示第一csp中的过载的容器将被热缩放到第二csp中的新容器。在这些示例中,编制引擎106的热交换管理器140然后可以根据客户选择的配置设置或默认设置,引导编制引擎106将csp122a的过载容器126a热缩放到不同csp122b中的一个或多个额外容器,例如,新容器129a。在一些示例中,热交换管理器140可以首先引导在第二csp122b处创建包括容器129a的一个或多个新容器,以能够将csp122a中的容器126a热缩放到csp122b中的新容器。然后,编制引擎106可以将至少一些应用流量从容器126a重定向到csp122b中的包括容器129a的一个或多个新容器。

在一些情况下,热交换管理器140可以例如通过存储事务(transaction)或状态数据来将容器126a的状态复制并保持到容器热交换数据存储器。作为热交换或热缩放功能的一部分,热交换管理器140可以将第一csp122a的第一容器126a的状态推送并复制到第二csp122b的第二容器,例如,容器129a,使得例如第二csp122b的第二容器129a可以接管并无缝地转换执行来自第一csp122a的第一容器126a的应用程序。在一些示例中,编制引擎106可以在第一csp122a和第二csp122b之间动态地创建虚拟电路127b,以实现由第一csp122a执行的容器126a-n与由第二csp122b执行的容器129a-n之间的通信。尽管被示出为单独的虚拟电路127b,但虚拟电路127b可以表示底层虚拟电路元件(例如,虚拟局域网(vlan)129a、129b或共享的互联网协议-虚拟专用网络(ip-vpn))的扩展,从而使得由第一csp122a执行的容器126a-c能够与由第二csp122b执行的容器129a-n以及编制引擎106交换数据。

在一些示例中,容器热交换管理器140从在云服务网络124b中执行的主要容器129a接收状态。容器热交换管理器140可以使用该状态来将容器129a提供的操作环境(例如,容器图像)、容器129a执行的一个或多个应用程序、容器129a正在执行的事务和/或容器129a的操作状态和一个或多个应用程序中的至少一项复制到另一容器。在一些情况下,容器热交换管理器140可以经由api105从容器129a接收容器注册句柄并且从容器129a请求状态。在一些情况下,容器129a(例如,使用本文描述的网络模块)自动地将状态发送到容器热交换管理器140。在一些情况下,由容器129a或云服务124b的另一容器执行的应用程序可以将状态发送到容器热交换管理器140。

容器热交换管理器140可以将状态存储到云交换102的内存数据存储器或其他数据库或数据存储器。数据库可以包括例如redis数据结构存储器。容器热交换管理器140可以被配置为将在云服务供应商网络122b中执行的主要容器129a热交换或热缩放到云服务供应商网络122a。例如,企业116可以使用客户门户104或经由api105请求云交换102使用云服务124a为容器129a提供热交换或热缩放服务。客户门户104可以呈现门户接口(门户界面),企业116可以通过该门户接口配置容器129a的标识信息(例如,如本文所述的uri或容器注册数据),并且还可以选择云服务124a,以支持热交换或热缩放服务。

响应于热交换或热缩放事件,容器热交换管理器140对在云服务124b中的主要容器129a,“竖立”、“展开”或者建立云服务124b中的新次要容器126a,以提供用于先前由主要容器126d执行的工作负荷的操作平台。例如,容器热交换管理器140可以在云服务124a中配置新容器。容器热交换管理器140还可以使用云服务124a中的现有容器。在一些情况下,容器126a已经向容器热交换管理器140注册了容器注册句柄。热交换或热缩放事件可以包括来自企业116的请求、来自容器129a的指示容器129a的故障或过载的消息、云交换102的策略规则的触发、或促使容器热交换管理器140竖立新的次要容器以支持主要容器129a的其他事件。

为了竖立新的次要容器126a,容器热交换管理器140发送来自容器129a并由容器热交换管理器140存储的状态数据到容器126a,该容器126a使用状态数据来复制主要容器129a的操作环境。这样,次要容器126a的操作环境可以处理先前由主要容器129a处理的工作负荷。

容器热交换管理器140可以将网络平台108配置为将企业116的从先前引导到主要容器129a的工作负荷重定向到次要容器126a。企业116可以经由在网络平台108中配置的虚拟电路127a(如图1所示)将请求引导到执行工作负荷的容器。容器热交换管理器140可以配置路由器110中的路由信息或nat装置(未示出)中的网络地址转换(nat)映射,以促使针对主要容器126a的请求由网络平台108转发到次要容器129a。在一些情况下,例如,nat映射可以被配置为促使nat装置将包括来自企业116的请求的分组的目的地网络地址重写为次要容器129a的主机的网络地址,而不是主要容器126a的主机的网络地址。在一些情况下,容器主机交换管理器140可以重新配置域名服务(dns)记录,以促使请求重定向到次要容器129a。

次要容器129a可以满足该请求,并且如果需要,经由虚拟电路127a将结果返回给企业116。以这种方式,热交换和热缩放可以对企业116透明。

在一些示例中,企业116可以从csp122购买云服务124的服务许可。在一些示例中,每个服务许可可以授予企业116许可以在csp提供的云服务上注册和部署多个容器。例如,企业116可以购买许可,以在云服务124a上部署50个容器。类似地,企业116可以购买许可,以在云服务124b上部署20个容器。编制引擎106可以登记企业116必须在每个云服务中部署所选数量的容器的许可,并且可以在每个云服务124中部署、创建和管理多达所选数量的容器的上下文中,执行热交换或热缩放。

因此,可以看出,根据本公开的示例技术的系统可以使得能够在专用或公共网络内或者跨不同的专用或公共云服务或网络热交换和热缩放容器。根据本公开的示例技术的这种系统可以将工作流从第一csp中的第一容器引导到代替第一容器或者对第一容器附加的第二csp中的一个或多个额外容器,用于分别热交换和热缩放。根据本公开的示例技术的这种系统,例如,云交换的编制引擎的热交换管理器,在一些情况下还可以为每个容器存储唯一的容器标识符,并且在一些情况下,存储针对每个容器的组合每个容器的网络地址和唯一容器标识符的唯一注册句柄。

根据本公开的示例技术的系统可以将所有状态(用于热交换)或一部分状态(用于热缩放)从第一容器复制到一个或多个额外容器,其中,复制的状态可以包括到一个或多个额外容器的任何当前指令指针、应用程序数据、应用栈配置数据、微服务状态、存储器数据、命令、过程信息、当前数据存储指针,和/或用于一个或多个应用程序、运行时间以及在第一容器中执行的任何其他资源的任何其他代码、数据、指令指针或其他状态。然后,本公开的系统(例如,编制引擎)可以促使绑定到原始的主要第一容器的应用流量引导到次要交换后的容器或缩放后的容器,使得由交换或缩放后的容器执行第一容器的功能。因此,本公开的系统可以使云服务能够通过最小化或快速补救由特定容器提供的微服务或其他应用的中断来维持对其客户的更有效的服务。此外,本公开的系统还可以允许使用云交换的企业更有效地执行网络的负载平衡,以避免对一个特定系统的压力,否则可能导致不利的性能并且对性能参数或客户体验产生负面影响。

图3是示出根据本公开的示例技术的用于云交换102的示例系统的方框图,促进从一个或多个云服务供应商到一个或多个云服务客户的具有灾难恢复(dr)能力的云服务传送的虚拟连接。根据本公开的示例技术,出于dr操作的目的,云交换102可以促进在初始云服务124a处执行的容器和云交换102之间,在云交换102和在所选择的第二云服务124b处执行的容器之间,在一些情况下,在初始云服务124a处执行的容器和在所选择的第二云服务124b处执行的容器之间的通信。具体地,根据本公开的示例dr过程,在云交换102处执行的编制引擎106的dr管理器141可以在编制引擎106处建立dr基础设施接口层142并且在所选择的第二云服务124b中提供dr基础设施层144。dr基础设施接口层142可以包括一个或多个微服务,并且可以表示或执行api网关。

在一些情况下,在检测到初始云服务中断的指示之前,dr管理器141根据企业116灾难恢复的配置设置,来配置企业116的dr基础设施接口层142。预先配置的dr基础设施接口层142可以包括(或公开)api端点,以从企业116接收服务请求130。结果,在检测到初始云服务中断的指示之后,dr恢复管理器140可以快速地或立即地通过配置网络平台108,促使服务请求130被引导到预先配置的dr基础设施接口层142。这种“断路器”方法确保服务请求130不转发到故障云服务124a,而是由dr基础设施接口层142缓冲。因此,在第二云服务的容器中的灾难恢复基础设施层可操作为处理服务请求之前,云交换102的dr管理器141可以缓冲或暂时存储输入的服务请求。此后,云交换102的dr管理器141可以响应于确定第二云服务的容器中的灾难恢复基础设施层可操作为处理服务请求,而将缓冲的服务请求发送到第二云服务。

dr管理器141还可以提供虚拟电路(例如,虚拟电路127c),用于在初始云服务124a和dr基础设施接口层142之间以及在dr基础设施接口层142和所选择的第二云服务124b之间直接数据通信。例如,dr管理器141可以为云服务124b网络和网络平台108之间的物理交叉连接提供vlan,用于在互连平台103和云服务124b网络之间交换数据通信。作为另一示例,dr管理器141可以为云服务124a网络和网络平台108之间的物理交叉连接提供vlan,用于在互连平台103和云服务124a网络之间交换数据通信。

尽管被示为单独的虚拟电路127c,但虚拟电路127c可以表示虚拟电路127a的扩展(例如,共享的虚拟局域网(vlan)或互联网协议-虚拟专用网络(ip-vpn)),从而使企业网络118能够与所选择的第二云服务124b以及第一云服务124a交换数据。

然后,dr管理器141可以从云服务124a的容器126a-n复制来自第一云服务的容器的代码和状态,例如,容器的具有其配置的当前容器状态以及在容器内部运行的应用程序或服务,而dr管理器141在所选择的第二云服务的容器中(例如,在云服务124b的容器129a-n中)提供dr基础设施层144。然后,dr管理器141可以将其已经从云服务124a的容器126a-n复制的代码和状态传送到云服务124b的新提供的dr基础设施层144的容器129a-n。在与来自第一云服务的对应容器可以具有相同的状态和配置的容器中,已经在云服务124a的容器126a-n上执行的应用程序、微服务、功能、处理和指令然后可以继续在云服务124b的容器129a-n上执行。因此,云服务124b的容器129a-n可以用作初始云服务124a的原始容器126a-n的复制副本。

提供或实现dr基础设施接口层142,可以涉及dr管理器141在编制引擎106上安装用于dr基础设施接口层的应用程序代码和数据的实例。此外,dr管理器141可以将网络平台108配置为将服务请求130从企业网络118引导到dr基础设施接口层142。例如,dr管理器141可以将路由器110a配置为将由企业网络118发起的并且寻址到或指向云服务124a的端点的服务请求130(例如,如服务请求的主机/域uri所指示的和/或服务请求的指示子网128内的主机的目的地ip地址所指示的)引导到dr基础设施层142。在一些情况下,dr管理器141可以将虚拟路由和转发实例(vrf)或路由器110a的其他虚拟路由器配置为将虚拟电路127a上的并且指向子网128的所有流量(包括服务请求130)引导到dr基础设施层142。网络平台108可以拦截来自虚拟电路127a的服务请求130并将服务请求130引导到dr基础设施接口层142。在各种示例中,在将代码和状态传送到第二云服务124b的容器129中的dr基础设施层144之后,dr管理器141可以在编制引擎106的路由表中用到dr基础设施层144的容器129的路由来更新到第一云服务124a的容器126的路由。

每个服务请求130可以表示http请求,该请求例如包括javascript对象表示法(json)或xml主体,xml主体规定针对dr基础设施接口层142(以及最初在dr基础设施接口层142所基于的云服务124上执行的企业应用程序的接口)公开的restfulapi端点所定义的参数。

dr基础设施接口层142可以对服务请求130进行排队,直到dr管理器141确定dr基础设施层144可操作为处理服务请求130,此时,dr基础设施接口层142可以将服务请求132(其实质上与相应的服务请求130相同)输出到作为故障云服务124a的备份/dr云服务而操作的云服务124b。dr基础设施接口层142可以在dr虚拟电路127c上将服务请求132注入到云服务124b。为了能够以这种方式注入服务请求132,dr管理器141可以将网络平台108配置为从dr基础设施接口层142接收数据流量,并将数据流量转发到服务请求132中所指示的云服务124b中的必需目的地。在一些情况下,网络平台108可以执行网络地址转换(nat),以促使服务请求132由网络平台108经由dr虚拟电路127c转发到子网128b。

在所选择的第二云服务的容器中提供dr基础设施层144,可以涉及dr管理器141在所选择的第二云服务中具有映射的布局和从第一云服务的容器复制的其他特征的所需数量的所选择的容器上安装应用程序代码和数据,并且具有虚拟电路连接到dr基础设施接口层142。

dr管理器141可以映射初始云服务124a的整个网络的布局,并且在所选择的第二云服务124b中为dr基础设施层144提供相同的网络布局。dr管理器141可以在第二云服务124b中设置具有初始云服务124a的所有相同功能、特征和拓扑的dr基础设施层144。这可以包括dr管理器141复制初始云服务124a的模板驱动的工作流、虚拟机(vm)、图像、网关、转发引擎、库以及任何其他显着特征。

dr管理器141可以管理在选择用于托管dr基础设施后端而所选择的备用云服务124b处设置dr基础设施的各种dr基础设施层144。在一些情况下,暂时dr基础设施接口层142可以充当在云交换102的编制引擎106的顶部构建的在初始云服务124a和第二云服务124b之间的虚拟云。dr基础设施层144可以包括在所选择的第二云服务124b中的容器中实现的接口层、网络层、计算层和存储层,如下面参考图7进一步描述的。

例如,客户可以最初基于由特定区域中的特定云服务供应商提供的云服务中的容器来操作数据存储服务。当云交换102检测到灾难指示并执行dr过程时,云交换102将初始数据存储服务的功能和状态移动到新的云服务中的新的一组容器,该新的云服务可以在第二区域中和/或由第二云服务供应商提供。云交换102可以协调容器间通信,以在容器之间移动代码和状态,包括执行容器的图像以及过程的中间处理图像和在容器内运行的其他未决状态,例如,用于客户的数据存储服务的nosql数据存储器。云交换102最初可以将未决状态保持在第一云服务处的内存数据存储器或其他存储器或数据资源中,同时云交换102通过读取或上传代码和状态来进行。

为了实现初始云服务、dr管理器141和所选择的第二云服务的容器之间的通信,云交换102的编制引擎106可以注册在初始云服务124a中的一些或所有容器,并给每个容器分配用于识别容器的容器标识符以及用于识别执行容器的主机的网络地址。所选择的容器的容器注册数据(包括容器的网络地址和容器的容器标识符)也可以称为注册句柄。使用容器注册数据,编制引擎106可以促进到企业116的容器间通信和dr能力。

在一个示例中,在编制引擎106已经启动dr过程之后,容器126a可以生成供在容器126a上执行的应用程序消耗的数据。dr管理器141经由网络平台108的路由器110,通过来自云服务124a的第2层和/或第3层(l2/l3)通信从容器126a与容器126a的容器标识符和网络地址相关联地读取该数据、该应用程序的代码以及其他状态,诸如执行应用程序涉及的过程和指令指针等。dr管理器141将来自容器126a的数据和其他状态以及代码与容器126a的容器标识符和网络地址相关联地存储,至少直到dr基础设施层144已经设置并且在所选择的第二云服务处启动并运行之后。

作为提供dr基础设施层144并且在所选择的第二云服务124b处启动并运行dr基础设施层144的dr管理器141的一部分,dr管理器141将数据和其他状态以及应用程序代码从容器126a传送到第二云服务124b的一个容器,例如,容器129a。dr管理器141可以有效地从第一云服务124a复制第一容器126a到第二云服务124b的第二容器129a中。dr管理器141可以将第一云服务124a的第一容器126a的容器标识符和网络地址与第二云服务124b的第二容器129a的容器标识符和网络地址相关联,基于该关联,将代码和状态从第一容器126a传送到第二容器129a。dr管理器141随后可以将寻址到第一容器126a处的资源的url或其他uri的通信和应用流的形式的云服务流量重定向到dr基础设施层144中的第二容器129a。

例如,接收企业116的应用请求的api网关可以被配置为响应于编制引擎106的dr管理器141提供的重定向信息,将应用流量从第一云服务124a处的容器126a重定向到第二云服务124b处的容器129a。作为另一示例,网络平台108的路由器110可以被配置为将应用流量从第一云服务124a处的容器126a重定向到第二云服务124b处的容器129a。例如,路由器110a可以被配置为经由dr虚拟电路127c将寻址到子网128a的应用流量发送到云服务124b的子网128b。在一些情况下,网络平台108的路由器110a或nat装置可以将应用程序的目的地地址从子网128a转换到子网128b。在一些情况下,网络平台108或api网关被配置为重写被发送到云服务124a的应用流量的uri,以将其引导到云服务124b。

以这种方式,外部资源(例如,企业网络118的外部资源)可以继续与最初在第一容器126a处托管并且现在在dr基础设施中的第二容器129a处托管的资源交互,而不必被通知到这些交互寻址到新的uri或其他主机网络地址。因此,编制引擎106可以协调网络平台108的操作,使得路由器110可以将寻址到容器126a的通信转发到云服务124b,其中,可以引导到云服务124b内的dr基础设施层144的主执行容器129a,使得容器129a用作容器126a的复制替代品。如果在dr基础设施层144在第二云服务124b处启动并且运行时,初始云服务124a中的容器尚未被dr管理器141复制或完全复制,则dr管理器141可以将代码和状态或剩余的代码和状态从初始云服务124a的那些容器中复制或继续复制到第二云服务124b处的dr基础设施的容器。

因此,编制引擎106可以对容器化应用程序执行dr过程,而不需要客户或用户对dr过程进行任何主动努力或管理。在一些情况下,例如,dr过程对于企业116可以是完全透明的。编制引擎106可以促使第二云服务处的dr基础设施的复制容器继续原始容器的操作,包括在“中间流”中或从响应于初始中断而锁定和复制的原始容器的整组未决过程、指令指针和其他中间操作状态中继续未决操作。因此,无论操作是否从一个云服务移动到另一云服务,并且尽管灾难或其他中断影响原始云服务,但客户服务的最终用户可以继续与这些服务进行交互,而很少或者不会中断或改变用户体验。

在一些示例中,企业116可以从csp122购买用于云服务124的服务许可。在一些示例中,每个服务许可可以授予企业116注册和部署在csp提供的云服务上的最大数量的容器的许可。例如,企业116可以购买许可,以在云服务124a上部署50个容器,并且经由实现虚拟电路127a的vlan连接到云服务124a上的那些容器。许可条款还可以包括在触发dr过程的合格中断的情况下,为了dr过程的目的,经由实现虚拟电路127c的vlan,部署一个或多个其他可用云服务上的类似的五十个容器的许可。其他可用的云服务可以是例如由与主要云服务相同的云服务供应商提供的其他区域中的云服务,或者可以由其他云服务供应商提供。编制引擎106可以与客户帐户的信息相关联地登记企业116必须在每个云服务中部署所选择的数量的容器的许可,并且可以在部署、创建和管理在每个涉及的云服务124中所选择的数量的容器的背景下,可能在正常使用和dr过程中(如果需要的话)暂时使用的不同许可条款下,执行dr过程。

在一些情况下,云交换可以使客户或其他用户(例如,企业116或其代理)经由客户门户104能够最初或随时地建立dr配置设置,例如,有资格因中断而触发dr过程的条件或标准。用户选择的dr配置设置可以通过云交换102与用户的客户账户相关联,并且可以作为dr配置设置输入而输入或存储到dr管理器141。dr管理器141可以向客户公开dr配置设置选项,并经由api接收用户选择输入。dr管理器141可以为不同的dr场景提供不同的dr配置设置和dr工作流选项。dr工作流可以包括一组步骤或操作,其定义dr管理器141提出dr基础设施层144的各种基础设施层的顺序。例如,客户可以将dr工作流配置为首先提出用于dr基础设施层144的存储层,然后是计算层,然后是网络层,最后是备份云服务中的dr基础设施中的接口层(与编制引擎106的暂时dr接口层142分开),以处理来自企业应用程序的服务请求。

dr配置设置可以包括dr管理器141何时或在什么条件下在备份云服务处设置和拆除dr基础设施的设置和规则。dr管理器141还可以向客户公开关于其在客户账户上的活动的持续信息,以例如,在设置到向客户提供的接口(界面)的云交换仪表板中,例如,在企业工作站120处显示的网站门户112,使所有dr过程活动能够对客户完全透明。

dr管理器141可以存储和跟踪可能大量客户账户的dr配置设置,可能与编制引擎106的其他特征存储或跟踪的其他客户账户信息或客户账户设置相关联。然后,编制引擎106的dr管理器141可以根据客户选择的配置设置来启动和执行dr过程。这包括dr管理器141根据与受触发中断影响的云服务的客户账户相关联的用户选择的dr配置设置,执行dr基础设施,包括dr基础设施接口层142和dr基础设施层144的按需设置。

因此,云交换提供云中的dr的基础设施的按需设置。云交换检测初始云服务的故障或中断,动态选择与故障初始云服务分开的第二云服务,并触发第二云服务处设置包括不同功能的不同dr基础设施层的完整dr基础设施或dr环境。一旦云交换检测到灾难状态触发或初始云服务中断的其他指示,要设置的dr基础设施的第一层是云交换处的接口层,该接口层用作虚拟dr云服务,以复制和维持初始云服务中的所有当前操作。

初始云服务的中断可能是由停电、恶意软件攻击、一个或多个网络节点的物理丢失、应用流量增加或资源需求的大量增加引起的突然过载、或云服务中断的任何其他原因造成的。中断的指示可以采取经由网络或云服务监视系统检测上述中断示例的任何类型的形式。编制引擎还可以使客户能够可能基于客户自己的内部功能或检测规则或者手动地,例如,在人工确认向客户公开的dr监控工具中的中断指示的情况下,发送触发器,以启动dr过程。初始云服务中断的指示的初始检测和dr过程的响应启动可以类似于断路器,该断路器可以确保在第一云服务的初始灾难或中断之后第一云服务的数据或操作不丢失。即,一旦云交换102检测到中断,在云交换dr管理器在动态选择的第二云服务中设置dr基础设施的其他层的过程中,云交换102处的dr基础设施接口层142就开始从队列中的第一云服务的容器中复制所有当前或未决请求、指令、过程和其他未决状态(例如,包括初始云服务中的所有输入的数据和当前状态)。

云交换dr管理器继续建立dr基础设施的剩余层并启动其功能,最终在所选择的第二云服务中的容器中设置完整的dr基础设施。dr管理器141在第二云服务处已经执行并且活动的预先存在的容器中设置dr基础设施层,以促进原始容器的快速复制。dr管理器141确保来自第一云服务的容器的代码和未决状态传送到新的云服务处用于正在进行的处理的dr基础设施层,因为基础设施层的容器可用于从初始云服务接收代码和状态并接管初始云服务的功能,使得初始云服务的所有功能在新的云服务中无缝地继续运行,包括在适当的情况下从中间过程继续执行应用程序和微服务,而不会使这些应用程序和微服务的功能失效。因此,dr基础设施层的容器用作初始云服务的容器的复制副本。

根据本公开的示例技术的系统可以使云交换能够跨不同的专用或公共云服务或网络对容器执行dr过程。根据本公开的示例技术的这种系统可以检测对云服务的合格中断并且通过实现dr过程来进行响应。根据本公开的示例技术的这种系统(例如,云交换的编制引擎的dr管理器)可以在云交换的编制管理器处提供dr基础设施接口层。根据本公开的示例技术的系统(例如,dr管理器)可以从初始云服务的容器复制代码和状态,而dr管理器在所选择的第二云服务的容器上提供dr基础设施。复制的状态可以包括任何数据、指令指针、微服务的未决请求、以及一个或多个应用程序、一个或多个微服务、运行时间以及在容器中执行的任何其他资源的任何其他状态。

一旦dr基础设施在第二云服务的容器上启动并运行,本公开的系统(例如,dr基础设施接口层)可以将服务请求132(并且在一些情况下,来自dr基础设施接口层的代码和状态)推送或传送到第二云服务处的dr基础设施层的容器。然后,本公开的系统(例如,编制引擎)可以促使绑定到第一云服务中的原始容器的网络地址的应用流量重定向到在第二云服务中的dr基础设施中具有复制的代码和状态的等效容器。因此,尽管初始云服务中断,由云交换的编制引擎执行的dr过程提提供用程序、微服务和其他功能,在第二云服务中的dr基础设施的容器上继续操作。因此,本公开的系统可以使云服务能够通过最小化或补救由于其云服务的灾难或其他中断而对其基于云的操作的中断,以维持对其客户的更有效的服务。

作为本公开的技术的一个说明,提供了示例应用程序编程接口(api)定义,用于经由云交换促进在逻辑上隔离的网络处执行的容器的容器间通信。以下api是示例post操作,在由编制引擎106执行时,该操作为容器提供虚拟网络。

在以上示例api中,该请求是对统一资源标识符(uri)的httppost命令,该统一资源标识符是用于为容器提供虚拟网络的api105接口。消息主体包含一个或多个请求参数,这些参数指定容器的虚拟网络的配置选项。在一个示例中,企业116的管理员访问客户门户104,以访问api105,api105将请求传输到编制引擎106,以请求为容器提供虚拟网络。在另一示例中,企业116的管理员直接访问api105,以将请求请求到编制引擎106,以请求为容器提供虚拟网络。响应于接收到请求uri,编制引擎106为容器提供虚拟网络。此外,编制引擎106将响应消息(如上所述)传输到企业116,其指示虚拟网络的成功提供以及提供的虚拟网络的特定配置细节。上面提供的示例响应的主体可以类似于示例请求的主体,如上所述。

在另一示例中,企业116的管理员通过客户门户104或直接地来访问api105,以建立用于触发和执行容器的热交换和/或热缩放或灾难恢复的配置设置,例如,检测和性能标准。在云服务124a中的容器126a已用云服务124b中的容器129a交换或替换来用于灾难恢复的另一示例中,编制引擎106可以将api网关配置为在来自云服务124a的虚拟电路127b或虚拟电路127c上或者经由来自云交换102的vlan129b,将企业网络118的应用请求或其他云服务流量从容器126a中的资源重定向到容器129a。

在以上示例api中,“name_services”参数指定连接名称。提供该参数,作为字符串。在以上示例响应中,“name_services”参数已将虚拟网络的名称设置为“docker虚拟网络”。

在以上示例api中,“id”参数指定虚拟网络的标识符。在企业116或编制引擎106访问多个虚拟网络的示例中,企业116和编制引擎106可以使用标识标签参数来区分从每个虚拟网络接收的网络流量的来源。

在以上示例api中,“驱动器”参数根据本文描述的技术指示所请求的连接的类型,在此处是指示容器的虚拟网络的“ecx_docker_network”。

在以上示例api中,选项子结构中的“datacenterport”参数指定企业116通过其与虚拟网络通信的数据端口。该参数可以是指定云交换的实际端口的整数(例如,“9001”),其中,端口表示用于访问云交换网络平台108的交换机或面板的接口端口。

在以上示例api中,“subnet(子网)”参数指定csp上的容器的子网。例如,并且参考图1,“subnet”参数可以规定csp122a上包括容器126a-126b的子网128a。每个子网特定于特定csp122,并且每个子网128可以包含在csp122内的主机上执行的一个或多个容器126。然而,如本文所述的虚拟网络包括属于不同csp的多个子网。例如,单个虚拟网络可以包括csp122a的子网128a和csp122b的子网128b。

在以上示例api中,“gateway(网关)”参数指定存在于企业网络118和云交换102之间的企业116的网关或边缘路由器的地址。编制引擎106将指向企业116的流量从虚拟网络路由到该网关地址。

以下参数可以包括在容器的描述性数据中,作为“containers(容器)”列表中的结构化容器对象。容器的描述数据可以表示容器注册数据。

在以上示例api中,“container_id”参数指定提供的容器的唯一标识符。企业116、编制引擎106、csp122和其他容器126可以使用容器id来与对应的容器通信,管理或配置对应的容器。

在以上示例api中,“container_name”参数指定提供的容器的人类可读名称。企业116、编制引擎106、csp122和其他容器126可以使用容器id来与对应的容器通信,管理或配置对应的容器。

在以上示例api中,“provider(供应商)”参数指定用于托管由企业116请求提供的容器的csp122。在一些示例中,供应商特定于azureexpressroute、awsdirectconnect、cloudsigma等中的一个。

在以上示例api中,“speed(速度)”参数指定虚拟网络的连接速度。在一些示例中,“speed”参数设置网络的最大连接速度。

在以上示例api中,“vlan”参数指定企业116的vlan标识符。在一些示例中,编制引擎116和csp122使用vlan标识符来路由在企业116和csp122之间交换的流量。

在以上示例api中,“code(编码)”参数指定虚拟网络的区域。在以上示例中,“code”参数“sg”指定在新加坡地区提供虚拟网络。在其他示例中,“code”参数指定城市、邮政编码、县、州、省、国家或大陆。

在以上示例api中,“macaddress”参数描述容器的主机的mac地址。例如,企业116可以使用该参数来请求容器的主机的mac地址。编制引擎106或csp122中的一个通过提供所请求的mac地址来响应。

在以上示例api中,“port(端口)”参数描述容器的端口。在一些示例中,每个容器126在主机上执行。例如,参考下面描述的图4,在主机304上执行的每个容器306可以具有唯一的主机地址+端口组合或唯一的网络前缀/子网+端口组合,它识别云服务供应商网络中的容器。企业116可以使用该参数来指定特定容器的端口。或者,企业116可以使用该参数来请求特定容器的端口。编制引擎106或csp122中的一个通过提供所请求的容器端口来响应。

在以上示例api中,“asn”和“bgp”参数指定编制引擎106应当用于促进企业116与所提供的虚拟网络之间的流量的asn和bgp参数。

在以上示例api中指定的参数仅用于说明目的。可以使用上面提供的示例api或者通过本文未明确公开的不同参数来实现本公开的技术。例如,可以仅使用上述参数的子集来实现本公开的技术,或者可以在不使用上述任何参数的情况下,为容器提供虚拟网络或执行热交换或热缩放。本公开中的任何内容都不应被解释为将本公开的技术限于上面所说明的示例api。在美国临时申请no.62/286,259和美国专利申请no.15/228,471中描述了用于容器的虚拟网络的设计和实现的具体技术,这两个专利的全部内容通过引用结合于此。

图4是示出根据本公开的一种或多种技术的云交换内的示例路由器的方框图。通常,路由器200可以基本上类似于图1中的路由器110a-110n来操作。在该示例中,路由器200包括接口卡214a-214n(“ifc214”),其可以经由输入链路216a-216n(“输入链路216”)接收分组并且经由输出链路218a-218n(“输出链路218”)发送分组。ifc214通常经由多个接口端口耦接到链路216、218。路由器200还包括控制单元202,其确定所接收的分组的路由并经由ifc214相应地转发分组。路由引擎204还包括虚拟路由功能单元(vrf)242a、242b、......242n(“vrf242”),其可以表示设计限制内的任意数量的vrf。每个vrf242可以在路由器200的硬件上实现,但是虚拟化路由器200的路由和转发功能。

每个vrf242可以与不同的云服务124相关联或专用于不同的云服务124,并且可以相关联,用于将特定的云服务124与特定的企业116或其他客户或用户互连。vrf242可以被配置为通过云交换102将相应的云服务124与特定企业116或其他客户或用户互连。vrf242可以配置有用于第3层子网的路由,包括由url或其他uri识别的主机地址或为dns目的而唯一地识别容器中的微服务或其他应用程序的网络地址。

在一些示例中,dr管理器141可以在dr过程结束时或附近,通过修改路由引擎204中的映射表来例如,在云交换102的网络平台108中,实现路由器200中的vrf242的转换,以将被配置为将流量引导到初始云服务的第一vrf242a的应用流程重新分配给被配置为将流量引导到第二云服务处的dr基础设施层的第二vrf242b。dr管理器141可以为vrf242b配置有网络地址表,该网络地址表将来自初始云服务的容器的微服务和其他应用程序的url或其他网络地址与在第二云服务的dr基础设施层的复制容器上安装和执行的那些微服务和其他应用程序的复制副本的网络地址和容器标识符相关联。因此,寻址到来自原始云服务的容器的微服务和其他应用程序的url或其他网络地址的流量自动引导到第二云服务处的dr基础设施层的复制容器,而不需要改变url或其他网络地址,并且不需要重写应用流量的分组。

控制单元202可以包括路由引擎204和分组转发引擎210。路由引擎204作为路由器200的控制平面操作,并且包括提供用于执行多个并发过程的多任务操作环境的操作系统。例如,路由引擎204可以执行软件指令,以实现一个或多个网络协议208。例如,网络协议208可以包括一个或多个路由和交换协议,例如,边界网关协议(bgp)、多协议标签交换(mpls)、虚拟专用lan服务(vpls)、以太网虚拟专用网络(evpn)或供应商骨干桥接evpn(pbb-evpn),用于与其他路由装置交换路由信息并用于更新路由信息206。路由信息206可以描述路由器200所在的云交换的拓扑,还可以包括通过计算机网络中的共享树的路由。路由信息206描述了计算机网络内的各种路由以及每个路由的适当的下一跳,即,沿着每个路由的相邻路由装置。路由引擎204分析存储的路由信息206并生成用于转发引擎210的转发信息212。转发信息212可以将例如某些多播组的网络目的地与特定的下一跳和对应的ifc214和用于输出链路218的物理输出端口相关联。转发信息212可以是编程到专用转发芯片中的基数树、一系列表、复杂数据库、链接列表、基数树、数据库、平面文件或任何各种其他数据结构。

转发信息212可以包括查找结构。给定关键字(例如,地址)后,查找结构可以提供一个或多个值。在一些示例中,一个或多个值可以是一个或多个下一跳。下一跳可以实现为微代码,其在执行时执行一个或多个操作。可以“链接”一个或多个下一跳,使得一组链接的下一跳在执行时针对各个不同下一跳执行一组操作。这种操作的示例可以包括将一个或多个服务应用于分组,丢弃分组和/或使用由一个或多个下一跳识别的接口来转发分组。路由器200可以至少部分地由互连平台103配置,如图1和图2所示,包括容器热交换管理器140配置。

根据本公开的技术,路由器200可以操作为如图1和图2的示例所示的路由器110之一。在一个示例中,路由引擎204可以使用路由协议208来与多个云服务(例如,云服务124)中的每一个交换路由信息,并且在路由信息206中存储所学习的穿过云服务124的路由。转发引擎210可以将各种子网(例如,子网128a和128b)分别与各种云服务(例如,云服务124a和124b)相关联,并将该信息存储在转发信息212中。路由器200可以沿着输入链路216接收l2/l3数据通信,该通信可以例如源于容器126a并且寻址到容器126d。控制单元202可以解析子网128b内的网络地址(例如,ip地址)的数据通信,并且基于转发信息212,向子网128b转发数据通信,其中,容器126d可以接收转发的通信。网络地址可以与热交换管理器140热交换或热缩放的第一容器相关联,使得网络地址现在与代替原始容器或者对原始容器进行附加的一个或多个额外容器相关联。热交换管理器140还可以将控制单元202配置为将数据通信寻址到与网络地址相关联的唯一容器标识,例如,在已经将替换的或额外的容器(分别用于热交换和热缩放)分配给与第一容器相同的网络地址的情况下。转发引擎210可以沿着输出链路218将数据通信传输到云服务124b内的子网128b,其中,容器126d可以接收数据通信。

因此,可以看出,根据本公开的技术实现的云交换内的路由器可以从第一专用网络内的第一容器接收数据通信,并且将该数据通信传输到一个或多个第二容器,该第二容器可以在相同的第一专用网络内,在第二专用网络内,或在公共云服务网络内。这种路由器可以允许容器在相同或不同专用或公共网络上的容器上执行的微服务或其他应用程序之间交换数据。此外,这种路由器可以允许专用网络通过最小化或补救由特定容器提供的微服务或其他应用程序的中断来维持对其客户的更有效的服务。此外,这种路由器可以允许专用网络更有效地执行网络的负载平衡,以避免对一个特定系统的压力,否则可能导致不利的性能并且对性能参数或客户体验产生负面影响。

仅出于示例目的,示出图4中所示的路由器200的架构。可以在图4的示例路由器以及在本文中未具体描述的其他类型的路由器中,实现本公开中阐述的技术。在其他示例中,可以以各种方式配置能够根据本公开起作用的路由器。在一些示例中,控制单元202的一些功能可以分布在ifc214内。在一些示例中,控制单元202可以包括多个分组转发引擎。本公开中的任何内容都不应被解释为将本公开的技术限于图4所示的示例架构。

图5是示出根据本公开的示例技术配置的示例专用网络的方框图。在图5的示例中,运营商302可以操作拥有计算资源的专用网络300,通过这些计算资源,一个或多个客户可以执行多个应用程序和微服务。在一些示例中,运营商302可以是企业,例如,图1和图2的企业116。在一些示例中,运营商302可以是csp,例如,图1和图2的csp122a或csp122b中的任何一个的运营商。在一些示例中,专用网络300可以是企业网络,例如,图1和图2的企业网络118。在一些示例中,专用网络300可以是云服务,例如,图1和图2的云服务124a或124b。专用网络300可以包括多个主机304a、304b和304c(统称为“主机304”)。在一些示例中,主机可以是在专用网络300上运行的服务器。在其他示例中,一个或多个主机可以是在专用网络300上运行的一个或多个服务器上执行的一个或多个虚拟机。每个主机304可以具有ip地址,使得可以在专用网络300上识别主机。在一些示例中,多个主机可以拥有落入ip子网内的多个ip地址,例如,ip子网316a、316b。主机304可以与网络边缘装置318通信,网络边缘装置318可以表示路由器或l3交换机。网络边缘装置318可以沿着虚拟电路127a连接到云交换,例如,图1和图2的云交换102。在一些示例中,网络边缘路由器318可以操作为在主机304和云交换102之间转发消息。

每个主机可以执行一个或多个容器。在图5的示例中,主机304a被配置为执行容器306a和306b,主机306b被配置为执行容器306c和306d,并且主机304c被配置为执行容器306e和306f(统称为“容器306”)。容器306可以以类似的方式操作,并且可以表示图1和图2的容器125和126中的任何容器。每个主机304可以实现特定内核实例310、公共库312和内核特定库314。在特定主机内执行的每个容器共享内核310和公共库312(例如,主机304a的容器306a和306b共享内核310a和公共库312a)。在一个示例中,主机304中的任何一个可以执行用于linux操作系统的docker容器应用程序,linux操作系统在这种示例中,分别由容器306和内核310表示。

在一些示例中,主机内的每个容器可以共享主机的ip地址。在一些示例中,每个容器可以由容器id或端口id唯一地识别。在一些示例中,容器的端口id识别传输控制协议(tcp)端口或用户数据报协议(udp)端口。在图5的示例中,容器306a和306b可以与主机304a共享ip地址192.168.1.125。在该示例中,容器306a可以与主机304a的端口id5001相关联,而容器306b可以与端口id5002相关联。在一些示例中,主机304a可以将指向tcp端口5001的流量转发到容器306a,并将指向tcp端口5002的流量转发到容器306b。根据本公开的示例技术,每个容器306可以拥有网络模块308,如本文所述,以允许容器与云交换102通信。编制引擎106可以将针对网络模块308的数据传送到容器306,以使容器306能够与云交换102并且特别是与容器热交换管理器140具有这种响应交互。

在一些示例中,企业(例如,图1和图2的企业116)可以购买或以其他方式签订要在云服务(例如,云服务124a)内部署的多个容器。在一些示例中,企业116可以创建至少一个应用程序,例如,微服务。每个容器306可以为应用程序提供执行环境。在一些示例中,每个容器306可以为至少一个唯一应用程序或微服务提供执行环境,而在其他示例中,每个容器306可以提供对至少一个应用程序或微服务的冗余访问。在一些示例中,专用网络300的每个客户可以访问单个容器(例如,容器306a)。在一些示例中,客户可以访问多个容器(例如,容器306a、306b和306c)。在一些示例中,子网内的每个容器可以提供特定的一套应用程序或微服务。在一些示例中,子网内的每个容器可以向特定客户或客户组提供对专用网络300的访问。

根据本公开的示例技术,容器306包括相应的网络模块308,这些网络模块扩展为获得容器注册数据并向云交换发送容器注册数据,包括例如容器的网络数据和容器标识数据。例如,容器306a包括网络模块308a,其获得子网316a中的主机304a的网络地址并进一步获得容器306a的容器标识符,内核310a可使用该容器标识符来从主机307a上执行的其他容器(例如,容器306b)中识别容器306a。在一些情况下,容器标识符是唯一容器标识符,其将容器306a与专用网络300中的所有其他容器区分开。在一些情况下,容器标识符是网络端口,例如,tcp或udp端口,其将容器306a和在主机上执行的其他容器区分开。在一些情况下,容器标识数据包括唯一容器标识符和网络端口。在任何这些情况下,分配给特定容器的唯一容器标识符和/或网络端口通常可以称为容器标识符。

网络模块308通过调用云交换102的api105自注册容器注册数据,以发送容器注册数据。以这种方式,云交换102的互连平台103接收容器注册数据,通过该数据,互连平台103可以经由虚拟电路将数据通信发送到对应的容器306。例如,对于容器306a,网络模块308a可以调用api105,以经由与云交换102的虚拟电路127a将容器306a的容器注册数据发送到互连平台103。

互连平台103可以存储容器306的容器注册数据。互连平台103可以将关联中的多个容器关联,并且向关联中的每个容器发送关联中的其他容器的容器注册数据。结果,关联中的容器可以使用容器注册数据来经由云交换将数据通信发送到位于耦接到云交换的不同专用网络中的关联中的另一容器。

根据本公开的示例技术,专用网络300内的容器306a可以与连接到云交换102的另一专用网络内的容器通信,例如,云服务124b内的容器129a。在该示例中,基于从互连平台103接收的容器注册数据,容器306a可以生成具有指示目的地容器(例如,容器129a)的容器标识符(例如,端口)和用于执行目标容器的主机的网络地址(例如,csp122b的子网128b内的ip地址)的数据通信。容器306a可以输出该数据通信,以经由虚拟电路127b或虚拟电路127c在专用网络300外部传输到云交换102的路由器110。如上所述,编制引擎106可以操作网络平台108,以将通信转发到适当的云服务的目的地子网(例如,云服务124b的子网128b)。云服务124b可以将数据通信引导到子网128b内的容器129a。如果容器129a以第二数据通信进行响应,则云服务124b可以将第二数据通信传送到云交换102的路由器110。云交换102可以包括网络平台108,以沿着通信链路(例如,虚拟电路127b或虚拟电路127c)将第二数据通信重定向到专用网络300。

网络边缘装置318可以从虚拟电路127a/127b/127c接收第二数据通信,并且将数据通信转发到具有由数据通信识别的ip地址的主机(例如,主机304a)。在一些示例中,第二数据通信的目的地ip地址可以指定主机304a的tcp/udp端口。主机304a可以将第二数据通信传送到具有与目的地ip地址的tcp/udp端口匹配的端口id的容器。因此,可以看出,根据本公开的示例技术实现的专用网络可以实现在连接到云交换的第一专用网络内的第一容器与连接到云交换的第二专用网络内的第二容器之间的通信。

在一些示例中,容器306a可以使用网络模块308a生成表示容器306a的状态的数据并将其发送到云交换,用于热交换或热缩放。

仅出于示例目的,示出图5中所示的专用网络300的架构。可以在图5的示例云服务以及在本文中没有具体描述的其他类型的云服务中实现本公开的示例技术。在其他示例中,可以以各种方式配置专用网络300。在一些示例中,专用网络300可以实现与云交换共享公共通信协议的各种api、操作系统、硬件或软件。在一些示例中,云交换的每个云服务可以使用不同的通信协议来与云交换交换数据,并且云交换可以用于使用不同通信协议来促进或转换云服务之间的通信。本公开中的任何内容都不应被解释为将本公开的技术限于图5所示的示例架构。

图6是示出根据本公开的示例技术的示例容器的方框图。容器400可以是虚拟化容器,例如,由用于linux操作系统的docker容器技术提供的容器。在一些示例中,容器400可以与其他容器和主机内核共享操作系统和公共库。在一些示例中,容器400可以通过内核接口404向系统内核发送以及从系统内核接收数据通信、控制信号和各种其他传输。

容器400包括状态复制模块442。状态复制模块442可以通过图1-3的编制引擎102安装在容器400上。状态复制模块442可以实现为在容器400上执行的补充微服务或其他软件模块。作为dr过程的一部分,状态复制模块442将容器400配置为接受来自编制引擎106(例如,来自dr管理器141)的dr过程命令,以复制来自容器400的所有代码和状态,并响应于编制引擎106的接收该复制命令,将该复制的代码和状态传输到编制引擎106(例如,dr管理器141)。

在一些示例中,容器400可以结合内核接口404使用网络模块402来组合数据、向网络发送数据并且从网络接收数据。例如,网络模块402可以使容器400能够根据各种网络协议进行通信,例如,虚拟可扩展lan(vxlan)、ipvlan、macvlan、vpls、evpn或pbb-evpn。根据本公开的示例技术,网络模块402可以操作为向云交换自动注册在耦接到云交换的多个网络内操作的多个容器的对应容器,以促进经由云交换在容器之间的通信。网络模块402包括若干标识符,使得可以在专用网络上识别容器400,例如,云服务或企业网络。容器标识符414是针对其他容器唯一地标识容器400的数据字段。在一些示例中,容器标识符414是对应于执行容器400的主计算机的tcp/udp端口的端口id。主机网络地址416是识别容器400在其上执行的主机的网络地址的数据字段。在一些示例中,主机网络地址416可以是ip地址。在各种示例中,主机网络地址416通常可以是统一资源标识符(uri)。

在一些示例中,容器400被配置为执行至少一个微服务410和相关联的微服务专用库412。在一些示例中,容器400被配置为分别执行至少一个应用程序和相关联的应用程序专用库,例如,应用程序406a和406b和应用程序专用库408a和408b。容器400可以向客户提供至少一个微服务和应用程序,用于通过云服务进行访问。因为容器400被虚拟化并与系统内核和其他容器隔离,所以容器400可以为客户提供对至少一个微服务和应用程序的安全且牢固的访问。在一些示例中,容器400可以是microsoftazure云服务内的容器。在这些示例中,容器400可以向客户提供执行一套应用程序的环境。在一些示例中,容器400可以是amazonwebservices云服务内的容器。在这些示例中,容器400可以向客户提供执行一个或多个微服务的环境。

仅出于示例目的,示出图6中所示的容器400的架构。可以在图6的示例容器以及在本文中未具体描述的其他类型的容器中实现如本公开中阐述的示例技术。在各种示例中,可以以各种方式配置容器400。在一些示例中,容器400可以实现各种api、一个或多个应用程序或一个或多个微服务。在一些示例中,容器400可以实现单个应用程序或单个微服务。本公开中的任何内容都不应被解释为将本公开的技术限于图6所示的示例架构。

图7是示出根据本公开中描述的技术的具有包括热交换管理器540和dr管理器510的交换引擎的云交换的方框图。编制引擎550可以表示图1和图3的编制引擎106的示例实例。虽然参考图1和图3描述了图7,但是图7通常可以适用于本公开的各种技术。

编制引擎550最初经由vrf242a为企业网络118提供与托管容器534a、534b、...534n(“容器534”)的第一云服务532a的虚拟电路连接,向企业116许可其中一些容器,以代表企业116执行应用程序。编制引擎550向数据库或其他数据存储器552存储容器记录554,这些容器记录具有相应容器的条目并包括容器的对应容器注册数据。容器注册数据可以包括用于每个可用容器的相应容器注册句柄,其中,每个容器注册句柄包括相应容器的网络地址和唯一容器标识符(可能是端口号)。编制引擎550可以使用容器注册数据来扩展穿过包括容器的专用网络的网络连接,并且经由虚拟电路直接寻址容器,专用网络通过该虚拟电路与云交换以及在一些情况下与其他专用网络进行通信。在执行热交换的情况下,可以是对应于图1和图2的容器热交换管理器140的实现方式的容器热交换管理器540可以修改容器数据存储器552中的容器注册句柄,以将第一容器的网络地址分配给一个或多个第二替换容器。在执行热缩放的情况下,容器热交换管理器540可以修改容器数据存储器552中的容器注册句柄,以将第一容器的网络地址分配给一个或多个第二附加容器。

在一些示例中,容器热交换管理器540还可以从第一csp中的第一容器中复制状态,并且在将状态发送到第二csp中的一个或多个容器之前或与此同时,将容器的状态存储在数据存储器552中。热交换管理器540可以在一些示例中或多或少地暂时存储状态,以确保在将状态发送到新csp中的新一个或多个容器并且与第二csp确认该状态已被成功写入一个或多个新容器中并且用于由一个或多个新容器执行之前,状态被保存,而不会在热交换或热缩放过程之后从第一csp中原始容器中丢失任何状态。

编制引擎550可以在企业拥有、许可给企业和/或企业可访问但在不同专用网络(例如,企业网络和一个或多个云服务网络)中操作的容器之间创建关联。基于容器的网络地址和由服务密钥识别的ip子网,编制引擎550可以将服务密钥与在云服务网络处执行的容器相关联,以将容器与提供服务密钥的企业相关联。以这种方式,将容器注册到编制引擎550中的企业。

编制引擎550可以在企业网络和云服务网络之间建立虚拟电路。容器可以经由虚拟电路(例如,一个或多个vlan)向编制引擎550提供其对应的容器注册数据。在一些情况下,编制引擎550可以向企业提供容器注册数据,使得在企业网络处执行的容器可以经由虚拟电路使用容器主机网络地址和容器端口/标识符来寻址云服务网络中的容器。

对于容器热交换管理器540,企业运营商可以创建容器之间的关联。企业运营商可以访问企业的容器列表和各种云服务的容器列表,在来自不同列表的容器之间创建关联,并且配置用于在不同云服务中的容器之间热交换和热缩放的设置或时间表。例如,企业运营商可以指定第二云服务中的容器129a是第一云服务中的容器126a的副本。在一些情况下,经由特定虚拟电路可访问的容器可以由编制引擎550自动关联。在已经关联之后,编制引擎550然后将容器的容器注册数据提供给关联容器,以使相关联的容器能够将数据通信寻址到容器,用于容器的热交换或热热缩。

在各种示例中,容器热交换管理器540可以存储特定容器的热交换和热缩放配置设置。当容器热交换管理器540检测到已经满足或触发了第一csp中的第一容器的热交换的特定标准时,容器热交换管理器540可以从第一容器中复制所有状态,如果需要的话,在第二csp中竖立(拥护)新容器,将从第一csp中的第一容器的状态发送到第二csp中的第二容器,并确认第二csp中的第二容器正在以第一容器的状态执行。在一些示例中,容器热交换管理器540可以在热交换过程的至少一部分期间,将状态存储在编制引擎550的内部数据存储器552中。当容器热交换管理器540检测到已经满足或触发了第一csp中的第一容器的热缩放的特定标准时,容器热交换管理器540可以从第一容器中复制所有状态,如果需要的话,在第二csp中竖立一个或多个新容器,将至少一些状态从第一csp中的第一容器发送到第二csp中的一个或多个容器,并确认第二csp中的一个或多个容器正在以第一容器的至少一部分状态执行。

在一些实例中,编制引擎550提供备份服务560,通过该备份服务560,编制引擎550可以为云交换的客户促进对云服务供应商网络的容器备份。备份服务560可以由编制引擎的一个或多个应用程序和/或微服务执行。编制引擎550可以从云交换的企业或其他客户接收识别云服务的服务密钥。服务密钥可以与服务密钥准许访问的云服务内的ip子网相关联并识别该ip子网。编制引擎550可以存储服务密钥。

编制引擎550还可以经由api105从客户和诸如企业116等其他用户与云交换账户或那些客户或用户的许可相关联地接收dr配置设置512。云交换502至少部分地由包括编制引擎550的互连平台管理。编制引擎550将dr配置设置512存储到数据库或其他数据存储器。dr配置设置512可以包括例如使dr管理器510触发启动dr过程的合格中断的标准、如何在可用云服务中选择第二云服务以托管dr过程的dr基础设施的协议、以及用于托管dr过程的dr基础设施的第二云服务的容器的数量的指定。

在一些示例中,dr配置设置512可以包括用于选择云服务供应商网络以提供由编制引擎550代表企业116编制的dr服务的配置数据。配置数据可以指定要提供dr服务的云服务供应商网络优选地共同位于数据中心内,企业116也共同位于该数据中心内,其中,数据中心由云交换供应商部署并且包括云交换。配置数据可以指定云服务供应商网络为特定主要云服务网络提供dr服务。例如,配置数据可以指定云交换502将使用提供第二云服务532b的云服务供应商网络来为企业116提供第一云服务532a的dr服务。

在dr过程之前或作为dr过程的一部分,编制引擎550可以访问第一云服务532a的容器534和第二云服务532b的容器551的容器注册数据。容器注册数据可以包括用于每个可用容器的相应容器注册句柄,其中,每个容器注册句柄包括相应容器的网络地址和唯一容器标识符(可能是端口号)。编制引擎550可以经由vrf242a使用容器注册数据来扩展穿过包括相应容器534n的第一云服务532a的网络连接,并且经由虚拟电路127a直接寻址容器534n,通过虚拟电路,第一云服务532a与云交换502进行通信,并且在一些情况下,与其他云服务(例如,云服务532b)进行通信。

dr管理器510监视第一云服务532a并检测对第一云服务532a的正常操作发生的并且满足根据在由dr管理器510存储的用户选择的dr配置设置中设置的规则或协议有资格作为dr触发中断的条件的中断。可以认为dr管理器510检测到中断的指示,其中,该指示是已经发生的实际中断的任何监视标志或线索。dr触发中断的示例可以包括第一云服务532a和企业网络118之间的连接的丢失或显着退化、一个或多个容器534的故障的指示、以及来自第一云服务532a的云服务供应商的指示服务中断的通知。

dr管理器510通过在编制引擎550上提供dr基础设施接口层522a以及在dr管理器510从托管dr基础设施的多个可用云服务中选择的第二云服务532b的预先存在的容器551a、551b、...551n(“容器551”)上提供dr基础设施层522b、524、526、528来响应中断的指示。dr管理器510可以快速暂停第一云服务532a的容器534的状态,并开始将代码和状态从容器534复制到数据存储器552,作为容器数据554,并且将寻址到容器534的应用流重定向到编制引擎550的dr基础设施接口层522a中的暂时服务请求队列536,而dr管理器510使dr基础设施层522b、524、526、528在第二云服务532b的容器551上启动并运行。为了dr管理器510暂停并复制第一云服务532a的容器534的容器状态,dr管理器510可以与dr管理器510预先安装在容器534上的状态复制模块442(如图6所示)连接,并且在dr管理器510快速读取状态时,根据需要,引导状态复制模块442在第一云服务532a中的本地存储器数据网格、数据库或其他存储器资源或数据存储器中保存未决状态。在一些示例中,数据存储器552可以表示redis数据存储器。容器数据554可以包括由容器执行的或在容器上存储或加载的应用程序代码、状态和/或其他数据。容器数据554可以包括用于云服务532a、532b的一个或多个容器的容器注册数据。

dr配置设置512可以包括用于由企业网络116部署到第一云服务532a的应用程序的接口层的api端点的定义。为了提供dr基础设施接口层522a,dr管理器510可以生成接口软件,以公开在dr配置设置512中定义的api端点。dr配置设置512可以包括用于企业116的多个不同应用程序的接口层的定义和/或用于各企业的多个不同应用程序的接口层的定义。以这种方式,dr管理器510可以为云交换供应商的多个不同企业客户提供dr服务,并生成dr基础设施接口层522a的对应实例,以处理针对不同企业客户的服务请求。

在该示例中,dr基础设施层522b、524、526、528包括dr基础设施接口层522b、dr基础设施网络层524、dr基础设施计算层526和dr基础设施存储层528,其可以分别执行接口/api、联网、计算和存储功能。在其他示例中,dr基础设施可以包括其他层和/或这些代表性层的子集。dr基础设施层522b、524、526、528中的每一个可以在第二云服务532b的一个或多个容器551上执行,并且用于dr基础设施的每个容器551可以用于dr基础设施层524、526、528中的一个或多个。dr基础设施层522b、524、526、528是图1的dr基础设施层144的示例实现方式。

可以是与图1的dr管理器141对应的实现方式的dr管理器510可以修改vrf242的路由信息,作为dr过程的一部分,以将云服务流量(例如,应用流量流)从企业网络118重定向到dr基础设施接口层522a。因此,dr管理器510可以将寻址到第一云服务532a的容器534的流量重定向到dr基础设施接口层522a,该dr基础设施接口层522a可以在云交换502的主机计算装置上执行并由云交换502供应商部署。一旦dr管理器510已经接收到dr基础设施接口层522b可操作为处理来自企业网络118的服务请求的指示,dr管理器510可以再次修改vrf242的路由信息,作为dr过程的一部分,以将寻址到第一云服务532a的容器534的流量重定向到所选择的第二云服务532b的相应复制容器551。

因此,编制引擎550可以创建从第一云服务中的企业或其他用户可访问的容器到为第二云服务中的动态提供的按需dr基础设施请求的容器的关联。基于容器的网络地址和由一个或多个服务密钥识别的一个或多个ip子网,编制引擎550可以将一个或多个服务密钥与在第二云服务处执行的请求的容器相关联,以将容器与提供一个或多个服务密钥的企业相关联。以这种方式,指定并用于dr基础设施的容器用编制引擎550注册到企业或其他用户。

编制引擎550可以在第一云服务和第二云服务之间建立新的虚拟电路。编制引擎550可以在企业网络118和第二云服务532b之间建立新的虚拟电路。容器可以经由虚拟电路(例如,vlan)向编制引擎550提供其对应的容器注册数据。容器热交换管理器540和dr管理器510可以是供应商中立的,因为云交换供应商可以结合企业可选择的多个云服务供应商中的任何一个来实现容器热交换管理器540和/或dr管理器510。在一些情况下,编制引擎550可以独立地将容器部署到云服务,以便促进容器热交换管理器540的后端设置。

图8是示出根据本公开的技术的示例方法的流程图。参考图1和图5,描述图8;然而,图8通常可以适用于本公开的技术。在一些示例中,第一容器(例如容器126a)可以与第二容器(例如,容器129a)进行通信。在一个示例中,容器126a可以生成到容器129a的第一数据通信(602)。第一数据通信可以指示容器129a的容器标识符和在云服务124b处执行和托管容器129a的主机的网络地址。在一些示例中,容器标识符可以是识别主机的tcp/udp端口的端口id,并且网络地址可以是可以通过其到达主机的ip地址。容器126a可以将第一数据通信传输到云交换的路由器,例如,路由器110a(604)。路由器110a可以通过云交换将消息转发到主机执行容器129a。容器126a可以从容器129a接收第二数据通信(606)。第二数据通信可以指示容器126a的容器标识符和在云服务124a处执行和托管容器126a的主机的网络地址。

图9是示出根据本公开的技术的用于确定容器的健康的示例方法的流程图。参考图1和图5,描述图9;然而,图9通常可以适用于本公开的技术。根据本公开的技术,在一些示例中,第一容器(例如,容器126a)可以监视第二容器(例如,云服务124b的129a)的健康。在一些示例中,容器126a可以通过向容器129a传输回响请求分组来检查容器129a的健康(702)。容器126a可以确定是否接收到回响响应分组(704)。如果没有接收到回响响应分组,则容器126a可以确定容器129a是不健康的(706)。如果接收到回响响应分组,但是接收回响响应分组所花费的时间(即,往返时间)超过预定的最大阈值时间(708),则容器126a可以确定容器129a是不健康的(706)。如果往返时间小于预定的最大阈值时间,则容器126a可以确定容器129a是健康的(714)。这样,容器126a可以继续将流量引导到容器129a。

在一些示例中,如果容器126a确定容器129a是不健康的(706),则容器126a可以采取校正措施。在一些示例中,容器126a可以向编制引擎106发送请求,以在云服务124b中部署第二容器,例如,容器129b(710)。在进一步的示例中,容器126a可以将指向容器129a的全部或部分网络流量重定向到新部署的容器,即,容器129b。在一些示例中,容器126a可以采取不同的措施,这取决于是否从未接收到回响响应分组还是接收到回响响应分组但是往返时间超过了最大允许响应时间。例如,如果容器126a从未接收到回应响应分组,则可以确定容器129a、主机执行容器126d、子网128b或云服务124b(如图5所示)中的一个或多个与网络断开连接。在该示例中,容器126a可以确定引导到容器129a的所有网络流量应该重定向到部署的容器129b或指示仍然健康和在线的另一容器,以确保不中断对客户的服务。在其他示例中,如果容器126a接收到回响响应分组,但是往返时间超过最大允许响应时间,则可以确定容器129a、主机执行容器126d、子网128b或云服务124b中的一个或多个超过容量,并且引导到容器129a的至少一部分网络流量应该重定向到新部署的容器129b,以确保客户体验不会受到不良网络连接速度的负面影响。

图10是示出用于传输容器的容器注册数据的示例方法800的流程图。在一个示例中,连接到云交换的多个专用网络中的专用网络内的容器可以将容器的容器注册数据发送到云交换(802)。在一些示例中,容器注册数据可以包括用于执行容器的主机的网络地址和容器的容器标识符。在一些示例中,网络地址可以是主机的ip地址。在一些示例中,容器标识符可以是识别主机的tcp或udp端口的端口id。在一些示例中,容器可以包括第一容器,并且容器注册数据可以包括第一容器注册数据。在一些示例中,容器可以从云交换接收第二容器的第二容器注册数据(804)。在一些示例中,容器可以基于第二容器注册数据将数据通信发送到第二容器(806)。

图11是示出根据本公开的技术的示例方法820的流程图。参考图1和图2,描述图11;然而,图11通常可以适用于本公开的各种技术中的任何技术。在一些示例中,云交换(例如,云交换102,并且在一些特定示例中,云交换102的编制引擎106的容器热交换管理器140)可以存储指示第一专用网络的第一容器与第二专用网络的第二容器(例如,csp122a的容器126a、csp122b的容器129a)的关联的数据,其中,第一专用网络和第二专用网络耦接到云交换,以经由云交换(822)发送和接收数据分组。基于由存储的数据指示的关联,云交换可以将第一专用网络的第一容器的状态发送到第二专用网络的第二容器(824),例如,在热交换或热缩放过程中。这可以在热缩放过程中应用于多个第二容器,并且第二容器可以接管第一容器的全部或部分处理或执行。

图12是示出根据本公开的技术的示例方法840的流程图。参考图1和图3,描述图12;然而,图12通常可以适用于本公开的各种技术中的任何技术。在一些示例中,云交换(例如,云交换102,并且在一些特定示例中,云交换102的编制引擎106的dr管理器141)可以检测由耦接到云交换以经由云交换发送和接收数据分组的第一云服务供应商网络提供的第一云服务中断的指示(例如,云服务124a的中断)(842)。云交换(例如,云交换102,并且在一些特定示例中,云交换102的编制引擎106的dr管理器141)可以响应于检测到第一云服务中断的指示,而在由耦接到云交换以经由云交换发送和接收数据分组的第二云服务供应商网络提供的第二云服务的容器中提供灾难恢复基础设施层(844)。云交换(例如,云交换102,并且在一些特定示例中,云交换102的编制引擎106的dr管理器141)可以从第一云服务的容器获得代码和状态(846)。云交换(例如,云交换102,并且在一些特定示例中,云交换102的编制引擎106的dr管理器141)可以将代码和状态传送到第二云服务的容器中的灾难恢复基础设施层(848)。云交换(例如,云交换102,并且在一些特定示例中,云交换102的编制引擎106的dr管理器141)还可以缓冲来自企业的服务请求,并且随后在第二云服务处提供dr基础设施之后,将缓冲的服务请求输出到第二云服务的容器中的灾难恢复基础设施层。

虽然在本文的一些示例中提到了诸如docker、lxc和coreosrocket容器等容器的特定实现方式,但是各种实施例也可以使用或体现为容器的其他类型和变体,这些容器可能不一定符合任何特定容器实现方式的定义或规范的所有方面。在本文中对docker容器的具体示例的所有引用可以被理解为类似地包含其他类型的容器和虚拟机的其他类型的轻量级对应物,轻量级对应物可以提供用于执行微服务或其他应用程序的虚拟化环境,而不包括完整的虚拟机的整组特征。

图13是示出根据本公开的一种或多种技术操作的计算装置的一个示例的方框图。图13可以示出服务器、如图5所示的主机304、或者实现云交换102或其任何部分或者包括用于执行互连平台应用924的至少一部分的一个或多个处理器902的另一计算装置900、或者在本文中描述的任何其他计算装置的特定示例。在其他情况下,可以使用计算装置900的其他示例。尽管为了示例的目的,在图13中示出为独立计算装置900,但是计算装置可以是任何部件或系统,该部件或系统包括一个或多个处理器或用于执行软件指令的其他合适计算环境,并且例如不一定包括在图13所示的一个或多个元件(例如,通信单元906;并且在一些示例中,诸如存储装置908等部件可以不与其他部件共同定位或位于相同的底盘中)。计算装置900可以在例如另一互连设施处、或者由主机托管设施或云交换供应商利用或使用的分支机构或云计算环境处定位,并且运行。

如图13的具体示例中所示,计算装置900包括一个或多个处理器902、一个或多个输入装置904、一个或多个通信单元906、一个或多个输出装置912、一个或多个存储装置908以及一个或多个用户接口(ui)装置910。在一个示例中,计算装置900进一步包括存储在一个或多个存储装置908上并且可由计算装置900执行的一个或多个应用程序922、互连平台应用程序924和操作系统916。部件902、904、906、908、910和912中的每一个耦接(物理地、通信地和/或可操作地),用于部件间通信。在一些示例中,通信通道914可以包括系统总线、网络连接、过程间通信数据结构、或用于在计算装置900的各种其他部件之间传送数据的任何其他方法。作为一个示例,部件902、904、906、908、910和912可以通过一个或多个通信通道914耦接。

在一个示例中,处理器902被配置为实现用于在计算装置900内执行的功能和/或处理指令。例如,处理器902能够处理存储在存储装置908中的指令。处理器902的示例可以包括微处理器、控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或等效的分立或集成逻辑电路中的任何一个或多个。

一个或多个存储装置908可以被配置为存储在操作期间在计算装置900内信息。在一些示例中,存储装置908被描述为计算机可读存储介质。在一些示例中,存储装置908是暂时性存储器装置,意味着存储装置908的主要目的不是长期存储。在一些示例中,存储装置908被描述为易失性存储器装置,意味着当计算机关闭时,存储装置908不保持所存储的内容。易失性存储器装置的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域中已知的其他形式的易失性存储器装置。在一些示例中,存储装置908用于存储程序指令,以供处理器902执行。在一个示例中,存储装置908由在计算装置900上运行的软件或应用程序使用,以在程序执行期间暂时存储信息。

在一些示例中,存储装置908还包括一个或多个计算机可读存储介质。存储装置908可以被配置为比易失性存储器存储更大量的信息。存储装置908还可以被配置为长期存储信息。在一些示例中,存储装置908包括非易失性存储元件。这种非易失性存储元件的示例包括磁性硬盘、光盘、软盘、闪存、或电可编程存储器(eprom)或电可擦除和可编程(eeprom)存储器的形式。

在一些示例中,计算装置900还包括一个或多个通信单元906。在一个示例中,计算装置900利用通信单元906来经由一个或多个网络与外部装置通信,例如,一个或多个有线/无线/移动网络。通信单元906可以包括网络接口卡,例如,以太网卡、光学收发器、射频收发器或可以发送和接收信息的任何其他类型的装置。这种网络接口的其他示例可以包括3g、4g和wifi无线电。在一些示例中,计算装置900使用通信单元906来与外部装置通信。

在一个示例中,计算装置900还包括一个或多个用户接口装置910。在一些示例中,用户接口装置910被配置为通过触觉、音频或视频反馈从用户接收输入。用户接口装置910的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄影机、麦克风或用于检测来自用户的命令的任何其他类型的装置。在一些示例中,存在敏感显示器包括触敏屏幕。

一个或多个输出装置912也可以包括在计算装置900中。在一些示例中,输出装置912被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出装置912包括存在敏感显示器、声卡、视频图形适配器卡或用于将信号转换成人或机器可理解的适当形式的任何其他类型的装置。输出装置912的额外示例包括扬声器、阴极射线管(crt)监视器、液晶显示器(lcd)或可以向用户生成可理解的输出的任何其他类型的装置。

计算装置900可以包括操作系统916。在一些示例中,操作系统916控制计算装置900的各部件的操作。例如,在一个示例中,操作系统916促进一个或多个应用程序922和互连平台应用924与处理器902、通信单元906、存储装置908、输入装置904、用户接口装置910和输出装置912的通信。应用程序922和互连平台应用924还可以包括计算装置900可执行的程序指令和/或数据。互连平台应用924可以被配置为当由计算装置900执行时,提供归因于在本文中描述的互连平台的功能,包括互连平台103及其部件或特征,例如,热交换管理器140和编制引擎106,如图1和图2所示。

例如,互连平台应用924可以包括热交换管理器926和/或灾难恢复(dr)管理器928。热交换管理器926和/或dr管理器928可以实现为应用模块、库、特征、或者可执行指令代码的其他部分,作为互连平台应用924的一部分。在其他示例中,热交换管理器926和/或dr管理器928可以实现为单独的应用程序或任何其他形式的可执行指令代码。

热交换管理器926可以包括用于促使计算装置900执行在本公开中例如,相对于如上所述的热交换管理器140和/或热交换管理器540描述的任何技术的指令。作为一个示例,热交换管理器926可以包括促使计算装置900(在计算装置900、编制引擎106、网络平台108、和/或如图1-3所示的一个或多个路由器110/200和/或任何其他计算或网络资源中的任何一个或多个上)存储指示第一专用网络的第一容器与第二专用网络的第二容器的关联的数据的指令,其中,第一专用网络和第二专用网络耦接到云交换106,以经由云交换106发送和接收数据分组。热交换管理器926还可以包括促使计算装置900、编制引擎106、网络平台108、和/或如图1-3所示的一个或多个路由器110/200和/或任何其他计算或网络资源,基于该关联将第一容器的状态发送到第二容器的指令。热交换管理器926还可以包括促使计算装置900根据本公开的技术执行热交换和/或热缩放过程的任何其他功能的指令。

dr管理器928可以包括用于促使计算装置900执行本公开中例如,相对于如上所述的dr管理器141和/或dr管理器510描述的任何技术的指令。dr管理器928可以包括用于促使计算装置执行本公开中相对于dr管理器141和/或dr管理器510描述的技术的指令。作为一个示例,dr管理器928可以包括指令,这些指令促使计算装置700检测到第一云服务供应商网络中断,提供暂时dr基础设施接口层以缓冲服务请求队列,选择备份云服务供应商网络,在备份云服务供应商网络的容器中提供dr基础设施层,将代码和状态从第一云服务供应商网络的容器复制到dr基础设施层,将来自暂时dr基础设施接口层的缓冲服务请求应用于在备份云服务供应商网络处的dr基础设施接口层,将输入服务请求重定向到备份云服务供应商网络,并根据本公开的技术执行dr过程的任何其他功能。

因此,本公开的通常涉及虚拟网络的各种实施例可以根据编号为a1-a20的以下示例实现:

示例a1.一种方法,包括:由容器经由云交换的互连平台公开的应用程序编程接口向云交换发送容器的容器注册数据,所述容器注册数据包括执行容器的主机的网络地址和容器的容器标识符。

示例a2.根据示例a1所述的方法,其中,所述容器标识符包括传输控制协议(tcp)端口和用户数据报协议(udp)端口中的一个。

示例a3.根据示例a1或a2所述的方法,其中,所述容器包括共享在主机上执行的操作系统的多个用户空间实例中的用户空间实例。

示例a4.根据示例a1-a3中任一项所述的方法,其中,所述容器在耦接到云交换以经由一个或多个虚拟电路从耦接到云交换的一个或多个云服务供应商接收云服务的企业网络处执行。

示例a5.根据示例a4所述的方法,其中,发送容器注册数据包括经由一个或多个虚拟电路发送容器注册数据。

示例a6.根据示例a1-a5中任一项所述的方法,其中,所述容器在耦接到所述云交换以经由一个或多个虚拟电路向耦接到云交换的一个或多个客户提供云服务的云服务供应商网络处执行。

示例a7.根据示例a6所述的方法,其中,发送容器注册数据包括经由一个或多个虚拟电路发送容器注册数据。

示例a8.根据示例a1-a7中任一项所述的方法,其中,所述容器包括第一容器,并且其中,所述容器注册数据包括第一容器注册数据,所述方法还包括:所述容器从云交换接收第二容器的第二容器注册数据;并且所述容器基于第二容器注册数据向第二容器发送数据通信。

示例a9.根据示例a8所述的方法,其中,所述第一容器在耦接到云交换的第一专用网络处执行,并且其中,所述第二容器在耦接到云交换的第二专用网络处执行。

示例a10.根据示例a9所述的方法,其中,所述第一专用网络包括云交换的云交换供应商的企业客户的企业网络,并且其中,所述第二专用网络包括云交换的云交换供应商的云服务供应商客户的云服务。

示例a11.根据示例a9所述的方法,其中,所述第一专用网络包括云交换的云交换供应商的第一云服务供应商客户的云服务,并且其中,所述第二专用网络包括云交换的云交换供应商的第二云服务供应商客户的云服务。

示例a12.根据示例a8所述的方法,还包括:所述第一容器通过发送数据通信至少部分地确定第二容器的健康;并且响应于确定第二容器的健康,将应用流量从第二容器重定向到第三容器。

示例a13.一种方法,包括:由云交换从在耦接到云交换的专用网络处执行的容器中接收容器的容器注册数据,所述容器注册数据包括执行容器的主机的网络地址和容器的容器标识符;并且由云交换存储所述容器注册数据。

示例a14.根据示例a13所述的方法,其中,所述容器包括第一容器,并且其中,所述专用网络包括第一专用网络,所述方法还包括:由云交换向在第二专用网络处执行的第二容器发送容器注册数据。

示例a15.根据示例a14所述的方法,还包括:存储指示第一容器和第二容器之间的关联的数据,其中,发送容器注册数据包括基于指示所述关联的数据发送容器注册数据。

示例a16.根据示例a14所述的方法,还包括:由云交换接收来自企业的关联的指示。

示例a17.根据示例a13-a16中任一项所述的方法,还包括:由云交换通过向容器发送数据通信来至少部分地确定容器的健康,所述数据通信包括容器注册数据。

示例a18.根据示例a17所述的方法,还包括:响应于确定容器不健康,将容器移动到另一专用网络。

示例a19.根据示例a17所述的方法,还包括:响应于确定容器不健康,将应用流量从容器重定向到在不同专用网络处执行的另一容器。

示例a20.根据示例a17所述的方法,还包括:由云交换存储容器的指示在容器上执行的一个或多个应用程序的状态的状态,其中,将容器移动到另一专用网络包括将容器的状态发送到另一专用网络。

示例a21.根据示例a13-a20中任一项所述的方法,还包括:由云交换将虚拟电路配置到专用网络,其中,接收容器注册数据包括通过虚拟电路接收容器注册数据。

示例a22.根据示例a13-a21中任一项所述的方法,还包括:由云交换基于容器注册数据向容器发送数据通信。

示例a23.一种计算装置,包括:至少一个处理器,其可操作地耦接到存储器;内核,其被配置为由至少一个处理器执行;以及容器,其被配置为由内核执行,其中,容器包括网络模块,其被配置为经由云交换的互连平台公开的应用程序编程接口将容器注册数据输出到云交换,所述容器注册数据包括执行容器的主机的网络地址和容器的容器标识符。

示例a24.一种云交换,包括:网络;以及互连平台,其被配置为将网络配置为互连多个专用网络,其中,所述云交换被配置为从在多个专用网络中的专用网络处执行的容器中并且经由互连平台接收容器的容器注册数据,所述容器注册数据包括执行容器的主机的网络地址和容器的容器标识符。

示例a25.一种方法,包括:由耦接到云交换的多个专用网络的第一专用网络的第一容器向云交换的路由器,传输第一数据通信,以请求耦接到云交换的多个专用网络中的第二专用网络的第二容器的健康的指示;并且由第一容器从路由器中接收由耦接到云交换的多个专用网络中的第二专用网络的第二容器发起的第二数据通信,所述第二数据通信指示所述第二容器的健康。

示例a26.根据示例a25所述的方法,还包括:由第一容器基于第二数据通信确定第二容器的健康;并且在确定第二容器是不健康的时,由第一容器部署第三容器。

示例a27.根据示例a25或a26所述的方法,其中:所述第一数据通信包括回响请求分组;所述第二数据通信包括回响响应分组;并且由第一容器确定第二容器的健康,包括:如果第一容器在预定时间内没有接收到回响响应分组,则由第一容器确定第二容器是不健康的。

示例a28.根据示例a25-a27中任一项所述的方法,其中,所述第一数据通信包括:第二容器的容器标识符;以及在第二专用网络处执行的并且托管第二容器的主机的网络地址。

因此,通常涉及通过虚拟网络进行热交换和热缩放的容器间通信的本公开的各种实施例可以根据编号为b1-b20的以下示例实现:

示例b1.一种方法,包括:利用云交换的至少一个处理器,存储指示第一专用网络的第一容器与第二专用网络的第二容器的关联的数据,其中,所述第一专用网络和所述第二专用网络耦接到云交换,以经由云交换发送和接收数据分组;利用云交换的至少一个处理器,基于所述关联,将第一容器的状态发送给第二容器。

示例b2.根据示例b1所述的方法,还包括:由云交换从企业网络接收云服务流量;由云交换将云服务流量从第一容器重定向到第二容器。

示例b3.根据示例b1或b2中任一项所述的方法,其中,所述状态使得第二容器能够复制第一容器的操作环境。

示例b4.根据示例b1-b3中任一项所述的方法,其中,所述第一容器的状态包括以下中的一个或多个:应用数据、应用栈配置数据、微服务状态、存储器数据、命令、处理信息和当前指令指针。

示例b5.根据示例b1-b4中任一项所述的方法,其中,在第一容器执行一个或多个应用程序的同时,执行将状态从第一容器复制到第二容器。

示例b6.根据示例b1-b5中任一项所述的方法,还包括经由云交换向第一容器注册第二容器的注册句柄。

示例b7.根据示例b6所述的方法,其中,所述注册句柄包括用于执行第二容器的第二专用网络的主机的网络地址以及用于第二容器的容器标识符。

示例b8.根据示例b6所述的方法,其中,将状态从第一容器复制到第二容器包括第一容器使用注册句柄经由云交换将状态传送到第二容器。

示例b9.根据示例b1-b8中任一项所述的方法,其中,将第一容器的地址与第二容器相关联包括向容器信息的数据存储器注册第二容器的统一资源标识符(uri)。

示例b10.根据示例b1-b9中任一项所述的方法,还包括在将第一容器的地址与第二容器相关联之前,利用云交换创建第二容器。

示例b11.根据示例b1-b10中任一项所述的方法,还包括:在第一容器和第二容器之间划分来自第一容器的任务,其中,针对划分给第二容器的任务执行将状态从第一容器复制到第二容器。

示例b12.根据示例b11所述的方法,其中,在第一容器和第二容器之间划分来自第一容器的任务包括根据一个或多个基于内容的策略和一个或多个规则将工作负荷的单元从第一容器发送到第二容器。

示例b13.根据示例b1-b12中任一项所述的方法,还包括:利用云交换来维持容器注册信息的数据存储,其中,所述容器注册信息包括将第一容器的地址与第二容器相关联的数据。

示例b14.根据示例b1-b13中任一项所述的方法,其中,响应于客户输入的请求,执行将第一容器的地址与第二容器相关联并将状态从第一容器复制到第二容器。

示例b15.根据示例b1-b14中任一项所述的方法,其中,响应于一个或多个客户选择的热交换配置标准,执行将第一容器的地址与第二容器相关联并将状态从第一容器复制到第二容器。

示例b16.根据示例b15所述的方法,还包括利用云交换提供用于接收客户选择的热交换配置标准的接口,其中,所述客户选择的热交换配置标准包括客户选择的第一云服务供应商和客户选择的第二云服务供应商,并且其中,第一容器由客户选择的第一云服务供应商托管,并且云交换通过客户选择的第二云服务供应商创建第二容器。

示例b17.根据示例b15所述的方法,其中,所述一个或多个客户选择的热交换配置标准存储在云交换的编制引擎中。

示例b18.根据示例b1-b17中任一项所述的方法,其中,响应于由客户选择的时间表定义的时间,执行将第一容器的地址与第二容器相关联并将状态从第一容器复制到第二容器。

示例b19.根据示例b1-b18中任一项所述的方法,还包括:创建从第一容器到第二容器的通道;并且编制将状态从第一容器移动到第二容器。

示例b20.根据示例b1-b19中任一项所述的方法,还包括:在将状态从第一容器复制到第二容器之前,暂停第一容器的操作;并且在将状态从第一容器复制到第二容器之后,重新启动第二容器中的操作。

示例b21.根据示例b1-b20中任一项所述的方法,其中,所述第一容器包括来自共享在第一专用网络的主机上执行的操作系统的多个用户空间实例中的用户空间实例,并且其中,所述第二容器包括来自共享在第二专用网络的主机上执行的操作系统的多个用户空间实例中的用户空间实例。

示例b22.根据示例b1-b21中任一项所述的方法,其中,所述第二专用网络包括耦接到云交换以经由一个或多个虚拟电路向耦接到云交换的一个或多个企业网络提供云服务的云服务供应商网络。

示例b23.一种计算系统,包括:至少一个存储器装置;以及包括在云交换中的至少一个处理器,其可操作地耦接到所述至少一个存储器装置,并且被配置为执行指令,以:存储指示第一专用网络的第一容器与第二专用网络的第二容器的关联的数据,其中,所述第一专用网络和所述第二专用网络耦接到云交换,以经由云交换发送和接收数据分组;并基于该关联,将第一容器的状态发送到第二容器。

示例b24.根据示例b23所述的计算系统,其中,所述至少一个处理器还被配置为执行指令以:从企业网络接收云服务流量;并将云服务流量从第一容器重定向到第二容器。

示例b25.根据示例b23或b24中任一项所述的计算系统,其中,所述第一容器的状态包括以下中的一个或多个:应用数据、应用栈配置数据、微服务状态、存储器数据、命令、处理信息和当前指令指针,并且其中,所述状态使第二容器能够复制第一容器的操作环境。

示例b26.根据示例b23-b25中任一项所述的计算系统,其中,所述至少一个处理器还被配置为在第一容器正在执行一个或多个应用程序的同时,执行将状态从第一容器复制到第二容器的指令。

示例b27.根据示例b23-b26中任一项所述的计算系统,其中,所述至少一个处理器还被配置为执行经由云交换向第一容器注册所述第二容器的注册句柄的指令,其中,所述注册句柄包括执行第二容器的第二专用网络的主机的网络地址以及第二容器的容器标识符,并且其中,将状态从第一容器复制到第二容器包括第一容器使用注册句柄经由云交换将状态传送到第二容器。

示例b28.根据示例b23-b27中任一项所述的计算系统,其中,所述至少一个处理器还被配置为在将第一容器的地址与第二容器相关联之前执行创建第二容器的指令。

示例b29.根据示例b23-b28中任一项所述的计算系统,其中,所述至少一个处理器还被配置为执行指令以:在第一容器和第二容器之间划分来自第一容器的任务,其中,针对分配给第二容器的任务执行将状态从第一容器复制到第二容器,并且其中,在第一容器和第二容器之间划分来自第一容器的任务包括根据一个或多个基于内容的策略和一个或多个规则将工作负荷的单元从第一容器发送到第二容器。

示例b30.一种计算机可读存储介质,包括指令,用于促使云交换的至少一个可编程处理器配置为:存储指示第一专用网络的第一容器与第二专用网络的第二容器的关联的数据,其中,所述第一专用网络和所述第二专用网络耦接到云交换,以经由云交换发送和接收数据分组;基于所述关联,将第一容器的状态发送到第二容器;由云交换接收来自企业网络的云服务流量;并且由云交换将云服务流量从第一容器重定向到第二容器。

因此,通常涉及通过虚拟网络进行灾难恢复的容器间通信的本公开的各种实施例可以根据编号为c1-c20的以下示例实现:

示例c1.一种方法,包括:利用云交换,检测由耦接到云交换以经由云交换发送和接收数据分组的第一云服务供应商网络提供的第一云服务中断的指示;利用云交换,响应于检测到第一云服务中断的指示,在由耦接到云交换以经由云交换发送和接收数据分组的第二云服务供应商网络提供的第二云服务的容器中,提供灾难恢复基础设施层;利用云交换,从第一云服务的容器获得代码和状态;并且利用云交换,将代码和状态传送到第二云服务的容器中的灾难恢复基础设施层。

示例c2.根据示例c1所述的方法,还包括:利用云交换,从耦接到云交换以经由云交换发送和接收数据分组的企业网络接收云服务流量;并且,利用云交换,响应于检测到第一云服务中断的指示,将云服务流量从第一云服务的容器重定向到第二云服务的容器。

示例c3.根据示例c1或c2中任一项所述的方法,还包括:响应于检测到第一云服务中断的指示,利用云交换,提供用于由云交换响应于检测到第一云服务中断的指示而执行的灾难恢复基础设施接口层;利用云交换,接收来自耦接到云交换以经由云交换发送和接收数据分组的企业网络的服务请求,其中,将所述服务请求寻址到第一云服务;并且利用云交换,在第二云服务的容器中的灾难恢复基础设施层可操作为处理服务请求之前,存储服务请求。

示例c4.根据示例c3中的方法,还包括:响应于确定第二云服务的容器中的灾难恢复基础设施层可操作为处理服务请求,利用云交换,发送服务请求到第二云服务。

示例c5.根据示例c1-c4中任一项所述的方法,还包括:在第二云服务的容器中提供灾难恢复基础设施层之前,利用云交换,从多个可用云服务中选择第二云服务,以托管灾难恢复基础设施层。

示例c6.根据示例c1-c5中任一项的方法,其中,提供灾难恢复基础设施接口层和提供灾难恢复基础设施层由编制引擎的灾难恢复管理器执行。

示例c7.根据示例c1-c6中任一项的方法,其中,提供灾难恢复基础设施层包括在第二云服务的容器中提供接口层、存储层、计算层和网络层。

示例c8.根据示例c1-c7中任一项所述的方法,还包括在云交换的网络平台中提供虚拟电路,以在第一云服务的容器和第二云服务的容器之间传输数据分组。

示例c9.根据示例c8所述的方法,还包括经由虚拟电路,利用云交换,将代码和状态从第一云服务的容器传送到第二云服务的灾难恢复基础设施层的容器。

示例c10.根据示例c1-c9中任一项所述的方法,还包括:在从第一云服务的容器获得代码和状态之前,暂停第一云服务的一个或多个容器的操作;在将代码和状态传送到第二云服务的容器中的灾难恢复基础设施层之后,在第二云服务的容器中从第一云服务的一个或多个容器中重新开始操作。

示例c11.根据示例c10所述的方法,其中,暂停第一云服务的一个或多个容器的操作包括将锁定存储到第一云服务处的内存数据存储器中的状态。

示例c12.根据示例c1-c11中任一项所述的方法,其中,来自第一云服务的容器的状态包括以下中的一个或多个:应用数据、应用栈配置数据、微服务状态、存储器数据、命令、处理信息和指令指针。

示例c13.根据示例c1-c12中任一项所述的方法,其中,所述代码包括用于以下中的一个或多个的可执行指令代码:应用程序、应用程序专用库、微服务和微服务专用库。

示例c14.根据示例c1-c13中任一项所述的方法,其中,在第一云服务中的容器正在执行一个或多个应用程序的同时,执行从第一云服务中的容器中复制状态。

示例c15.根据示例c1-c14中任一项所述的方法,其中,检测第一云服务中断的指示包括:根据经由对云交换的用户输入选择的灾难恢复配置设置,来检测合格中断的指示。

示例c16.根据示例c15所述的方法,其中,所述灾难恢复配置设置包括:用于定义第一云服务中有资格作为合格中断的中断的标准;以及选择第二云服务的标准。

示例c17.根据示例c15所述的方法,还包括利用云交换提供用于接收用户输入以选择灾难恢复配置设置的接口。

示例c18.根据示例c1-c17中任一项所述的方法,还包括:利用云交换,将第一云服务的第一容器的容器标识符和网络地址与灾难恢复基础设施层的第二容器的容器标识符和网络地址相关联;并基于所述关联,将代码和状态从第一容器传送到第二容器。

示例c19.根据示例c1-c18中任一项所述的方法,还包括:在检测到第一云服务中断的指示之后,暂停对第一云服务的容器的服务请求;在将代码和状态传送到灾难恢复基础设施层之后,将服务请求重定向到第二云服务的容器中的灾难恢复基础设施层。

示例c20.根据示例c1-c19中任一项所述的方法,还包括在将代码和状态传送到第二云服务的容器中的灾难恢复基础设施层之后,在编制引擎的路由表中,用到灾难恢复基础设施层的容器的路由更新到第一云服务的容器的路由。

示例c21.一种计算系统,包括:至少一个处理器,其可操作地耦接到存储器;用于云交换的编制引擎,所述编制引擎被配置为由所述至少一个处理器执行,其中,所述编制引擎被配置为:检测由耦接到云交换以经由云交换发送和接收数据分组的第一云服务供应商网络提供的第一云服务中断的指示;响应于检测到第一云服务中断的指示,提供由耦接到云交换以经由云交换发送和接收数据分组的第二云服务供应商网络提供的第二云服务的容器中的灾难恢复基础设施层;从第一云服务的容器中获得代码和状态;并将代码和状态传送给第二云服务的容器中的灾难恢复基础设施层。

示例c22.一种计算机可读介质,包括指令,用于促使云交换的至少一个可编程处理器:检测由耦接到云交换以经由云交换发送和接收数据分组的第一云服务供应商网络提供的第一云服务中断的指示;响应于检测到第一云服务中断的指示,提供由耦接到云交换以经由云交换发送和接收数据分组的第二云服务供应商网络提供的第二云服务的容器中的灾难恢复基础设施层;从第一云服务的容器中获得代码和状态;并将代码和状态传送给第二云服务的容器中的灾难恢复基础设施层。

本公开中所描述的技术可至少部分地以硬件、软件、固件或其任何组合来实施。例如,所描述的技术的各个方面可以在一个或多个处理器内实现,包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的集成或离散逻辑电路以及这些部件的任何组合。术语“处理器”或“处理电路”通常可以指单独的或与其他逻辑电路相结合的任何前述逻辑电路、或任何其他等效电路。包括硬件的控制单元还可以执行本公开的一种或多种技术。

这种硬件、软件和固件可以在同一装置内或在单独的装置内实现,以支持本公开中描述的各种操作和功能。另外,任何所描述的单元、模块或部件可以一起或单独地实现为离散但可互操作的逻辑装置。将不同特征描述为模块或单元,旨在突出不同的功能方面,不一定暗示这些模块或单元必须由单独的硬件或软件部件实现。确切地说,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件部件执行,或者集成在公共或单独的硬件或软件部件内。

本公开中所描述的技术还可以在包含指令的计算机可读介质(例如,计算机可读存储介质)中体现或编码。在计算机可读存储介质中嵌入或编码的指令可以促使可编程处理器或其他处理器执行该方法,例如,当执行指令时。计算机可读存储介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存、硬盘、cd-rom、软盘、盒式磁带、磁性介质、光学介质或其他存储器装置和/或计算机可读介质。

在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语“非暂时性”可以指示不在载波或传播信号中体现存储介质。在某些示例中,非暂时性存储介质可以存储可以随时间变化的数据(例如,在ram或高速缓存中)。

已经描述了各种示例。这些和其他示例在以下权利要求的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1