CN110971442B - 在多云计算环境中迁移工作负载 - Google Patents

在多云计算环境中迁移工作负载 Download PDF

Info

Publication number
CN110971442B
CN110971442B CN201910567185.7A CN201910567185A CN110971442B CN 110971442 B CN110971442 B CN 110971442B CN 201910567185 A CN201910567185 A CN 201910567185A CN 110971442 B CN110971442 B CN 110971442B
Authority
CN
China
Prior art keywords
vce
heartbeat
vces
workloads
heartbeat signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910567185.7A
Other languages
English (en)
Other versions
CN110971442A (zh
Inventor
S·S·卡普
S·C·亚伯拉罕
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.)
Juniper Networks Inc
Original Assignee
Juniper Networks Inc
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 Juniper Networks Inc filed Critical Juniper Networks Inc
Publication of CN110971442A publication Critical patent/CN110971442A/zh
Application granted granted Critical
Publication of CN110971442B publication Critical patent/CN110971442B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • 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/2025Failover techniques using centralised failover control functionality
    • 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/2041Error 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 with more than one idle spare processing component
    • 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/2048Error 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 neither address space nor 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • 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)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Environmental & Geological Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

描述了用于检测一个或多个虚拟计算环境的故障并且引起工作负载的迁移的技术。在一些示例中,一种计算系统包括存储介质和具有对所述存储介质的访问的处理电路。处理电路被配置为与多个虚拟计算环境(VCE)通信,多个VCE包括第一VCE和第二VCE,其中多个VCE中的每个VCE由不同的公共云提供方操作。处理电路还被配置为向第一VCE部署一组工作负载,检测第一VCE的至少一部分的故障,并且响应于检测到故障而向第一VCE输出将该组工作负载中的工作负载集合传送到第二VCE的指令,从而引起该工作负载集合到第二VCE的迁移。

Description

在多云计算环境中迁移工作负载
技术领域
本公开涉及网络,并且更具体地涉及管理多云环境中的工作负载。
背景技术
在典型的云数据中心环境中,存在大量互连的服务器,这些服务器提供运行各种应用的计算和/或存储容量。例如,数据中心可以包括为订户(即,数据中心的客户)托管应用和服务的设施。例如,数据中心可以托管所有基础设施设备,诸如网络和存储系统、冗余电源和环境控制。在典型的数据中心中,存储系统和应用服务器的集群通过由一层或多层物理网络交换机和路由器提供的高速交换结构互连。更复杂的数据中心提供遍布全球的基础设施,其中订户支持设备位于各种物理托管设施中。
虚拟机是一种基于机器级虚拟化的虚拟化方案。虚拟机包括客户操作系统,客户操作系统在主计算设备的管理程序上运行以模拟计算机的硬件以提供用于执行应用的新计算机环境。
容器化是一种基于操作系统级虚拟化的虚拟化方案。容器是适用于彼此隔离和与主机隔离的应用的轻量级和便携式执行环境。由于容器没有与主机硬件计算环境紧密耦合,因此应用可以绑定到容器映像,并且作为单个轻量级包在支持底层容器架构的任何主机或虚拟主机上执行。因此,容器解决了如何使软件在不同的计算环境中工作的问题。容器提供从一个计算环境到另一计算环境(虚拟的或物理的)一致运行的承诺。
由于容器固有的轻量级特性,单个主机可以支持比传统虚拟机(VM)多得多的容器实例。通常是短暂的容器可以比VM更有效地创建和移动,并且它们也可以作为逻辑相关元素的组来被管理(对于一些编排平台,有时称为“pod”,例如Kubernetes)。这些容器特性会影响容器网络解决方案的要求:网络应当灵活且可扩展。VM、容器和裸机服务器可能需要在相同云环境中共存,其中在各种应用部署之间启用通信。容器网络也应当是不可知的,以使用用于部署容器化应用的多种类型的编排平台工作。
管理用于应用执行的部署和基础设施的云计算基础设施可以涉及两个主要角色:(1)编排——用于跨主机群集来自动化应用的部署、扩展和操作,并且提供计算基础设施,其可以包括容器中心计算基础设施;以及(2)网络管理——用于在网络基础设施中创建虚拟网络,以实现在虚拟执行环境(诸如容器或VM)上运行的应用之间的通信以及在传统(例如,物理)环境上运行的应用之间的通信。软件定义的网络有助于网络管理。
多云环境是指将多个云用于计算和存储服务。企业可以利用内部部署计算和/或存储服务(例如,内部部署云)以及一个或多个外部部署云(诸如由第三方提供方托管的云)。云的示例包括私有云、公共云或混合公共/私有云,其允许易于扩展,同时允许不同级别的控制和安全性。企业可以基于所执行的应用的类型和企业的其他需求来利用私有云、公共云或混合公共/私有云中的一个或多个。
发明内容
一般而言,本公开描述了灾难恢复控制器监测多个虚拟计算环境(VCE)的健康并且触发由不同云服务提供方操作的VCE之间的工作负载的迁移的示例。更具体地,本公开的技术使得灾难恢复控制器能够确定多个VCE中的一个或多个VCE是离线的或者是完全或部分不可用的,并且输出将工作负载从一个或多个受影响的VCE迁移到其他在线VCE的指令。可以包括由多个VCE执行的虚拟机(VM)的心跳代理可以发出指示相应VCE在线的心跳信号。出于同样的原因,多个心跳代理对心跳信号的遗漏可以指示多个VCE中的至少一个中的系统故障。灾难恢复控制器可以被配置为接收心跳信号并且通过标识心跳信号遗漏来检测VCE是否离线。
在一些示例中,多个VCE可以定义被配置用于执行与客户相关联的应用和服务的多云环境。这样,通过使用多云环境,客户可以将工作负载部署到多个VCE中的每个VCE,其中多个VCE中的每个VCE由不同的云服务提供方操作。在多个VCE中的至少一个VCE中的系统故障的情况下,与客户相关联的至少一些应用和服务可能变得不可操作。例如,如果客户是视频流提供方,则如果至少一个VCE发生故障,则视频流提供方的用户可能无法流式传输视频。因此,通过将相关工作负载从功能失调的离线VCE迁移到功能性在线的VCE,与使用多云环境的客户相关联的至少一些应用和服务可以被恢复到可操作性。另外,在一些示例中,每个VCE可以确定工作负载的层次结构,其中“更重要的”工作负载在迁移上优先于“不太重要的”工作负载。
该技术可以提供一个或多个技术优势。例如,通过检测多个VCE中的至少一个VCE离线,灾难恢复控制器可以快速且有效地输出将工作负载从离线VCE迁移到在线且可操作的其他VCE的指令。因此,与迁移的工作负载相关联的应用和服务不可操作的时间量可以被减少,因为工作负载被快速迁移到被配置用于执行工作负载的功能性VCE。作为另一示例,通过将每个VCE中的一些工作负载优先化为“更重要”,离线VCE可以通过减少必须转移的数据量来更有效地将工作负载迁移到在线VCE。
在一个示例中,一种计算系统包括存储介质;以及具有对所述存储介质的访问的处理电路。处理电路被配置为与多个虚拟计算环境(VCE)通信,多个VCE包括第一VCE和第二VCE,其中多个VCE中的每个VCE由不同的公共云提供方操作,向第一VCE部署一组工作负载,检测第一VCE的至少一部分的故障,并且响应于检测到故障而向第一VCE输出将该组工作负载中的工作负载集合传送到第二VCE的指令,从而引起将工作负载集合迁移到第二VCE。
在另一示例中,一种方法包括通过处理电路与多个虚拟计算环境(VCE)通信,多个VCE包括第一VCE和第二VCE,其中多个VCE中的每个VCE由不同的公共云提供方操作。该方法还包括向第一VCE部署一组工作负载,检测第一VCE的至少一部分的故障,并且响应于检测到故障而向第一VCE输出将一组工作负载中的工作负载集合传送到第二VCE的指令,从而引起将工作负载集合迁移到第二VCE。
在另一示例中,一种非暂态计算机介质,包括用于引起一个或多个处理器与多个虚拟计算环境(VCE)通信的指令,多个VCE包括第一VCE和第二VCE,其中多个VCE中的每个VCE由不同的公共云提供方操作,向第一VCE部署一组工作负载,检测第一VCE的至少一部分的故障,并且响应于检测到故障而向第一VCE输出将一组工作负载中的工作负载集合传送到第二VCE的指令,从而引起工作负载集合到第二VCE的迁移。
在附图和以下描述中阐述了一个或多个示例的细节。根据说明书和附图以及权利要求,其他特征、目的和优点将很清楚。
附图说明
图1是示出被配置为根据本公开中描述的一个或多个示例技术进行通信的示例多云网络的框图;
图2是示出具有可以在其中实现本文中描述的技术的示例的数据中心的示例多云网络的框图;
图3是示出根据本公开中描述的一个或多个示例技术的在虚拟计算环境之间迁移工作负载的示例操作的流程图;
图4是示出根据本公开中描述的一个或多个示例技术的灾难恢复控制器的示例操作的流程图;
图5是示出根据本公开中描述的一个或多个示例技术的使用灾难恢复控制器来检测与多个心跳代理相关联的心跳信号遗漏的示例操作的流程图。
在整个说明书和附图中,相同的附图标记表示相同的元素。
具体实施方式
图1是示出被配置为根据本公开中描述的一个或多个示例技术进行通信的示例多云网络的框图。如图所示,多云网络10包括虚拟计算环境(VCE)12A-12C(统称为VCE 12)。VCE 12可以在公共、私有、混合或为各种应用提供存储和计算的其他“云”内提供。例如,多个工作负载(例如,工作负载19、工作负载21和工作负载23)可以被部署到VCE 12,多个工作负载表示可以由应用、服务等执行的工作。云可以是指可以被虚拟化以支持其上提供的一个或多个虚拟计算环境的计算基础设施,或者还可以或替代地是指虚拟计算环境本身。例如,VCE 12可以在托管在网络(例如,因特网)上的多个服务器上提供以存储、管理和处理数据,而不是在个人计算机上提供。在一些示例中,VCE 12中的一个或多个可以是企业的内部部署,而其他VCE 12是远程的。在一些示例中,所有VCE 12可以远离企业。在一些示例中,VCE 12中的至少一个包括由云服务提供方操作的虚拟私有云(VPC)。
租户(例如,企业或个人)可以使用一个或多个VCE 12来卸载可以在VCE 12的服务器上更快或更有效地处理的存储或计算能力。例如,与在个人计算机上或在内部部署的服务器内可获取的相比,VCE 12提供对更多存储器和/或其他存储的访问。与在个人计算机上或在内部部署的服务器内可获取的相比,VCE 12还可以提供更多的计算能力来处理复杂任务,诸如大数据处理。此外,VCE 12提供冗余存储。因此,租户越来越依赖于诸如多云网络10等网络。
然而,VCE 12的管理可能存在技术问题。VCE 12可以位于全世界的各个位置。租户可能需要来自VCE 12之一的数据被传输到另一VCE 12。因此,管理员需要在每个VCE 12之间建立通信链路以允许这种通信。由于VCE 12的远程位置,容置托管VCE 12的服务器的数据中心倾向于具有不同的管理员或技术规范,这些管理员或技术规范要求每个相应的VCE12被配置为与其他VCE 12通信。
此外,VCE 12中的每个托管多个不同的租户。因此,可能出现用于确保通信安全性的附加技术问题。例如,VCE 12A可以托管第一租户和第二租户的服务,并且VCE 12B可以托管第一租户和第三租户的服务。第三租户不应当能够访问VCE 12A为第一租户而传输给VCE12B的任何数据,并且第二租户不应当能够访问VCE 12B为第一租户而传输到VCE 12A的任何数据,除非适当的情况和/或授权另有规定。
VCE 12中的每个VCE可以由不同的云服务提供方操作。在一些示例中,操作VCE 12的云服务提供方可以包括VPC的管理员,诸如Amazon Web Services(AWS)、Google CloudPlatform(GCP)、Microsoft Azure等。另外地或替代地,VCE 12中的至少一个可以由VCE12s的租户自己操作。例如,租户可以操作定义VCE(例如,VCE 12A)的现场或“内部部署”云,并且租户还可以订阅操作由VCE 12B和VCE 12C给出的异地云(例如,VPC)的一个或多个云服务提供方的服务。换言之,多云网络10包括互相连接以彼此通信的多个VCE 12,其中VCE12中的每个VCE由不同的组织操作。
每个单独的VCE可以包括多个云。在一些示例中,VCE(例如,VCE 12B)可以包括分散在广泛地理区域上的多个云。各个VCE 12B的云服务提供方可以具有在VCE 12B本身内的云之间迁移工作负载21的能力。然而,VCE 12B失效事件的至少一部分可能发生。很多事件可能导致VCE 12B的故障,诸如自然灾害(例如,地震、飓风等)、电力故障和安全漏洞的任何组合。在VCE 12B部分离线或完全离线的情况下,VCE 12B的租户可能在其系统中遇到故障。在一个示例中,视频流服务可以操作网站,该网站使得客户能够访问网站并且选择要观看的视频。视频流服务可以将与网站相关联的至少一个工作负载部署到VCE 12B。在VCE 12B由于例如故障而离线之后,视频流服务的客户可能无法访问该网站或查看在该网站上链接的至少一个视频。为了快速且有效地转移工作负载,本公开的技术可以使得能够在VCE 12之间迁移工作负载(例如,将至少一些工作负载21从VCE 12B转移到VCE 12A和VCE 12C的任何组合),使得工作负载可以从由第一云服务提供方操作的第一VCE迁移到由第二云服务提供方操作的第二VCE。因此,在VCE中的特定VCE 12不能执行部署到特定VCE的一组工作负载的事件期间,可以将该组工作负载中的至少一些迁移到由不同的云服务提供方操作的功能性VCE。
本公开描述了控制器(例如,控制器14)的示例,该控制器可以允许具有单个玻璃窗用户界面的管理员控制多云网络10内的互连和安全性。例如,控制器14(可以是一个软件定义网络(SDN)控制器)为物理、虚拟、容器和下一代无服务器环境提供基于标准的联网和网络隔离软件。控制器14可以是集中的,和/或为在物理、虚拟、容器和无服务器环境中部署的工作负载提供多维分段和策略实施。例如,控制器14可以提供跨VCE 12的连接,并且跨混合云、多区域和站点以及计算基础设施实现基于策略的安全路由、连接和数据路径加密。
在一些示例中,控制器14在由网络管理员或与特定租户相关联的其他授权用户操作的计算设备上执行。然而,云(例如,一个或多个VCE 12)可以被视为简单的另一物理位置(或多个位置),尽管在虚拟化环境中操作。因此,控制器14不一定需要在网络管理员正在访问和/或操作的计算设备上执行,而是也可以在任何VCE 12内的虚拟化环境中执行。
网络管理员可以仅与控制器14接合以为多云租户和/或网络管理员的租户建立适当的安全的通信链路。例如,一些其他技术将要求网络管理员与VCE 12A的第一控制器、VCE12B的第二控制器等接合。利用示例技术,网络管理员可以经由单个窗格玻璃仅与控制器14接合以在VCE 12之间建立通信链路。
如图所示,VCE 12A包括控制器14、连接网关路由器16A、虚拟路由器(“vrouter”)18、工作负载19、存储设备24A和心跳代理26A。VCE 12B包括连接网关路由器16B、虚拟路由器(“vrouter”)20、工作负载21、存储设备24B和心跳代理26B。VCE 12C包括连接网关路由器16C、虚拟路由器(“vrouter”)22、工作负载23、存储设备24C和心跳代理26C。尽管VCE 12A、VCE 12B和VCE 12C每个被示出为具有单个vrouter(例如,分别为虚拟路由器18、虚拟路由器20和虚拟路由器22),但是VCE 12每个可以包括多个vrouter。例如,如果VCE 12A、VCE12B和VCE 12C跨多个服务器实现,则每个服务器可以执行相应的vrouter。下面更详细地描述连接网关路由器16A-16C(统称为“连接网关路由器16”)和虚拟路由器18、20和22的示例。通常,连接网关路由器16和虚拟路由器18、20和22是软件应用,该软件应用在远程数据中心内的相应服务器上执行。在一个或多个示例中,连接网关路由器16形成用于相应VCE 12的逻辑端点。例如,连接网关路由器16被配置为将数据从相应VCE 12路由到其他VCE 12。另外,工作负载19、21和23表示由与多云网络10的客户相关联的应用和服务执行的工作。这些工作负载可以由相应的虚拟路由器18、20和22以及物理服务器(未示出)执行。
例如,连接网关路由器16中的每个可以表示Amazon Web Services VPC虚拟网关、Google Cloud Router、或Tungsten Fabric或Contrail或OpenContrail Gateway、或用于虚拟计算环境的其他软件网关。
一旦数据到达VCE 12之一,连接网关路由器16可以不被配置为进一步路由相应的VCE 12内的通信。然而,示例技术不限于此,并且连接网关路由器16可以被配置为进一步路由相应VCE 12内的通信。
在一个或多个示例中,控制器14(例如,单个控制器14)可以被配置为在VCE 12之间建立通信链路。以这种方式,控制器14可以被配置为建立互连VCE 12的全网状通信隧道。在图1所示的示例中,连接网关路由器16A和16B经由隧道17A连接,连接网关路由器16B和16C经由隧道17B连接,并且连接网关路由器16C和16A经由隧道17C连接。以这种方式,隧道17A-17C表示用于VCE 12彼此通信的全网状通信隧道。以这种方式,连接网关路由器16中的每个形成相应VCE 12的逻辑隧道网格内的逻辑端点。
由于隧道17在物理连接的底层上形成覆盖,所以隧道17可以是逻辑隧道。作为一个示例,可以在因特网上形成隧道17。因此,隧道17表示VCE 12可以通过因特网互连的方式,而不管因特网隧道17用于通信的特定下层硬件组件。
控制器14可以以各种示例方式建立隧道17。作为一个示例,控制器14利用连接网关路由器16之间的因特网协议安全(IPSec)会话或安全套接字层(SSL)协议或转移层安全(TLS)协议来建立隧道17,使得VCE 12可以经由因特网进行通信。在一些示例中,控制器14可以利用路由器20与路由器22之间的IPSec会话,以及路由器20与可能的路由器18之间的IPSec会话,以用于经由因特网进行通信。作为一个示例,在控制器14处于公共或私有云中并且虚拟路由器20、22跨地理上分布的环境部署的示例中,控制器14在虚拟路由器20、虚拟路由器22和控制器14之间建立IPSec会话。在控制器14经由IPSec会话建立隧道17的示例中,相应的连接网关路由器16中的每个,虚拟路由器20和22可以使用封装在封装安全有效载荷(ESP)分组中的用户数据报(UDP)进行通信。
如图1的示例中所示,VCE 12B和VCE 12C分别包括虚拟路由器20和虚拟路由器22,这些虚拟路由器为多云网络10内的相应虚拟网络执行一个或多个路由实例以提供虚拟网络端点之间的虚拟网络接口和路由分组。每个路由实例可以与网络转发表相关联。每个路由实例可以表示用于因特网协议虚拟专用网络(IP-VPN)的虚拟路由和转发实例(VRF)。例如,由VCE 12B和12C的虚拟路由器20和虚拟路由器22接收的分组可以包括外部报头,以允许物理网络结构将有效载荷或“内部分组”隧道传输到物理网络地址,该物理网络地址执行虚拟路由器的网络接口卡。外部报头不仅可以包括服务器的网络接口卡的物理网络地址,还可以包括虚拟网络标识符,诸如VxLAN标签或多协议标签交换(MPLS)标签,该标签标识虚拟网络之一以及由虚拟路由器执行的相应路由实例。内部分组包括具有目的地网络地址的内部报头,该目的地网络地址符合由虚拟网络标识符标识的虚拟网络的虚拟网络寻址空间。
虚拟路由器20和22终止虚拟网络覆盖隧道,并且基于分组的隧道封装报头确定用于接收的分组的虚拟网络,并且将分组转发到适当的目的地虚拟网络端点,该目的地虚拟网络端点用于分组。例如,对于VCE 12B,对于从由VCE 12B托管的虚拟网络端点出站的每个分组,虚拟路由器20附加指示分组的虚拟网络的隧道封装报头以生成封装或“隧道”分组,并且虚拟路由器20经由用于虚拟网络的覆盖隧道将封装的分组输出到物理目的地计算设备,诸如另一VCE 12。如本文中使用的,虚拟路由器(例如,虚拟路由器20或虚拟路由器22)可以执行隧道端点的以下操作:封装由虚拟网络端点提供的内部分组,以生成隧道分组,并且解封装隧道分组,以获取内部分组从而路由到其他虚拟网络端点。
通过建立逻辑隧道网格,控制器14可以被配置为从逻辑隧道网格确定一个或多个逻辑隧道,以在第一VCE与第二VCE之间建立一个或多个通信链路。作为一个示例,作为建立逻辑隧道网格的一部分,控制器14可以确定隧道17A是用于VCE 12A和12B彼此通信的通信链路,隧道17B是用于VCE 12B和12C彼此通信的通信链路,并且隧道17C是用于VCE 12C和12A彼此通信的通信链路。
除了建立逻辑隧道网格之外,控制器14可以被配置为经由隧道17向VCE 12通告路线。控制器14可以以各种方式经由隧道17通告路线。作为一个示例,控制器14经由广播网关协议(BGP)通告路线。换言之,IPSec隧道建立的路线通告是经由BGP来进行的。
控制器14还可以被配置为确保VCE 12之间的安全通信。例如,如上所述,可能需要安全通信以确保非计划实体不能进入通信。作为一个示例,VCE 12C可以是专门配置有所建立的安全性以形成专用安全网络的私有云。作为一个示例,VCE 12B是部署在由防火墙23在概念上示出的防火墙后面的云。
如上所述,在一些示例中,控制器14使用IPSec会话建立逻辑隧道网格。基于在IPSec隧道建立的因特网密钥交换(IKE)阶段使用的特定授权,控制器14可以生成证书。
为了进一步确保安全通信,控制器14可以被配置为维护安全策略,该安全策略指示哪些隧道17被专门配置为承载加密或其他安全通信。控制器14可以在策略实施框架中包括每个流被启用的位。该位的状态指示工作负载分组(例如,数据)是否通过安全隧道传输以用于安全转发。
由于VCE 12易于发生故障,因此在VCE 12中的VCE(例如,VCE 12B)离线的情况下,本公开的技术可以使得能够在VCE 12之间迁移数据,其中VCE 12中的每个VCE由不同的云服务提供方操作。
工作负载表示可以由应用、服务等执行的工作。这样,工作负载可以表示由形成应用和服务的VM、容器、Kubernetes pod等的任何组合执行的工作。如图1中所示,工作负载19、工作负载21和工作负载23分别部署到VCE 12A、VCE 12B和VCE 12C。与特定租户相关联的工作负载可以部署到VCE 12的任何组合。在一个示例中,工作负载21由VCE 12A的计算基础设施执行,VCE 12A包括一个或多个虚拟路由器(例如,虚拟路由器18)、虚拟服务器或物理服务器。出于同样的原因,工作负载21由VCE 12B的计算基础设施执行,并且工作负载23由VCE 12C的计算基础设施执行。
存储设备24A-24C(统称为“存储设备24”)可以被配置为在操作期间在相应VCE 12内存储信息。存储设备24可以包括任何形式的计算机可读存储介质或计算机可读存储设备。在一些示例中,存储设备24包括短期存储器或长期存储器中的一个或多个。存储设备24可以包括例如随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、磁盘、光盘、闪存或各种形式的电可编程存储器(EPROM)或电可擦除可编程存储器(EEPROM)。在一些示例中,存储设备24用于存储程序指令以供VCE 12执行。
存储设备24可以由在相应VCE 12上运行的软件或应用使用以在程序执行期间临时存储信息。例如,存储设备24可以被配置为存储表示部署到VCE 12的多个工作负载中的至少一些工作负载的主数据和备份数据。这样的数据可以包括执行与该组工作负载相关联、由该组工作负载生成或者由该组工作负载使用的过程、状态信息和/或数据。在图1的示例中,工作负载21可以由VCE 12A的计算基础设施执行,VCE 12A可以包括一个或多个虚拟路由器、虚拟服务器或物理服务器。
例如,存储设备24A可以存储指示用于主要处理的工作负载19的数据,并且还用于在VCE 12A的至少一部分离线的事件期间实现至少一些工作负载19的迁移。以类似的方式,存储设备24B存储指示部署到VCE 12B的工作负载21的数据,并且存储设备24C存储指示部署到VCE 12C的工作负载23的数据。因此,在任何一个VCE12发生故障期间,通过迁移执行过程、状态信息和/或作为主要和/或备份数据存储在每个VCE 12内的数据,至少一些工作负载可以从相应的离线VCE迁移到至少一个可操作VCE。通常,实现这种迁移的底层计算基础设施以及存储指示由存储设备24存储的工作负载的冗余和/或备份数据的能力可以称为“复制基础设施”。
作为示例,具有对所述存储设备24的访问的处理电路(例如,多云网络10的物理计算基础设施)被配置为与每个VCE 12(包括第一VCE(例如,VCE 12B)和第二VCE(例如,VCE12A))通信,其中每个VCE 12由不同的公共云提供方操作。以这种方式,由不同的公共云提供方操作的VCE可以定义混合云,(诸如多云网络10,能够彼此通信并且交换数据)。由处理电路执行的控制器14被配置为将工作负载21部署到VCE 12B。多云网络10的处理电路的一部分被配置为检测VCE 12B的至少一部分的故障,并且响应于检测到故障而向VCE 12B输出指令,该指令用于将工作负载21中的工作负载集合传送到VCE 12A的,从而引起该工作负载集合到VCE12A的迁移。另外,该工作负载集合到VCE 12A的迁移通过利用由VCE 12B提供的复制基础设施来被执行,而不管VCE 12B的一部分的故障。存储在VCE 12B的存储设备24B内的底层计算基础设施和执行过程、状态信息和/或数据可以被认为是复制基础设施。控制器(例如,控制器28或能够访问多云网络10的另一系统或设备)可以利用或使用这样的复制基础设施来跨多云网络10执行迁移(例如,工作负载迁移),即使在检测到VCE 12B的故障的情况下。
在图1的示例中,心跳代理26A-26C(统称为“心跳代理26”)分别通过由控制器14建立的隧道17配置在VCE 12A、VCE 12B和VCE 12C内。心跳代理26可以是VM、容器、Kubernetespod等的任何组合。例如,心跳代理26占用相对少量的计算机存储器并且需要相对少量的计算资源来操作。每个心跳代理26传输多个心跳信号,其中多个心跳信号作为一系列转移被传输,这些传输可以以周期性速率、非周期性速率、间歇性或其他方式连续传输。在一个示例中,心跳代理26A以每秒一个心跳信号的周期性速率传输多个心跳信号。在其他示例中,周期性速率可以大于每秒一个心跳信号或者小于每秒一个心跳信号。在一些示例中,心跳代理26中的每个心跳代理可以以定制周期性速率传输心跳信号。在一个示例中,心跳代理26A可以以每秒一个心跳信号的第一定制周期性速率传输多个心跳信号,心跳代理26B可以以每秒两个心跳信号的第二定制周期性速率传输心跳信号,并且心跳代理26C可以以每秒五个心跳信号的第三定制周期性速率传输心跳信号。控制器14被配置为设置和修改与每个心跳代理26相关联的定制周期性速率。
由心跳代理26中的每个心跳代理传输的多个心跳信号可以指示相应VCE 12的健康状态。换言之,心跳代理(例如,心跳代理26A)可以传输多个心跳信号,其中多个心跳信号中的每个心跳信号指示相应VCE(即,VCE 12A)在线或健康。由于心跳代理26A以第一定制周期性速率连续传输多个心跳信号,因此心跳代理26A可以提供VCE 12A的接近或看似接近实时的状态更新。在VCE 12A停止执行其至少一些任务的情况下,心跳代理26A可以停止以周期性速率传输多个心跳信号。这种遗漏可以指示VCE 12A不能处理至少一些工作负载19,并且可以触发至少一些工作负载19到其他VCE 12的迁移。
灾难恢复控制器28被配置为从心跳代理26接收多个心跳信号序列。与心跳代理26一样,灾难恢复控制器28是由控制器14创建和部署的虚拟机。尽管灾难恢复控制器28在图1中被描绘为与VCE12分离,但是灾难恢复控制器28可以部署到任何VCE 12。换言之,灾难恢复控制器28可以被配置为在任何VCE 12内操作,并且灾难恢复控制器28可以替代地被配置为在VCE 12外部的单独计算系统中操作。灾难恢复控制器28被配置为在其中操作的示例单独计算系统可以包括裸机服务器或虚拟化执行环境(例如,容器或虚拟机)。
心跳代理26A-26C分别经由传输信道30A、传输信道30B和传输信道30C将心跳信号传输到灾难恢复控制器28。在灾难恢复控制器28部署到VCE 12之一的一些示例中,传输信道30A-30C(统称为“传输信道30”)可以通过隧道17和连接网关路由器16携带心跳信号。例如,如果灾难恢复控制器28部署到VCE 12A,则心跳代理26B被配置为经由传输信道30B将心跳信号传输到灾难恢复控制器28,传输信道30B穿过连接网关路由器16B、隧道17A和连接网关路由器16A。在灾难恢复控制器28部署到VCE 12之一的其他示例中,心跳代理26可以独立于连接网关路由器16和隧道17将心跳信号传输到灾难恢复控制器28。换言之,传输信道30可以连接心跳代理26和灾难恢复控制器28,而不穿过连接网关路由器16和隧道17。例如,软件程序可以监测多云网络10内的网关路由器16和隧道17,并且心跳代理26可以经由软件程序将心跳信号传输到灾难恢复控制器28。
灾难恢复控制器28被配置为监测从心跳代理26中的每个心跳代理接收心跳信号的接收速率。另外,灾难恢复控制器28被配置为存储定制周期性速率,在该速率上心跳代理26传输指示相应VCE 12可操作或“在线”的心跳信号。为了确定VCE 12中的VCE(例如,VCE12A)在线,灾难恢复控制器28期望从心跳代理26接收心跳信号,该接收以与心跳代理26A相关联的第一定制周期性速率进行。灾难恢复控制器28未接收到预期心跳信号的事件可以被称为“心跳信号遗漏”。
灾难恢复控制器28被配置为基于多个心跳信号序列确定与心跳代理26中的每个心跳代理相对应的心跳信号遗漏的数目。在一些示例中,为了确定与心跳代理(例如,心跳代理26B)相关联的心跳信号遗漏的数目,灾难恢复控制器28被配置为计算时间间隔,其中该时间间隔表示由心跳代理26B发出的心跳信号序列中的连续心跳信号之间的估计时间量。时间间隔可以基于与心跳代理26B相关联的周期性速率来计算,其中周期性速率表示当心跳代理26B在线时心跳代理26B发出心跳信号的速率。灾难恢复控制器28被配置为接收由心跳代理26B发出的心跳信号序列中的第一心跳信号,并且响应于接收到第一心跳信号而启动时间窗口。随后,灾难恢复控制器28标识在该时间窗口期间该时间间隔流逝的实例的数目,并且基于在该时间窗口期间该时间间隔流逝的实例的数目来标识心跳信号遗漏的数目。在灾难恢复控制器28接收到由心跳代理26B发出的心跳信号序列中的第二心跳信号之后,灾难恢复控制器28被配置为重置时间窗口。
例如,当VCE 12B在线时,如果心跳代理26B以每秒两个心跳信号的周期性速率传输心跳信号,如果在由灾难恢复控制器28从心跳代理26B接收的连续心跳信号之间超过约三秒通过,则灾难恢复控制器28标识与心跳代理26B相关联的六个心跳信号遗漏。出于同样的原因,如果灾难恢复控制器28在持续大于约7秒的时间段内没有从心跳代理26A接收到任何心跳信号,则灾难恢复控制器28标识可以归因于心跳代理26B的14个心跳信号遗漏。灾难恢复控制器28可以接近或看似接近实时地标识心跳信号遗漏。换言之,灾难恢复控制器28被配置为维持与心跳代理26中的每个心跳代理相关联的心跳信号遗漏的滚动计数。灾难恢复控制器28未能从心跳代理接收到预期心跳信号的每个事件,灾难恢复控制器28记录与相应的心跳代理相关联的心跳信号遗漏。
灾难恢复控制器28被配置为响应于确定与心跳代理26B相对应的心跳信号遗漏的数目超过心跳信号遗漏的阈值数目而确定VCE 12中的VCE(例如,VCE 12B)离线。在一些示例中,心跳信号的阈值数目定义连续心跳信号遗漏的数目(例如,6个连续心跳信号遗漏)。例如,如果心跳信号遗漏的阈值数目包括6个连续心跳信号遗漏,如果灾难恢复控制器28检测到与心跳代理26B相关联的6个连续心跳信号遗漏,则灾难恢复控制器28确定VCE 12B离线。由于心跳信号遗漏接近或看似接近实时地被记录,因此灾难恢复控制器28在标识出第六连续心跳信号遗漏之后立即确定VCE 12B离线。
在其他示例中,灾难恢复控制器28将心跳信号遗漏的阈值数目设置为预定数目的预期心跳信号内的心跳信号遗漏的阈值数目。例如,如果灾难恢复控制器28期望在一段时间内从心跳代理26A接收10个连续心跳信号,并且灾难恢复控制器28在该时间段内检测到5个心跳信号遗漏(即,灾难恢复控制器28接收到预期的10个连续心跳信号中的5个心跳信号),则灾难恢复控制器28可以确定VCE12A离线。
在确定特定VCE(例如,VCE 12B)离线之后,灾难恢复控制器28被配置为响应于确定VCE 12B离线而输出指令,该指令用于将部署到VCE 12B的工作负载21中的工作负载集合传送到多个VCE中的其他VCE(例如,VCE 12B和VCE 12C)。如上所述,存储设备24被配置为存储表示部署到各个VCE 12的多个工作负载的数据。这样,在灾难恢复控制器28确定VCE 12B离线之后,灾难恢复控制器28向控制器14输出将部署到VCE 12B的工作负载21中的工作负载集合传送到VCE 12A和12C的任何组合的指令。该工作负载集合的转移通过利用由VCE12B提供的复制基础设施来被执行,而不管VCE 12B的一部分的故障。例如,VCE 12B的复制基础设施可以在存储设备24B中存储表示和/或复制该工作负载集合的数据,并且复制基础设施可以用于将该数据转移到其他VCE。
换言之,在“离线”状态期间,VCE 12B的虚拟路由器20可能变得不可操作(例如,不能执行至少一些工作负载21)。然而,VCE12B仍然能够使用例如包含与所部署的工作负载相对应的复制数据的冗余和/或地理上不同的数据中心将数据从存储设备24B转移到VCE 12A和VCE 12C。在这样的示例中,存储设备24B可以表示地理上分布的数据存储系统,该系统跨越多个数据中心。。VCE12A-12C每个由不同的云服务提供方操作。这样,响应于从灾难恢复控制器28接收到VCE 12B离线的指令,控制器14可以指示VCE12B将表示部署到VCE 12B的至少一些工作负载21的复制的数据(其可以存储为VCE 12B的复制基础架构的一部分)转移到由不同提供方操作的虚拟云环境。因此,响应于这样的指示,VCE 12B可以将数据转移到VCE12A和VCE 12C的任何组合。
在一些示例中,在VCE 12B故障后,并非部署到VCE 12B的工作负载21中的每个工作负载都必须被转移到其他VCE。每个VCE可以独立地确定在系统发生故障时要转移的工作负载。例如,VCE12B可以将工作负载21中的工作负载集合标识为“必要的”。在基本工作负载被转移之后,它们可以由其他VCE(即,VCE 12A和VCE12C)执行。
在一些示例中,VCE 12的云服务提供方维护包括多于一类服务的订阅服务。例如,VCE 12B可以处理与订阅高质量服务类别的客户相关联的工作负载,并且还处理与订阅低质量服务类别的客户相关联的工作负载。在VCE 12B离线之后,它可以将与高质量服务类别相关联的工作负载转移到可操作VCE(即,VCE 12A和VCE 12C)。这样,与高质量服务类别相关联的工作负载由VCE 12A和VCE 12C执行,并且在一些示例中,与低质量服务类别相关联的工作负载不执行,直到VCE 12B重新在线。
在一些示例中,离线VCE可以通过连接网关路由器16和隧道17将工作负载转移到可操作VCE。在其他示例中,VCE可以经由独立于连接网关路由器16和隧道17的单独通信链路来交换工作负载。
尽管图1示出了3个VCE(即,VCE 12A、VCE 12B和VCE 12C)作为多云网络10的一部分,但是在图1中未示出的其他示例中,多云网络10可以包括少于3个VCE或多于3个VCE。
图2是示出具有可以在其中实现本文中描述的技术的示例的数据中心的示例多云网络的框图。图2示出了容纳形成相应VCE 12的服务器的数据中心32A-32X。作为一个示例,数据中心32A容纳服务器34A-34N,服务器34A-34N可以被配置为提供VCE 12A的基础设施。其他数据中心32可以基本上类似于数据中心32A,但是可以容纳其他VCE 12的服务器。此外,一个或多个数据中心32可以容纳多个VCE 12的服务器。
如图所示,数据中心32A-32X(统称为“数据中心32”)彼此互连并且通过服务提供方网络33与与客户46相关联的客户网络互连。通常,每个数据中心32A为通过服务提供方网络33耦合到数据中心的客户46的应用和服务提供操作环境。操作数据中心32可以是例如主机基础设施设备,诸如网络和存储系统、冗余电源和环境控件。服务提供方网络33可以耦合到由其他提供方管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,因特网)的一部分。
在一些示例中,每个数据中心32可以表示很多地理上分布的网络数据中心之一。如图2的示例中所示,每个数据中心32可以表示为客户46提供网络服务的设施。客户46可以是集体类别,诸如企业和政府或个人。例如,网络数据中心可以托管为若干企业和最终用户提供web服务的虚拟计算环境(例如,云)。其他示例性服务可以包括数据存储、虚拟专用网络、流量工程、文件服务、数据挖掘、科学或超级计算等。在一些示例中,每个数据中心32可以是单独的网络服务器、网络对等体等。
在所示示例中,每个数据中心32包括通过由一层或多层物理网络交换机和路由器提供的高速交换结构35互连的一组存储系统和应用服务器34A-34N(这里是“服务器34”)。交换结构35由耦合到机架交换机42A-42Y(统称为“机架交换机42”)的分配层的一组互连的架顶式(TOR)交换机40A-40N(统称为“TOR交换机40”)提供。尽管未示出,但是每个数据中心32还可以包括例如一个或多个非边缘交换机、路由器、集线器、网关、安全设备(诸如防火墙、入侵检测和/或入侵防御设备)、服务器、计算机终端、笔记本电脑、打印机、数据库、无线移动设备(诸如手机或个人数字助理)、无线接入点、网桥、电缆调制解调器、应用加速器或其他网络设备。
在该示例中,TOR交换机40和机架交换机42向服务器34提供到IP结构44和服务提供方网络33的冗余(多宿主)连接。机架交换机42聚合业务流并且提供TOR交换机40之间的高速连接。DOR交换机40可以是提供第二层(例如,MAC)和/或第3层(例如,IP)路由和/或交换功能的网络设备。TOR交换机40和机架交换机42的每个可以包括一个或多个处理器和存储器,并且能够执行一个或多个软件过程。机架交换机42耦合到IP结构44,IP结构44执行第3层路由以通过服务提供方网络33在数据中心32与客户46之间路由网络业务。
如下面关于虚拟路由器21A进一步描述的,通过使用它们之间的动态“隧道”网格,在虚拟化服务器12的内核或管理程序中运行的虚拟路由器在物理底层网络之上创建虚拟覆盖网络。例如,这些覆盖隧道可以是MPLS over GRE/UDP隧道、或VXLAN隧道、或NVGRE隧道。底层物理路由器和交换机可以不包含虚拟机或其他虚拟执行元件的任何每个租户状态,诸如任何媒体访问控制(MAC)地址、IP地址或策略。例如,底层物理路由器和交换机的转发表可以仅包含物理服务器12的IP前缀或MAC地址。(将虚拟网络连接到物理网络的网关路由器或交换机是例外并且可以包含租户MAC或IP地址。)
服务器34的虚拟路由器48A-48N(统称为“虚拟路由器48”)通常包含每个租户状态。例如,它们可以每个虚拟网络包含单独的转发表(路由实例)。该转发表包含虚拟机或其他虚拟执行元件(例如,pod或容器)的IP前缀(在第3层覆盖的情况下)或MAC地址(在第2层覆盖的情况下)。没有单个虚拟路由器48需要包含整个数据中心中的所有虚拟机的所有IP前缀或所有MAC地址。给定虚拟路由器48仅需要包含本地存在于服务器34上的那些路由实例(即,其具有存在于服务器34上的至少一个虚拟机)。
服务器34中的一个或多个每个可以包括虚拟路由器48,虚拟路由器48为数据中心32A内的相应虚拟网络执行一个或多个路由实例,以提供虚拟网络接口并且在虚拟网络端点之间路由分组。每个路由实例可以与网络转发表相关联。每个路由实例可以表示用于因特网协议虚拟专用网络(IP-VPN)的虚拟路由和转发实例(VRF)。由服务器34A的虚拟路由器48A(例如从数据中心32A的底层物理网络结构(即,IP结构44和交换结构35))接收的分组可以包括外部报头,以允许物理网络结构将有效载荷或“内部分组”隧道传输到用于执行虚拟路由器的服务器34A的网络接口卡(未示出)的物理网络地址。外部报头不仅可以包括服务器的网络接口卡的物理网络地址,还可以包括虚拟网络标识符,诸如VxLAN标签或多协议标签交换(MPLS)标签,该标签标识虚拟网络之一以及由虚拟路由器48A执行的相应路由实例。内部分组包括具有目的地网络地址的内部报头,该目的地网络地址符合由虚拟网络标识符标识的虚拟网络的虚拟网络寻址空间。
虚拟路由器48终止虚拟网络覆盖隧道并且基于分组的隧道封装报头确定用于接收的分组的虚拟网络,并且将分组转发到用于分组的适当的目的地虚拟网络端点。例如,对于服务器34A,对于从由服务器34A(例如,VM 58A)托管的虚拟网络端点出站的每个分组,虚拟路由器34A附加指示分组的虚拟网络的隧道封装报头以生成封装或“隧道”分组,并且虚拟路由器34A经由用于虚拟网络的覆盖隧道将封装的分组输出到物理目的地计算设备,诸如另一服务器34。如本文中使用的,虚拟路由器48可以执行隧道端点的以下操作:封装由虚拟网络端点提供的内部分组以生成隧道分组并且解封装隧道分组以获取内部分组以路由到其他虚拟网络端点。
在图2所示的示例中,数据中心32A被配置为提供VCE 12A的基础设施。例如,服务器34A-34N可以被配置为执行虚拟机(VM)和/或容器(例如,使用Kubernetes pod)以支持VCE 12A的操作。而且,在图1的示例中,控制器14是VCE 12A的一部分。因此,服务器34A-34N可以被配置为支持控制器14的操作。
如图2所示,服务器34A和34B执行VM 50A和50B。在该示例中,VM 50A和50B一起提供虚拟机,控制器14可以在该虚拟机上执行并且执行本公开中描述的控制器14的示例操作(例如,提供集中控制器以确保在具有单个玻璃窗界面的VCE上的正确的路线传播,保护和应用部署)。服务器34A、34B和34N执行VM 54A、54B和54N。在该示例中,VM 54A、54B和54N一起提供虚拟机,连接网关路由器16A在该虚拟机上执行并且执行本公开中描述的连接网关路由器16A的示例操作(例如,为VCE 12A在逻辑隧道网格内形成逻辑端点)。在图2的示例中,VM 55A、55B和55N(统称为“VM55”)支持与至少一个客户46相关联的应用和服务。由VM55执行的任务(即,“工作”)表示部署到VCE 12A的工作负载19。
服务器34N还被示出为执行VM 52N。VM 52N可以提供虚拟机,要在VCE 12A内执行的应用在该虚拟机上执行。例如,VCE 12A可以提供计算资源以从个人计算机卸载计算复杂的任务。在一些示例中,VM 52N是应用在其上执行以执行从个人计算机卸载的任务的平台。
另外,服务器34A和34B执行VM 56A和VM 56B,VM 56A和VM 56B共同定义心跳代理26A可以在其上执行的虚拟机并且执行本公开中描述的心跳代理26A的示例操作。例如,心跳代理26A可以将一系列心跳信号传输到灾难恢复控制器28以指示VCE 12A在线。此外,数据中心32B-32X的任何组合的附加服务器(未示出)可以执行共同定义心跳代理26B和心跳代理26C的附加VM或容器(未示出)。尽管心跳代理26A被示出为由两个服务器(即,服务器34A和34B)执行,但是在图2中未示出的一些示例中,心跳代理26A由少于3个服务器34或多于3个服务器34执行。
在图2的示例中,灾难恢复控制器28由数据中心32A执行。更具体地,服务器34A和34B分别托管VM 58A和58B,VM 58A和58B共同提供灾难恢复控制器28在其上操作的虚拟机。换言之,在图2的示例中,两个服务器(即,服务器34A和34B)提供物理计算基础设施以支持灾难恢复控制器28。在图2中未示出的其他示例中,少于2个服务器34或多于2个服务器34可以执行虚拟机以执行灾难恢复控制器28的操作。此外,在图2中未示出的其他示例中,数据中心32A-32X的任何组合的一个或多个服务器可以执行虚拟机,这些虚拟机共同提供灾难恢复控制器在其上操作的虚拟机。换言之,灾难恢复控制器28可以在数据中心32A-32X中的任何一个内操作,或者跨数据中心32A-32X的任何组合操作。
VM 50A、50B、52N、54A、54B、54N、55A、55B、55N、56A、56B、58A和58B仅被示出以帮助理解,而不应当被视为限制。例如,虚拟网络控制器36(“VNC”)可以被配置为根据需要在服务器34上或内部旋转加快和旋转减慢虚拟机以支持VCE 12A、控制器14、连接网关路由器16A、工作负载19、心跳代理26A和灾难恢复控制器28的操作。然而,示例技术不限于此,并且在一些示例中,控制器14可以被配置为确定要用于VCE 12A的数据中心32A内的资源(例如,有多少VM旋转加快或旋转减慢)。此外,在一些示例中,控制器14可以被配置为确定要用于其他VCE 12的其他数据中心32内的资源(例如,有多少VM旋转加快或旋转减慢)。
除了被配置为确定数据中心32A内的资源之外,控制器14还能够在任何一个VCE12或VCE 12的任何组合中配置灾难恢复控制器28。此外,控制器14能够在VCE 12中配置心跳代理,其中虚拟网络控制器在VCE 12中的每个VCE中配置心跳代理26中的心跳代理。例如,控制器14可以在VCE 12A中配置心跳代理26A,控制器14可以在VCE 12B中配置心跳代理26B,并且控制器14可以在VCE 12C中配置心跳代理26C。
通常,虚拟网络控制器36控制多云网络10结构的网络配置,以例如为虚拟网络端点之间的分组化通信建立一个或多个虚拟网络。虚拟网络控制器36提供在逻辑上并且在某些情况下在物理上集中的控制器以用于促进每个数据中心32(诸如数据中心32A)内的一个或多个虚拟网络的操作。在一些示例中,虚拟网络控制器36可以响应于从网络管理员38接收的配置输入而操作。此外,如该示例中所示,管理员38可以负责为控制器14提供配置信息,使得控制器14可以执行本公开中描述的示例操作。管理员38可以表示使用公共接口来创建虚拟计算环境拓扑并且将其部署到虚拟网络控制器36和控制器14以便在计算基础设施内进行供应的运营商、开发者或应用部署专家。关于与数据中心32A或其他软件定义网络的其他设备一起操作的虚拟网络控制器36的附加信息可以在于2013年6月5日提交的题为“PHYSICAL PATH DETERMINATION FOR VIRTUAL NETWORK PACKET FLOWS”的国际申请号PCT/US2013/044378(代理人案号1014-641WO01/JNA0001-WO-ORG1)和于2014年3月26日提交的题为“Tunneled Packet Aggregation for Virtual Networks”的美国专利申请No.14/226,509(代理人案号1014-702US01/JNP2156-US-ORG1)中找到,每个申请通过引用并入本文,如同本文中完全阐述的。
在一些示例中,任何两个网络设备之间(诸如IP结构44(未示出)内的网络设备之间,服务器34与客户46之间,或者服务器34之间)的业务可以使用很多不同的路径遍历物理网络。分组流(或“流”)可以由分组的报头中使用的用于路由分组通过物理网络的五个值或“五元组”定义,即协议、源IP地址、目的地IP地址、源端口和目的地端口。例如,协议指定通信协议,诸如TCP或UDP,并且源端口和目的地端口指的是连接的源和目的地端口。
数据中心32A内的流是流的一个示例。流的另一示例是VCE 12之间的数据流。如上所述,VCE 12之间的流的示例包括UDP封装的ESP分组。在一些示例中,虚拟网络控制器36将TOR交换机40和机架交换机42配置为在数据中心32A内创建虚拟网络。另外,虚拟网络控制器36可以在任何数据中心32内或之间创建虚拟网络。
包括指定特定五元组的分组报头的一组一个或多个分组数据单元(PDU)表示流。流可以使用PDU的任何参数来广泛地分类,诸如源和目的地数据链路(例如,MAC)和网络(例如,IP)地址、虚拟局域网(VLAN)标签、传输层信息、多协议标签交换(MPLS)或通用MPLS(GMPLS)标签、以及接收流的网络设备的入口端口。例如,流可以是在传输控制协议(TCP)连接中传输的所有PDU、由特定MAC地址或IP地址提供的所有PDU、具有相同VLAN标记的所有PDU、或在同一交换机端口处接收的所有PDU。流可以由应用标识符(AppID)另外地或替代地定义,该应用标识符由虚拟路由器代理或其他实体确定,例如使用端口和协议列表或深度分组检查(DPI)、与流相关联的一种类型的服务或应用,因为流转移用于该类型的服务或应用的应用数据。
因此,图2示出了多云网络10中的VCE 12A的示例。例如,在图2中,单个SDN控制器14被配置为建立逻辑隧道网格以经由相应的连接网关路由器16在多云网络中互连多个VCE12。SDN控制器14还被配置为向VCE 12通告一个或多个逻辑隧道。如图2所示,数据中心32A包括在一个或多个服务器上执行的一个或多个虚拟机,使得一个或多个虚拟机形成VCE12A的基础设施,并且至少一个虚拟机执行连接网关路由器16A以形成VCE 12A的逻辑端点。例如,在图2中,服务器34A和34B上的VM 50A和50B分别形成控制器14的基础设施,服务器34N上的VM 52N形成VCE 12A的基础设施,并且服务器34A-34N上的VM 54A-54N分别形成连接网关路由器16A的基础设施。
尽管图2示出了数据中心32A的一个示例,但是其他数据中心可以基本相似,但可能不执行控制器14的实例。例如,在数据中心的第二组一个或多个服务器上执行的一组一个或多个虚拟机32A-32N可以形成VCE 12B的基础设施。而且,该组一个或多个虚拟机中的至少一个虚拟机执行连接网关路由器16B以形成VCE 12B的逻辑端点。在该示例中,控制器14被配置为建立用于互连连接网关路由器16A和连接网关路由器16B的逻辑隧道网格的逻辑隧道(例如,隧道17A)。
图3是示出根据本公开中描述的一个或多个示例技术的在虚拟计算环境(例如,图1的VCE 12)之间迁移工作负载的示例操作300的流程图。示例操作300关于图1的多云网络10来描述。
根据示例操作300,处理电路(例如,被配置为执行控制器14的处理电路)被配置为与VCE 12通信,VCE 12包括第一虚拟计算环境(例如,VCE 12B)和第二虚拟计算环境(例如,VCE 12A),其中每个VCE 12由不同的公共云提供方(310)操作。在一个示例中,被配置为执行控制器14的处理电路位于VCE 12A内。然而,在其他示例中,处理电路位于VCE 12中的任何一个或任何组合中。这样,处理电路可以被配置为在多个云网络10中分发和接收数据。在一些示例中,至少一个VCE 12包括虚拟私有云(VPC)。操作VCE 12的公共云运营商可以包括Amazon Web Services(AWS)、Google Cloud Platform(GCP)和Microsoft Azure等中的至少一个。虽然每个云提供方可以操作多个云,但是VCE 12中的每个VCE由单独的云服务提供方操作。换言之,特定VCE(例如,VCE 12B)可以包括由单个公共云提供方(例如,AWS)操作的多于一个云,然而,两个单独的VCE(例如,VCE 12B和VCE 12C)由诸如AWS和GCP等两个单独的云提供方操作。
处理电路被配置为向第一虚拟计算环境(例如,VCE 12B)部署一组工作负载(例如,工作负载21)(320)。通常,术语“工作负载”是指由可以由VCE 12B执行的应用、服务、VM、pod、容器、数据、元数据、状态信息等的任何组合执行的工作。工作负载21可以对应于操作VCE 12B的云服务提供方的一个或多个客户。此外,灾难恢复控制器28可以检测VCE 12B的至少一部分的故障(330)。
响应于检测到VCE 12B的故障,灾难恢复控制器28被配置为响应于检测到故障而向VCE 12B输出将工作负载21的工作负载集合传送到VCE 12A的指令,从而引起该工作负载集合到VCE 12A的迁移(340)。在一些示例中,该工作负载集合到VCE 12A的迁移通过利用由VCE 12B提供的复制基础设施来被执行,而不管VCE 12B的一部分的故障,其中复制基础设施包括存储设备24B和存储在存储设备24B中的数据。
图4是示出根据本公开中描述的一个或多个示例技术的灾难恢复控制器(诸如图1的灾难恢复控制器28)的示例操作400的流程图。示例操作400关于图1的多云网络10来描述。
根据示例操作400,灾难恢复控制器28被配置为从心跳代理26接收多个心跳信号序列,其中多个序列中的每个序列由心跳代理26中的心跳代理以周期性速率发出,并且其中心跳代理26中的每个心跳代理被部署到VCE 12中的VCE(410)。心跳代理26可以定义由控制器14创建并且部署到VCE 12的虚拟机(VM)。心跳代理26中的至少一些(例如,心跳代理26B和心跳代理26C)可以经由连接网关路由器16和隧道17部署到VCE 12。在一些示例中,多个心跳信号的每个心跳信号序列定义规则或不规则的“ping”流,以指示相应的VCE在线且可操作。例如,心跳代理26A可以以第一周期性速率发出第一心跳信号序列,心跳代理26B可以以第二周期性速率发出第二心跳信号序列,并且心跳代理26C可以以第三周期性速率发出第三心跳信号序列。如果相应的VCE在线,则心跳代理26发出心跳信号。
灾难恢复控制器28被配置为基于多个心跳信号序列来确定与心跳代理26中的每个心跳代理相对应的心跳信号遗漏的数目(420)。灾难恢复控制器28还被配置为分别存储与心跳代理26A、心跳代理26B和心跳代理26C相关联的第一周期性速率、第二周期性速率和第三周期性速率。基于周期性速率,灾难恢复控制器28可以确定“预期”心跳信号指示相应VCE 12在线的次数。如果灾难恢复控制器28在预期时间没有接收到心跳信号,则灾难恢复控制器28可以确定已经发生了心跳信号遗漏。由于当相应VCE 12在线时心跳代理26发出心跳信号,因此心跳信号遗漏可以指示VCE故障。这样,灾难恢复控制器28基于与特定VCE相关联的心跳信号遗漏的数目来评估特定VCE是否已经发生故障。
示例性操作400还包括使用灾难恢复控制器28来响应于确定与心跳代理26中的心跳代理相对应的心跳信号遗漏的数目超过心跳信号遗漏的阈值数目而确定与心跳代理相关联的VCE离线(430)。在一些示例中,灾难恢复控制器28将心跳信号遗漏的阈值数目设置为连续心跳信号遗漏的阈值数目(例如,三个连续心跳信号遗漏),并且在达到阈值数目的连续心跳信号遗漏之后,灾难恢复控制器28确定与心跳代理相关联的VCE离线。在其他示例中,灾难恢复控制器28将心跳信号遗漏的阈值数目设置为预定数目的预期心跳信号内的心跳信号遗漏的阈值数目。例如,如果灾难恢复控制器28期望在一段时间内从心跳代理26A接收10个连续心跳信号,并且灾难恢复控制器28在该时间段内检测到5个心跳信号遗漏(即,灾难恢复控制器28接收到预期的10个连续心跳信号中的5个心跳信号),则灾难恢复控制器28可以确定VCE 12A离线。
在确定VCE离线之后,灾难恢复控制器28被配置为输出将部署到VCE的一组工作负载中的工作负载集合传送到VCE 12中的其他VCE的指令(440)。每个VCE 12包括被配置为存储表示部署到相应VCE的一组工作负载的数据的存储设备24和形成逻辑隧道网格内的逻辑端点的连接网关路由器16。换言之,逻辑隧道网格使用每个VCE 12的连接网关路由器16作为逻辑端点来形成。在一些示例中,输出将工作负载集合从VCE(例如,VCE 12A)转移到VCE12中的其他VCE(例如,VCE 12B和VCE 12C)的指令包括输出经由逻辑隧道网格和连接网关路由器将存储在存储设备中的至少一些数据转移到多个VCE中的其他VCE的指令,其中至少一些数据表示该工作负载集合。
在一些示例中,在VCE 12A发生故障之后,并非部署到VCE 12A的工作负载19中的每个工作负载都被转移到其他VCE。每个VCE可以独立地确定在系统发生故障时要转移的工作负载。例如,VCE12A可以将该组工作负载的工作负载集合标识为“必要的”。在基本工作负载被转移之后,它们可以由其他VCE(即,VCE 12B和VCE12C)执行。在一些示例中,VCE 12维护包括多于一类服务的订阅服务。例如,VCE 12B可以处理与订阅高质量服务类别的客户相关联的工作负载,并且还处理与订阅低质量服务类别的客户相关联的工作负载。在VCE 12B离线之后,它可以将与高质量服务类别相关联的工作负载转移到其他VCE(即,VCE 12A和VCE 12C)。这样,与高质量服务类别相关联的工作负载由VCE 12A和VCE 12C执行,并且与低质量服务类别相关联的工作负载不执行,直到VCE 12B重新在线。
图5是示出根据本公开中描述的一个或多个示例技术的使用灾难恢复控制器28来检测与心跳代理26相关联的心跳信号遗漏的示例操作500的流程图。示例操作500关于图1的多云网络10来描述。示例操作500包括用于完成图4的示例操作400的步骤420的示例步骤。
根据示例操作500,灾难恢复控制器28被配置为基于心跳代理26中的心跳代理(例如,心跳代理26B)发出心跳信号序列的周期性速率来计算时间间隔,其中时间间隔表示心跳信号序列中的连续心跳信号之间的估计时间量(510)。心跳代理26中的每个心跳代理以定制周期性速率发出心跳信号。作为示例,心跳代理26A被配置为以第一定制周期性速率发出心跳信号,心跳代理26B以第二定制周期性速率发出心跳信号,并且心跳代理26C被配置为以第三定制周期性速率发出心跳信号。在一些示例中,第一定制周期性速率、第二定制周期性速率和第三定制周期性速率相等。在其他示例中,与每个心跳代理26相关联的定制周期性速率定义至少两个不同的值。
控制器14被配置为创建心跳代理26并且将心跳代理26部署到VCE 12。这样,控制器14被配置为设置每个心跳代理26发出心跳信号的定制周期性速率。在创建和部署心跳代理26之后,控制器14将指示第一定制周期性速率、第二定制周期性速率和第三定制周期性速率的数据传输到灾难恢复控制器28。灾难恢复控制器28可以通过计算相应定制周期性速率的倒数来计算时间间隔。例如,如果与心跳代理26B相关联的定制周期性速率是每秒两次心跳信号发射,则灾难恢复控制器28计算连续心跳信号发射之间的时间间隔为0.5秒。时间间隔给出由心跳代理26B发出的心跳信号之间的“预期”时间量。然而,在VCE 12B离线的情况下,灾难恢复控制器28停止从心跳代理26B接收心跳信号。换言之,如果分离心跳信号的预期时间量过去并且灾难恢复控制器28没有接收到心跳信号,则灾难恢复控制器28可以将接收心跳信号的故障归因于与VCE 12B的可能故障相关的心跳信号遗漏。
灾难恢复控制器28被配置为从心跳代理26B接收心跳信号序列中的第一心跳信号(520)。响应于接收到第一心跳信号,灾难恢复控制器28被配置为启动时间窗口(530)。在一些示例中,时间窗口是开放式的。换言之,在灾难恢复控制器28启动时间窗口之后,时间窗口将继续,直到灾难恢复控制器28停止或重置时间窗口。这样,时间窗口用于记录在灾难恢复控制器28接收到第一心跳信号之后经过的时间量。
由于时间间隔是恒定值,并且时间窗口用作增加的时钟信号,因此灾难恢复控制器28被配置为标识在时间间隔期间时间间隔流逝的实例的数目(540)。例如,如果时间间隔在来自心跳代理26B的心跳信号遗漏之间定义0.5秒的值,则灾难恢复控制器28在时间窗口开始之后每0.5秒标识实例(例如,在时间窗口运行3.1秒之后,灾难恢复控制器28已经标识出六个时间间隔的消逝)。灾难恢复控制器28被配置为基于在时间窗口期间时间间隔流逝的实例的数目来标识心跳信号遗漏的数目(550)。因此,如果灾难恢复控制器28没有以第二定制周期性速率从心跳代理26B接收到心跳信号,则灾难恢复控制器28将标识出正在发生心跳信号遗漏。更具体地,灾难恢复控制器28被配置为基于时间窗口的长度和时间间隔的长度来确定心跳信号遗漏的确切数目。
灾难恢复控制器28被配置为从心跳代理26B接收心跳信号序列中的第二心跳信号(560)。响应于接收到第二心跳信号,灾难恢复控制器28被配置为重置时间窗口(570)。以这种方式,示例性操作500可以在步骤510重新开始,其中灾难恢复控制器28确定在接收到第二心跳信号之后发生的心跳信号遗漏的数目。
对于本文中描述的过程、装置和其他示例或图示,包括在任何流程图表或流程图中,本文中描述的任何技术中包括的某些操作、动作、步骤或事件可以以不同的顺序执行,添加,合并或完全忽略(例如,并非所有描述的行为或事件都是实现技术所必需的)。此外,在某些示例中,操作、动作、步骤或事件可以同时执行,例如,通过多线程处理、中断处理或多个处理器,而不是顺序执行。此外,即使没有具体地标识为自动执行,某些操作、动作、步骤或事件也可以自动执行。此外,被描述为自动执行的某些操作、动作、步骤或事件可以替代地不是自动执行的,而是在一些示例中,这些操作、动作、步骤或事件可以响应于输入或另一事件而执行。
在一个或多个示例中,所描述的功能可以用硬件、软件、固件或其任何组合来实现。如果用软件实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上和/或通过计算机可读介质传输并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质(其对应于诸如数据存储介质等有形介质)或者通信介质(其包括便于将计算机程序从一个地方传输到另一地方的任何介质(例如,根据通信协议))。以这种方式,计算机可读介质通常可以对应于(1)有形计算机可读存储介质,其是非暂态的,或者(2)通信介质,诸如信号或载波。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备、闪存或者可以用于以指令或数据结构的形式存储期望的程序代码并且可以由计算机访问的任何其他介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或无线技术(诸如红外线、无线电和微波)从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或无线技术(诸如红外线、无线电和微波)都被包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是针对非瞬态有形存储介质。所使用的磁盘和盘包括紧凑盘(CD)、激光盘、光盘、数字通用盘(DVD)、软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而盘通过激光在光学上再现数据。以上的组合也应包括在计算机可读介质的范围内。
指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效的集成或离散逻辑电路。因此,本文中使用的术语“处理器”或“处理电路”每个可以是指适于实现所描述的技术的任何前述结构或任何其他结构。此外,在一些示例中,所描述的功能性可以在专用硬件和/或软件模块内提供。而且,这些技术可以完全在一个或多个电路或逻辑元件中实现。
本发明的技术可以在各种装置或设备中实现,包括无线手持机、移动或非移动计算设备、可穿戴或非可穿戴计算设备、集成电路(IC)或一组IC(例如,芯片组)。在本公开中描述了各种组件、模块或单元以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单元实现。而是,如上所述,各种单元可以在硬件单元中组合,或者由互操作硬件单元的集合(包括如上所述的一个或多个处理器)结合合适的软件和/或固件来提供。

Claims (20)

1.一种计算系统,包括:
存储介质;以及
处理电路,所述处理电路具有对所述存储介质的访问,并且被配置为:
与多个虚拟计算环境(VCE)通信,所述多个VCE包括第一VCE和第二VCE,其中所述多个VCE中的每个VCE表示由不同的公共云提供方操作的公共云的至少一部分,
向所述第一VCE部署一组工作负载,
响应于确定与所述第一VCE相对应的心跳信号遗漏的数目超过心跳信号遗漏的阈值数目,检测所述第一VCE的至少一部分的故障,以及
响应于检测到所述故障,向所述第一VCE输出将所述一组工作负载中的工作负载集合传送到所述第二VCE的指令,从而引起所述工作负载集合到所述第二VCE的迁移。
2.根据权利要求1所述的计算系统,其中所述工作负载集合到所述第二VCE的所述迁移通过利用由所述第一VCE提供的复制基础设施来被执行,而不管所述第一VCE的所述故障。
3.根据权利要求1至2中的任一项所述的计算系统,其中为了检测所述第一VCE的至少一部分的所述故障,所述处理电路还被配置为:
从心跳代理接收心跳信号序列,其中所述心跳信号序列由所述心跳代理以一速率发出,并且其中所述心跳代理被部署在所述第一VCE内;
基于所述心跳信号序列,确定与被部署在所述第一VCE内的所述心跳代理相对应的所述心跳信号遗漏的数目;以及
响应于确定与被部署在所述第一VCE内的所述心跳代理相对应的所述心跳信号遗漏的数目超过心跳信号遗漏的所述阈值数目,确定所述第一VCE离线。
4.根据权利要求3所述的计算系统,其中所述速率是周期性速率,并且其中为了确定所述心跳信号遗漏的数目,所述处理电路还被配置为:
基于与所述心跳代理相关联的所述周期性速率来计算时间间隔,其中所述时间间隔表示所述心跳信号序列中的连续心跳信号之间的估计时间量;
接收所述心跳信号序列中的第一心跳信号;
响应于接收到所述第一心跳信号,启动时间窗口;
标识在所述时间窗口期间所述时间间隔流逝的实例的数目;
基于在所述时间窗口期间所述时间间隔流逝的实例的数目,标识所述心跳信号遗漏的数目;
接收所述心跳信号序列中的第二心跳信号;以及
响应于接收到所述第二心跳信号,重置所述时间窗口。
5.根据权利要求3所述的计算系统,其中所述第一VCE包括:
存储设备,被配置为存储表示被部署到所述第一VCE的所述一组工作负载的数据;以及
连接网关路由器,其中所述连接网关路由器形成用于所述多个VCE的逻辑隧道网格内的逻辑端点。
6.根据权利要求5所述的计算系统,其中所述处理电路还被配置为:
接收传送所述工作负载集合的所述指令;以及
经由所述逻辑隧道网格和所述连接网关路由器,将存储在所述第一VCE的所述存储设备中的所述数据的至少一些数据传送到所述第二VCE。
7.根据权利要求5所述的计算系统,其中所述处理电路还被配置为经由所述逻辑隧道网格从所述心跳代理接收多个心跳信号序列中的至少一些序列。
8.根据权利要求1至2中的任一项所述的计算系统,其中所述处理电路还被配置为执行多云控制器,所述多云控制器被配置为:
在所述多个VCE内配置灾难恢复控制器,其中所述灾难恢复控制器被配置为:
检测所述故障;以及
输出传送所述工作负载集合的所述指令,其中所述处理电路被配置为执行所述灾难恢复控制器;以及
在所述多个VCE中配置多个心跳代理,其中所述多云控制器在所述多个VCE的每个相应的VCE中配置所述多个心跳代理中的心跳代理。
9.根据权利要求8所述的计算系统,其中所述多个VCE中的VCE定义数据中心,并且所述灾难恢复控制器被配置在所述数据中心内。
10.根据权利要求8所述的计算系统,其中所述多个心跳代理作为虚拟机(VM)、pod和容器中的至少一个来执行。
11.根据权利要求1至2的任一项所述的计算系统,其中所述多个VCE中的至少一个VCE包括虚拟私有云(VPC)。
12.一种用于迁移工作负载的方法,包括:
由处理电路与多个虚拟计算环境(VCE)通信,所述多个VCE包括第一VCE和第二VCE,其中所述多个VCE中的每个VCE表示由不同的公共云提供方操作的公共云的至少一部分,
向所述第一VCE部署一组工作负载,
响应于确定与所述第一VCE相对应的心跳信号遗漏的数目超过心跳信号遗漏的阈值数目,检测所述第一VCE的至少一部分的故障,以及
响应于检测到所述故障,向所述第一VCE输出将所述一组工作负载中的工作负载集合传送到所述第二VCE的指令,从而引起所述工作负载集合到所述第二VCE的迁移。
13.根据权利要求12所述的方法,其中所述工作负载集合到所述第二VCE的所述迁移通过利用由所述第一VCE提供的复制基础设置来被执行,而不管所述第一VCE的所述一部分的所述故障,并且其中所述复制基础设施被存储在与所述第一VCE相关联的存储设备中。
14.根据权利要求12至13中的任一项所述的方法,其中检测所述第一虚拟计算环境的至少一部分的所述故障包括:
从心跳代理接收心跳信号序列,其中所述心跳信号序列由所述心跳代理以周期性速率发出,并且其中所述心跳代理被部署在所述第一VCE内;
基于所述心跳信号序列,确定与被部署在所述第一VCE内的所述心跳代理相对应的所述心跳信号遗漏的数目;以及
响应于确定与被部署在所述第一VCE内所述心跳代理相对应的所述心跳信号遗漏的数目超过心跳信号遗漏的所述阈值数目,确定所述第一VCE离线。
15.根据权利要求14所述的方法,其中确定所述心跳信号遗漏的数目包括:
基于与所述心跳代理相关联的所述周期性速率来计算时间间隔,其中所述时间间隔表示所述心跳信号序列中的连续心跳信号之间的估计时间量;
接收所述心跳信号序列中的第一心跳信号;
响应于接收到所述第一心跳信号,启动时间窗口;
标识在所述时间窗口期间所述时间间隔流逝的实例的数目;
基于在所述时间窗口期间所述时间间隔流逝的实例的数目,标识所述心跳信号遗漏的数目;
接收所述心跳信号序列中的第二心跳信号;以及
响应于接收到所述第二心跳信号,重置所述时间窗口。
16.根据权利要求14所述的方法,其中所述第一VCE包括:
存储设备,被配置为存储表示被部署到所述第一VCE的所述一组工作负载的数据;以及
连接网关路由器,其中所述连接网关路由器形成用于所述多个VCE的逻辑隧道网格内的逻辑端点。
17.根据权利要求16所述的方法,还包括:
接收传送所述工作负载集合的所述指令;以及
经由所述逻辑隧道网格和所述连接网关路由器,将存储在所述存储设备中的所述数据的至少一些数据传送到所述第二VCE。
18.根据权利要求12至13中的任一项所述的方法,其中所述处理电路被配置为执行多云控制器,并且其中所述方法还包括:
使用所述多云控制器在所述多个VCE内配置灾难恢复控制器,其中:
检测所述第一VCE的所述至少一部分的所述故障包括:使用所述灾难恢复控制器检测所述第一VCE的所述至少一部分的所述故障;并且
输出传送所述工作负载集合的指令包括:使用所述灾难恢复控制器输出传送所述工作负载集合的所述指令,其中所述处理电路被配置为执行所述灾难恢复控制器;以及
使用所述多云控制器在所述多个VCE中配置多个心跳代理,其中所述多云控制器在所述多个VCE的每个相应的VCE中配置所述多个心跳代理中的心跳代理。
19.一种非暂态计算机介质,包括用于使得一个或多个处理器执行以下操作的指令:
与多个虚拟计算环境(VCE)通信,所述多个VCE包括第一VCE和第二VCE,其中所述多个VCE中的每个VCE表示由不同的公共云提供方操作的公共云的至少一部分,
向所述第一VCE部署一组工作负载,
响应于确定与所述第一VCE相对应的心跳信号遗漏的数目超过心跳信号遗漏的阈值数目,检测所述第一VCE的至少一部分的故障,以及
响应于检测到所述故障,向所述第一VCE输出将所述一组工作负载中的工作负载集合传送到所述第二VCE的指令,从而引起所述工作负载集合到所述第二VCE的迁移。
20.根据权利要求19所述的非暂态计算机介质,其中所述一个或多个处理器被配置为访问多个存储设备,其中所述工作负载集合到所述第二VCE的所述迁移通过利用由所述第一VCE提供的复制基础设施来被执行,而不管所述第一VCE的所述一部分的所述故障。
CN201910567185.7A 2018-09-28 2019-06-27 在多云计算环境中迁移工作负载 Active CN110971442B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/145,800 2018-09-28
US16/145,800 US10860368B2 (en) 2018-09-28 2018-09-28 Migrating workloads in multicloud computing environments

Publications (2)

Publication Number Publication Date
CN110971442A CN110971442A (zh) 2020-04-07
CN110971442B true CN110971442B (zh) 2023-01-13

Family

ID=67296933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910567185.7A Active CN110971442B (zh) 2018-09-28 2019-06-27 在多云计算环境中迁移工作负载

Country Status (3)

Country Link
US (2) US10860368B2 (zh)
EP (1) EP3629164A1 (zh)
CN (1) CN110971442B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860368B2 (en) * 2018-09-28 2020-12-08 Juniper Networks, Inc. Migrating workloads in multicloud computing environments
US11381476B2 (en) 2018-12-11 2022-07-05 Sap Se Standardized format for containerized applications
US11212366B2 (en) * 2018-12-11 2021-12-28 Sap Se Kubernetes as a distributed operating system for multitenancy/multiuser
US10880124B2 (en) * 2018-12-28 2020-12-29 Alibaba Group Holding Limited Offload controller control of programmable switch
US10938946B2 (en) * 2019-01-14 2021-03-02 Amdocs Development Limited Handshake of application execution between edge nodes
US11394693B2 (en) * 2019-03-04 2022-07-19 Cyxtera Cybersecurity, Inc. Establishing network tunnel in response to access request
US11206306B2 (en) 2019-05-21 2021-12-21 Cobalt Iron, Inc. Analytics based cloud brokering of data protection operations system and method
US11157304B2 (en) * 2019-11-01 2021-10-26 Dell Products L.P. System for peering container clusters running on different container orchestration systems
US11563823B2 (en) * 2019-11-27 2023-01-24 Verifone, Inc. Systems and methods for device connectivity management
US20210191826A1 (en) * 2019-12-20 2021-06-24 Johnson Controls Technology Company Building system with ledger based software gateways
US11190424B2 (en) * 2020-01-15 2021-11-30 Vmware, Inc. Container-based connectivity check in software-defined networking (SDN) environments
US11470071B2 (en) * 2020-04-20 2022-10-11 Vmware, Inc. Authentication for logical overlay network traffic
US11334453B2 (en) * 2020-05-07 2022-05-17 Oracle International Corporation System and method for providing fault tolerance and resiliency in a cloud network
CN111800523B (zh) * 2020-06-30 2022-06-24 北京金山云网络技术有限公司 虚拟机网络的管理方法、数据处理方法及系统
US20220171649A1 (en) * 2020-11-30 2022-06-02 Juniper Networks, Inc. Extending a software defined network between public cloud computing architecture and a data center
US11601358B2 (en) * 2020-12-17 2023-03-07 HashiCorp Cross datacenter communication using a mesh gateway
US11477293B2 (en) 2021-02-19 2022-10-18 International Business Machines Corporation Optimize migration of cloud native applications in a mutli-cloud environment
CN113542095B (zh) * 2021-06-22 2023-03-31 新华三信息安全技术有限公司 一种设备及其恢复隧道的方法
CN114024782B (zh) * 2022-01-10 2022-04-12 江苏博云科技股份有限公司 基于三层安全隧道技术的云与边缘、边缘与边缘组网系统
US11991152B2 (en) * 2022-02-09 2024-05-21 Hewlett Packard Enterprise Development Lp Bypassing IKE firewall for cloud-managed IPSec keys in SDWAN fabric
CN115600188B (zh) * 2022-11-29 2023-03-14 北京天维信通科技有限公司 一种多级租户资源管理方法、系统、终端及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103547994A (zh) * 2011-05-20 2014-01-29 微软公司 用于容量管理和灾难恢复的跨云计算
CN105103132A (zh) * 2013-01-15 2015-11-25 微软技术许可有限责任公司 在升级期间修复云服务

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10180809B2 (en) 2006-05-17 2019-01-15 Richard Fetik Secure application acceleration system, methods and apparatus
US8639793B2 (en) 2010-10-29 2014-01-28 Cisco Technology, Inc. Disaster recovery and automatic relocation of cloud services
US9104460B2 (en) * 2011-05-31 2015-08-11 Red Hat, Inc. Inter-cloud live migration of virtualization systems
US20130036213A1 (en) * 2011-08-02 2013-02-07 Masum Hasan Virtual private clouds
US20140006482A1 (en) * 2012-07-02 2014-01-02 Vmware, Inc. Method and system for providing inter-cloud services
US9064216B2 (en) 2012-06-06 2015-06-23 Juniper Networks, Inc. Identifying likely faulty components in a distributed system
EP2862077A4 (en) * 2012-06-15 2016-03-02 Cycle Computing Llc METHOD AND SYSTEM FOR AUTOMATIC DETECTION AND RESOLUTION OF INFRASTRUCTURE DEFECTS IN CLOUD INFRASTRUCTURE
US9300726B2 (en) * 2013-01-15 2016-03-29 International Business Machines Corporation Implementing a private network isolated from a user network for virtual machine deployment and migration and for monitoring and managing the cloud environment
US9226333B2 (en) 2013-06-07 2015-12-29 Alcatel Lucent Virtualization of control plane functions of a wireless core packet network
US9356866B1 (en) 2014-01-10 2016-05-31 Juniper Networks, Inc. Receive packet steering for virtual networks
US20150281006A1 (en) 2014-03-14 2015-10-01 Avni Networks Inc. Method and apparatus distributed multi- cloud resident elastic analytics engine
US20150363219A1 (en) 2014-03-14 2015-12-17 Avni Networks Inc. Optimization to create a highly scalable virtual netork service/application using commodity hardware
CN104954281B (zh) 2014-03-31 2018-08-03 中国移动通信集团公司 通信方法、系统、资源池管理系统、交换机和控制装置
CN107431647B (zh) 2014-08-27 2021-03-12 适应性频谱和信号校正股份有限公司 用于实现接入节点功能的虚拟化的系统、方法和装置
CN105471744B (zh) 2014-09-19 2018-10-09 新华三技术有限公司 一种虚拟机迁移方法和装置
US10275328B2 (en) * 2015-04-02 2019-04-30 Vmware, Inc. Fault tolerance for hybrid cloud deployments
CN105591868B (zh) 2015-07-15 2019-03-15 新华三技术有限公司 一种虚拟专用网络vpn的接入方法和装置
US10855515B2 (en) * 2015-10-30 2020-12-01 Netapp Inc. Implementing switchover operations between computing nodes
CN105591955B (zh) 2015-10-30 2019-07-09 新华三技术有限公司 一种报文传输的方法和装置
US9967267B2 (en) * 2016-04-15 2018-05-08 Sophos Limited Forensic analysis of computing activity
US10164858B2 (en) * 2016-06-15 2018-12-25 Time Warner Cable Enterprises Llc Apparatus and methods for monitoring and diagnosing a wireless network
US10282261B2 (en) * 2016-06-20 2019-05-07 Vmware, Inc. Pooled memory heartbeat in shared memory architecture
US10237176B2 (en) 2016-06-30 2019-03-19 Juniper Networks, Inc. Auto discovery and auto scaling of services in software-defined network environment
US10666570B2 (en) * 2016-11-28 2020-05-26 Intel Corporation Computing infrastructure resource-workload management methods and apparatuses
US11914454B2 (en) * 2016-12-22 2024-02-27 Vmware, Inc. True high availability of workloads in a cloud software-defined data center
US10909097B2 (en) * 2017-02-05 2021-02-02 Veritas Technologies Llc Method and system for dependency analysis of workloads for orchestration
US10523542B2 (en) 2017-03-20 2019-12-31 At&T Intellectual Property I, L.P. Systems and methods for testing integrated cloud interoperability, adjacent network compatibility and service chain connectivity
US10261836B2 (en) * 2017-03-21 2019-04-16 Oracle International Corporation Dynamic dispatching of workloads spanning heterogeneous services
US10896064B2 (en) * 2017-03-27 2021-01-19 International Business Machines Corporation Coordinated, topology-aware CPU-GPU-memory scheduling for containerized workloads
US10416986B2 (en) 2017-07-20 2019-09-17 Vmware, Inc. Automating application updates in a virtual computing environment
US10680831B2 (en) 2018-08-14 2020-06-09 Juniper Networks, Inc. Single point of management for multi-cloud environment including route propagation, security, and application deployment
US10860368B2 (en) * 2018-09-28 2020-12-08 Juniper Networks, Inc. Migrating workloads in multicloud computing environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103547994A (zh) * 2011-05-20 2014-01-29 微软公司 用于容量管理和灾难恢复的跨云计算
CN105103132A (zh) * 2013-01-15 2015-11-25 微软技术许可有限责任公司 在升级期间修复云服务

Also Published As

Publication number Publication date
US10860368B2 (en) 2020-12-08
US20200104161A1 (en) 2020-04-02
EP3629164A1 (en) 2020-04-01
US11385929B2 (en) 2022-07-12
CN110971442A (zh) 2020-04-07
US20210103466A1 (en) 2021-04-08

Similar Documents

Publication Publication Date Title
CN110971442B (zh) 在多云计算环境中迁移工作负载
CN110830389B (zh) 用于计算机网络的系统和方法
CN111371706B (zh) 跨物理和虚拟化工作负载使用虚拟化覆盖的具有多个协议的云网络
CN110830357B (zh) 使用高级拓扑描述的多云虚拟计算环境供应
US11558293B2 (en) Network controller subclusters for distributed compute deployments
US10560431B1 (en) Virtual private gateway for encrypted communication over dedicated physical link
EP3611883A1 (en) Secure forwarding of tenant workloads in virtual networks
US20180027009A1 (en) Automated container security
US10432426B2 (en) Port mirroring in a virtualized computing environment
US9331940B2 (en) System and method providing distributed virtual routing and switching (DVRS)
CN111866053B (zh) 软件定义网络控制器、方法及计算机可读存储介质
CN110838992B (zh) 在不同网络堆栈中的内核模块间传送分组的系统和方法
WO2021173319A1 (en) Service chaining in multi-fabric cloud networks
US10581669B2 (en) Restoring control-plane connectivity with a network management entity
US10447581B2 (en) Failure handling at logical routers according to a non-preemptive mode
US11228603B1 (en) Learning driven dynamic threat treatment for a software defined networking environment
US11546242B2 (en) Logical overlay tunnel monitoring
US11271776B2 (en) Logical overlay network monitoring
US11444836B1 (en) Multiple clusters managed by software-defined network (SDN) controller
US20230208678A1 (en) Virtual tunnel endpoint (vtep) mapping for overlay networking

Legal Events

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