Auto-calculation of recovery plans for disaster recovery solutions

One or more embodiments provide techniques for migrating virtual machines (VMs) from a private data center to a cloud data center. A hybrid cloud manager determines a scope of migration from the private data center to the cloud data center. The hybrid cloud manager groups each VM included in the scope of migration into one or more clusters. The hybrid cloud manager defines one or more migration phases. Each migration phase comprises a subset of the one or more clusters. The hybrid cloud manager generates a migration schedule based on at least the one or more migration phases. The hybrid cloud manager migrates the VMs from the private data center to the cloud data center in accordance with the migration schedule.

RELATED APPLICATION

Benefit is claimed under 35 U.S.C. 119(a)-(d) to Foreign Application Serial No. 201741027187 filed in India entitled “AUTO-CALCULATION OF RECOVERY PLANS FOR DISASTER RECOVERY SOLUTIONS”, filed on Jul. 31, 2017 by VMware, Inc., which is herein incorporated in its entirety by reference for all purposes.

BACKGROUND

Cloud architectures are used in cloud computing and cloud storage systems for offering infrastructure-as-a-service (IaaS) cloud services. Examples of cloud architectures include the VMware vCloud Director® cloud architecture software, Amazon EC2™ web service, and OpenStack™ open source cloud computing service. IaaS cloud service is a type of cloud service that provides access to physical and/or virtual resources in a cloud environment. These services provide a tenant application programming interface (API) that supports operations for manipulating IaaS constructs, such as virtual machines (VMs) and logical networks.

A hybrid cloud system aggregates the resource capability from both private and public clouds. A private cloud can include one or more customer data centers (referred to herein as “private data centers”). The public cloud can include a multi-tenant cloud architecture providing IaaS cloud services.

SUMMARY

One or more embodiments provide techniques for migrating virtual machines (VMs) from a private data center to a cloud data center. A hybrid cloud manager determines a scope of migration from the private data center to the cloud data center. The hybrid cloud manager groups each VM included in the scope of migration into one or more clusters. The hybrid cloud manager defines one or more migration phases. Each migration phase comprises a subset of the one or more clusters. The hybrid cloud manager generates a migration schedule based on at least the one or more migration phases. The hybrid cloud manager migrates the VMs from the private data center to the cloud data center in accordance with the migration schedule.

DETAILED DESCRIPTION

FIG. 1is a block diagram of a hybrid cloud computing system100in which one or more embodiments of the present disclosure may be utilized. Hybrid cloud computing system100includes a virtualized computing system implementing a private data center102and a virtualized computing system implementing a cloud data center150. Hybrid cloud computing system100is configured to provide a common platform for managing and executing virtual workloads seamlessly between private data center102and cloud data center150. In one embodiment, private data center102may be a data center controlled and administrated by a particular enterprise or business organization, while cloud data center150may be operated by a cloud computing service provider and exposed as a service available to account holders, such as the particular enterprise in addition to other enterprises. As such, private data center102may sometimes be referred to as a “private” cloud, and cloud data center150may be referred to as a “public” cloud.

As used herein, an internal cloud or “private” cloud is a cloud in which a tenant and a cloud service provider are part of the same organization, while an external or “public” cloud is a cloud that is provided by an organization that is separate from a tenant that accesses the external cloud. For example, the tenant may be part of an enterprise, and the external cloud may be part of a cloud service provider that is separate from the enterprise of the tenant and that provides cloud services to different enterprises and/or individuals. In embodiments disclosed herein, a hybrid cloud is a cloud architecture in which a tenant is provided with seamless access to both private cloud resources and public cloud resources.

Private data center102includes one or more host computer systems (“hosts104”). Hosts104may be constructed on a server grade hardware platform106, such as an x86 architecture platform. As shown, hardware platform106of each host104may include conventional components of a computing device, such as one or more processors (CPUs)108, system memory110, a network interface112, storage system114, and other I/O devices such as, for example, a mouse and keyboard (not shown). CPU108is configured to execute instructions, for example, executable instructions that perform one or more operations described herein and may be stored in memory110and in local storage. Memory110is a device allowing information, such as executable instructions, cryptographic keys, virtual disks, configurations, and other data, to be stored and retrieved. Memory110may include, for example, one or more random access memory (RAM) modules. Network interface112enables host104to communicate with another device via a communication medium, such as a network122within private data center102. Network interface112may be one or more network adapters, also referred to as a Network Interface Card (NIC). Storage system114represents local storage devices (e.g., one or more hard disks, flash memory modules, solid state disks, and optical disks) and/or a storage interface that enables host104to communicate with one or more network data storage systems. Examples of a storage interface are a host bus adapter (HBA) that couples host104to one or more storage arrays, such as a storage area network (SAN) or a network-attached storage (NAS), as well as other network data storage systems.

Each host104is configured to provide a virtualization layer that abstracts processor, memory, storage, and networking resources of hardware platform106into multiple virtual machines1201to120N(collectively referred to as VMs120) that run concurrently on the same hosts. VMs120run on top of a software interface layer, referred to herein as a hypervisor116, that enables sharing of the hardware resources of host104by VMs120. One example of hypervisor116that may be used in an embodiment described herein is a VMware ESXi™ hypervisor provided as part of the VMware vSphere® solution made commercially available from VMware, Inc. of Palo Alto, Calif. Hypervisor116may run on top of the operating system of host104or directly on hardware components of host104.

Private data center102includes a virtualization management component (depicted inFIG. 1as virtualization manager130) that may communicate to the plurality of hosts104via a network, sometimes referred to as a management network126. In one embodiment, virtualization manager130is a computer program that resides and executes in a central server, which may reside in private data center102, or alternatively, running as a VM in one of hosts104. One example of a virtualization manager is the vCenter Server™ product made available from VMware, Inc. Virtualization manager130is configured to carry out administrative tasks for computing system102, including managing hosts104, managing VMs120running within each host104, provisioning VMs, migrating VMs from one host to another host, and load balancing between hosts104.

In one embodiment, virtualization manager130includes a hybrid cloud management module (depicted as hybrid cloud manager132) configured to manage and integrate virtualized computing resources provided by cloud data center150with virtualized computing resources of computing system102to form a unified “hybrid” computing platform. Hybrid cloud manager132is configured to deploy VMs in cloud data center150, transfer VMs from virtualized computing system102to cloud data center150, and perform other “cross-cloud” administrative tasks, as described in greater detail later. In one implementation, hybrid cloud manager132is a module or plug-in complement to virtualization manager130, although other implementations may be used, such as a separate computer program executing in a central server or running in a VM in one of hosts104. One example of hybrid cloud manager132is the VMware vCloud Connector® product made available from VMware, Inc.

In one embodiment, hybrid cloud manager132is configured to control network traffic into network122via a gateway component (depicted as a gateway124). Gateway124(e.g., executing as a virtual appliance) is configured to provide VMs120and other components in private data center102with connectivity to an external network140(e.g., Internet). Gateway124may manage external public IP addresses for VMs120and route traffic incoming to and outgoing from private data center102and provide networking services, such as firewalls, network address translation (NAT), dynamic host configuration protocol (DHCP), load balancing, and virtual private network (VPN) connectivity over a network140.

In one or more embodiments, cloud data center150is configured to dynamically provide an enterprise (or users of an enterprise) with one or more virtual data centers170in which a user may provision VMs120, deploy multi-tier applications on VMs120, and/or execute workloads. Cloud data center150includes an infrastructure platform154upon which a cloud computing environment170may be executed. In the particular embodiment ofFIG. 1, infrastructure platform154includes hardware resources160having computing resources (e.g., hosts1621to162N), storage resources (e.g., one or more storage array systems, such as SAN164), and networking resources, which are configured in a manner to provide a virtualization environment156that supports the execution of a plurality of virtual machines172across hosts162. It is recognized that hardware resources160of cloud data center150may in fact be distributed across multiple data centers in different locations.

Each cloud computing environment170is associated with a particular tenant of cloud data center150, such as the enterprise providing virtualized computing system102. In one embodiment, cloud computing environment170may be configured as a dedicated cloud service for a single tenant comprised of dedicated hardware resources160(i.e., physically isolated from hardware resources used by other users of cloud data center150). In other embodiments, cloud computing environment170may be configured as part of a multi-tenant cloud service with logically isolated virtualized computing resources on a shared physical infrastructure. As shown inFIG. 1, cloud data center150may support multiple cloud computing environments170, available to multiple enterprises in single-tenant and multi-tenant configurations.

In one embodiment, virtualization environment156includes an orchestration component158(e.g., implemented as a process running in a VM) that provides infrastructure resources to cloud computing environment170responsive to provisioning requests. For example, if an enterprise required a specified number of virtual machines to deploy a web application or to modify (e.g., scale) a currently running web application to support peak demands, orchestration component158can initiate and manage the instantiation of virtual machines (e.g., VMs172) on hosts162to support such requests. In one embodiment, orchestration component158instantiates virtual machines according to a requested template that defines one or more virtual machines having specified virtual computing resources (e.g., compute, networking, storage resources). Further, orchestration component158monitors the infrastructure resource consumption levels and requirements of cloud computing environment170and provides additional infrastructure resources to cloud computing environment170as needed or desired. In one example, similar to private data center102, virtualization environment156may be implemented by running on hosts162VMware ESXi™-based hypervisor technologies provided by VMware, Inc. (although it should be recognized that any other virtualization technologies, including Xen® and Microsoft Hyper-V® virtualization technologies may be utilized consistent with the teachings herein).

In one embodiment, cloud data center150may include a cloud director152(e.g., run in one or more virtual machines) that manages allocation of virtual computing resources to an enterprise for deploying applications. Cloud director152may be accessible to users via a REST (Representational State Transfer) API (Application Programming Interface) or any other client-server communication protocol. Cloud director152may authenticate connection attempts from the enterprise using credentials issued by the cloud computing provider. Cloud director152maintains and publishes a catalog166of available virtual machine templates and packaged virtual machine applications that represent virtual machines that may be provisioned in cloud computing environment170. A virtual machine template is a virtual machine image that is loaded with a pre-installed guest operating system, applications, and data, and is typically used to repeatedly create a VM having the pre-defined configuration. A packaged virtual machine application is a logical container of pre-configured virtual machines having software components and parameters that define operational details of the packaged application. An example of a packaged VM application is vApp technology made available by VMware, Inc., although other technologies may be utilized. Cloud director152receives provisioning requests submitted (e.g., via REST API calls) and may propagates such requests to orchestration component158to instantiate the requested virtual machines (e.g., VMs172). One example of cloud director152is the VMware vCloud Director® produced by VMware, Inc.

In the embodiment ofFIG. 1, cloud computing environment170supports the creation of a virtual data center180having a plurality of virtual machines172instantiated to, for example, host deployed multi-tier applications, as well as one or more virtualization managers173(abbreviated as “Vman(s)”). A virtual data center180is a logical construct that provides compute, network, and storage resources to an organization. Virtual data centers180provide an environment where VM172can be created, stored, and operated, enabling complete abstraction between the consumption of infrastructure service and underlying resources. VMs172may be configured similarly to VMs120, as abstractions of processor, memory, storage, and networking resources of hardware resources160. Virtualization managers173can be configured similarly to virtualization manager130.

Virtual data center180includes one or more virtual networks182used to communicate between VMs172and managed by at least one networking gateway component (e.g., gateway184), as well as one or more isolated internal networks186not connected to gateway184. Gateway184(e.g., executing as a virtual appliance) is configured to provide VMs172and other components in cloud computing environment170with connectivity to external network140(e.g., Internet). Gateway184manages external public IP addresses for virtual data center180and one or more private internal networks interconnecting VMs172. Gateway184is configured to route traffic incoming to and outgoing from virtual data center180and provide networking services, such as firewalls, network address translation (NAT), dynamic host configuration protocol (DHCP), and load balancing. Gateway184may be configured to provide virtual private network (VPN) connectivity over a network140with another VPN endpoint, such as a gateway124within private data center102. In other embodiments, gateway184may be configured to connect to communicate with private data center102using a high-throughput, dedicated link (depicted as a direct connect142) between private data center102and cloud data center150. In one or more embodiments, gateways124and184are configured to provide a “stretched” layer-2 (L2) network that spans private data center102and virtual data center180, as shown inFIG. 1.

WhileFIG. 1depicts a single connection between private gateway124and cloud-side gateway184for illustration purposes, it should be recognized that multiple connections between multiple private gateways124and cloud-side gateways184may be used. Furthermore, whileFIG. 1depicts a single instance of a gateway184, it is recognized that gateway184may represent multiple gateway components within cloud data center150. In some embodiments, a separate gateway184may be deployed for each virtual data center, or alternatively, for each tenant. In some embodiments, a gateway instance may be deployed that manages traffic with a specific tenant, while a separate gateway instance manages public-facing traffic to the Internet. In yet other embodiments, one or more gateway instances that are shared among all the tenants of cloud data center150may be used to manage all public-facing traffic incoming and outgoing from cloud data center150.

In one embodiment, each virtual data center180includes a “hybridity” director module (depicted as hybridity director174) configured to communicate with the corresponding hybrid cloud manager132in private data center102to enable a common virtualized computing platform between private data center102and cloud data center150. Hybridity director174(e.g., executing as a virtual appliance) may communicate with hybrid cloud manager132using Internet-based traffic via a VPN tunnel established between gateways124and184, or alternatively, using direct connection142. In one embodiment, hybridity director174may control gateway184to control network traffic into virtual data center180. In some embodiments, hybridity director174may control VMs172and hosts162of cloud data center150via infrastructure platform154.

Hybrid cloud computing system provides a software stack, which allows from the migration of VMs from any on-premise data center (e.g., private data center102) to any cloud data center (e.g., cloud data center150). It still remains a daunting task, however, to migrate a large portion, or the whole data center, from on-premise data center to cloud data center.

One technique for migration and disaster recovery requires users to explicitly create migration plans wherein the user must define multiple sets of VMs to be brought up, as well as the priority order inside the set of VMs. In most cases, the priority is decided by application dependence. Such a migration and recovery technique is manual, in which the user needs to define and configure based on the scenario being presented (i.e., whether disaster recovery, complete migration, partial migration, and the like).

The method discussed below automates migration and disaster recovery by generating a recommendation of a migration schedule for the VMs to be migrated from private data center102to cloud data center150. The method may be applied to disaster recovery scenarios, as well as total and partial migrations.

FIG. 2is a logical diagram of private data center102, according to an embodiment. As recited above, private data center102includes a hybrid cloud manager132communicating with one or more VMs120, running on host104. Hybrid cloud manager102includes a boundary agent202, a connectivity agent204, a cluster agent206, and a migration planner208.

Boundary agent202is configured to define a scope of migration. Determining the scope of migration aids in obtaining an accurate account of the resources, which are to be moved, as well as any external dependencies (i.e., those VMs that are not migrating) of the resources post-migration. Additionally, to enable migration and ensure dependency tracking, boundary agent202may also replicate private data center102framework in cloud data center150. For example, boundary agent202prepares a landing zone in cloud data center150that is configured to accept new migrating workloads from private data center102.

Connectivity agent204is configured to discover workloads running on private data center102, as well as their network connectivity. For example, for each workload running on private data center102, connectivity agent204will fetch resource usage metrics associated with each VM120. In another example, connectivity agent204searches for signatures associated with each VM120to discover workloads running thereon. Based on at least the usage metrics, the signatures associated with each VM120, and network connectivity among VMs120, connectivity agent204may generate a weighted graph of VMs120. In the graph, each VM120may be represented as a node. Each edge between a pair of nodes can denote network connectivity therebetween. The weighted graph aids in depicting network topology among the plurality of VMs120. Alternatively, in another embodiment, connectivity agent204may be configured to receive a network topology from a user. For example, connectivity agent204may work with a third party plugin to allow a user to input a pre-defined topology.

Cluster agent206is configured to group VMs120ninto one or more clusters. Cluster agent206may implement a variety of techniques to group VMs120n. In an embodiment, cluster agent206parses through a profile associated with each VM120i. For example, cluster agent206may parse through a VM profile searching for application signatures, type of operating system, and the like, to help identify like VMs120i. In an embodiment, cluster agent206may identify groups of VMs120iby determining connectivity between VMs. For example, cluster agent206may identify clusters of VMs by identifying “chatty” VMs, i.e. those VMs that communicate frequently. In an embodiment, cluster agent206may group VMs120iinto one or more clusters by determining location of each VM120i. For example, generally, VMs120, located as peers in a network provides a good indication of having some form of dependency, for having to be co-located with each other. In an embodiment, cluster agent206may group VMs120iinto one or more clusters by identifying firewall rules or routes for each VM120i. For example, generally, network security and flow rules are defined with VM groups in mind. Thus, parsing firewall data can help identify groups of VMs, which should be grouped together with minimal hurdles in between. In an embodiment, cluster agent206may also be able to receive input from an end user to help identify groups of VMs120i.

Migration planner208is configured to develop a migration strategy for moving the clusters for VMs from private data center102to cloud data center150. For example, migration planner208may develop a migration strategy based on at least the cluster's business criticality as well a given cluster's dependency to other clusters. In an embodiment, migration planner208may present the migration strategy to the user for approval. In an embodiment, a user may be able to edit the migration strategy generated by the migration planner208to expedite migration of one or more critical workloads.

FIG. 3is a flow diagram illustrating a method300of migrating VMs from an on-premise data center (e.g., private data center102) to a cloud data center (e.g., cloud data center150), according to an embodiment. At step302, hybrid cloud manager132determines a scope of migration from private data center102to cloud data center150. For example, in an embodiment, a user may request a complete migration from private data center102to cloud data center150. In this scenario, the scope of migration may be defined as the entirety of the client's resources on private data center102. In another embodiment, the migration may be prompted as a result of a disaster recovery scenario. In this scenario, migration assistant132may define the scope of migration as only those resources that are marked as “protected,” i.e. those resources that a user has chosen to protect in such a scenario. In another embodiment, a user may request that only specific resources may be migrated from private data center102to cloud data center150. As such, hybrid cloud manager determines that the scope of the migration includes only the specific resources requested by the user. Defining a scope of the migration prior to migrating the resources provides an account of the resources to be moved as well as their external dependencies that will be preserved post-migration. Additionally, while defining scope of migration, hybrid cloud manager132may also replicate the infrastructure framework of private data center102onto cloud data center150. Replicating the infrastructure framework provides a “landing zone” on cloud data center150that is prepared to accept new migrating workloads.

Determining the scope of migration includes discovering the workloads running on private data center102along with the network connectivity of those workloads. For example, hybrid cloud manager132may communicate with private data center102to determine those VMs running thereon. Once hybrid cloud manager132determines the VMs running on private data center102, hybrid cloud manager132may fetch resource usage metrics associated with each VM, as well as information directed to applications running on each VM, identifying known application signatures. With this data, hybrid cloud manager132may derive a graph of VMs as nodes, with an edge between each node denoting network connectivity.

For example,FIG. 4Aillustrates an example graph400denoting VMs within the scope of migration as well as their respective network connectivity. In this example, hybrid cloud manager132determined that seventeen VMs1201-12017are within the scope of migration. Each VM120iis represented as a unique node402in graph400. Graph400illustrates a plurality of edges404connecting a single node402ito one or more nodes402j, where i, jϵ(1 . . . 17). Each edge404denotes a network connection between a given set of nodes. Accordingly, graph400illustrates the VMs120within the defined scope and their associated network connections.

At step304, hybrid cloud manager132groups VMs defined in the scope of migration into one or more clusters. Grouping the VMs into one or more clusters aids in migrating related VMs at the same time. For example, assume that in a disaster recovery scenario that there is a three-tier application to be migrated. Assume VM120xhosts a web server; VM120yhosts and application; and VM120zhosts a database, where x,y,zϵ(1 . . . n). The user would create a recovery plan where the user would explicitly create different sets (i.e. three in this case: web server, application, and database) and instruct hybrid cloud manager132to first recover/boot all VMs that belong to database, and then the application, and then the web server. Accordingly, VM120x, VM120y, and VM120zwould be grouped in the same cluster.

FIG. 5is a flow diagram500of step304fromFIG. 3in more detail, according to an embodiment. Step304includes sub-steps502-510. At sub-step502, hybrid cloud manager132searches through a profile of each VM to determine how to group each respective VM. Hybrid cloud manager132may parse through a VM profile searching for application signatures, type of operating system, and the like to determine how to group that respective VM. For example, hybrid cloud manager132may try to group each VM executing a Windows operating system. In another example, hybrid cloud manager132may identify an Oracle database application signature in one VM profile, and subsequently attempt the group all VMs with the Oracle database application signature.

At step504, hybrid cloud manager132identifies network connectivity of each VM. Determining which additional VMs a respective VM communicates with aids in determining how to group the respective VM. For example, it would be beneficial for VMs that communicate often (i.e., “chatty” VMs) to be grouped together, or categorized as closely as possible.

At step506, hybrid cloud manager132identifies a location of each VM. Determining the location of each VM aids in determining how to group the respective VM. For example, VMs located as peers within a given network provides an indication that those VMs have some form of dependency. As such, it would be beneficial to group those VMs together in a cluster. Graph400inFIG. 4Adenoting the network connectivity between each VM is helpful in determining how to group each VM. For example, hybrid cloud manager132may group each VM having a direct connection therebetween (i.e., and edge connecting two nodes) into a respective cluster.

At step508, hybrid cloud manager132identifies security data for a respective VM. For example, network security and flow rules may be defined with application groups in mind. The network security and flow rules may be in the form of firewall rules. Parsing network security data for each VM can aid in identifying groups of VMs, which can be grouped together in a cluster. It is beneficial to group such VMs, because constraining the group of VMs to a single cluster can decrease an amount of security barriers that must be overcome.

At step510, hybrid cloud manager132is configured to receive user input related to grouping VMs. For example, hybrid cloud manager132may work with a third-party plugin that allows a user to define clusters of VMs. In an embodiment, user may only predefine one or more clusters of VMs. In this scenario, hybrid cloud manager132may carry out steps302-310above to determine additional clusters of VMs. In another embodiment, the user may predefine all clusters of VMs, such that there are no remaining VMs for hybrid cloud manager132to categorize.

FIG. 4Billustrates a graph410illustrating a set of VMs1201a-1203kcategorized into one or more clusters412a-412k. As shown, cluster412ais a cluster comprising VM1a, VM2a, VM3a, and VM4a. Cluster412amay be directed to VMs across which an Oracle database is executing. For example, cluster412bmay be a cluster comprising VM1band VM2b. Cluster412bis directed to VMs across which a web server is executing. Cluster412cis a cluster comprising VM1c, VM2c, and VM3c. Cluster412cmay be directed to VMs across which a Windows server farm is executing. Cluster412dis a cluster comprising VM1d, VM2d, VM3d, VM4d, VM5d, and VM6d. Cluster412dmay be directed to VMs across which big data is stored. Cluster412eis a cluster comprising VM1e. Cluster412emay be directed to VMs across which a test server is executing. Cluster412fis a cluster comprising VM1fand VM2f. Cluster412fmay be directed to VMs across which an active directory is executing. Cluster412gis a cluster comprising VM1g, VM2g, and VM3g. Cluster412gmay be directed to VMs across which a MySQL® database may be executing. As discussed, hybrid cloud manager132defined clusters412a-412gby parsing each VM and locating an application signature defined therein. In other words, clusters412a-412gare application based clusters.

Cluster412his a cluster comprising VM1h, VM2h, VM3h, VM4h, and VM5h. Cluster412iis a cluster comprising VM1i, VM2i, VM3i, VM4i, VM5i, and VM6i. Cluster412jis a cluster comprising VM1j, VM2j, and VM3j. In an embodiment, cluster412h-4121may be clusters that were defined based on network connectivity. In another embodiment, cluster412h-4121may be clusters that were defined based on network security rules. In another embodiment, each cluster412h-4121is defined based on discovery methods discussed above in conjunction withFIG. 5.

Cluster412kis a cluster comprising VM1k, VM2k, and VM3k. In an embodiment, cluster412kis a user-defined cluster. For example, hybrid cloud manager132may receive feedback from the user noting that VM1k, VM2k, and VM3kshould be grouped together as a cluster. In an embodiment, such grouping may eliminate the VM1k, VM2k, and VM3kfrom the pool of VMs to be analyzed by hybrid cloud manager

Referring back toFIG. 3, at step306, hybrid cloud manager132defines one or more migration phases. For example, hybrid cloud manager132categorizes each cluster into a specific migration phase. Hybrid cloud manager132derives an initial strategy for each VM from private data center102to cloud data center150. Hybrid cloud manager132derives this strategy through several factors such as business criticality of the cluster, as well as the cluster's dependency to other VMs or additional clusters. For example, referring toFIG. 4B, cluster412aincludes VM2a, which communicates with VM3gin cluster412g, VM1fin cluster412f, and VM1ein cluster412e, as well as VM3awhich communicates with VM1din cluster412d. As such, hybrid cloud manager132may determine that cluster412ais one of the more critical clusters because cluster412ahas the most lines of communication extending therefrom. Accordingly, cluster412amay be included in a first migration phase due to its criticality. In another embodiment, hybrid cloud manager132may derive the migration strategy based on the progression of infrastructure replication from private data center102to cloud data center150. For example, the migration phases may be defined based on the estimated time it will take for portions of the infrastructure on private data center102to be replicated on private data center150.

FIG. 4Cillustrates a flow diagram visually illustrating a migration strategy420, according to one embodiment. Migration strategy420includes migration phase4221, migration phase4222, and migration phase4223. Each migration phase4221-4223encompasses one or more clusters412a-412kdefined above, in conjunction withFIG. 4B. For example, hybrid cloud manager132may begin migration with those VMs grouped in the clusters associated with migration phase4221. In an embodiment, after migration phase4221, hybrid cloud manager132reaches a first validation point4241. At first validation point4241, hybrid cloud manager132prompts the user to validate, or ask for changes, to the remaining migration strategy set forth in migration phases4222and4223. For example, a user may edit migration phases4222and4223to swap one or more clusters therebetween. Additionally, at first validation point4241, user may bifurcate the remaining migration phases to prioritize one or more clusters. Continuing with the example inFIG. 4C, after validation point4241and migration phase4222, hybrid cloud manager reaches a second validation point4242. Generally, for each migration phase, there may exist a validation point prior to the migration phase for user validation. At each validation point, a user may edit the remaining migration phases.

As the hybrid cloud manager132defines the migration phases, hybrid cloud manager132may also generate a chart listing the VMs defined in the migration scope, the cluster to which each VM belongs, the migration phase of that VM, and as the VM's associated hybridity actions.FIG. 4Dillustrates an example of a chart490generated by cloud manager132. Hybridity actions may include preferences related to network extensions, network rules (firewall rules, routes, and the like), memory, boot order, and the like. For example, as illustrated in chart400, VM1is associated with Group1, which will be migrated in Phase1; VM2is associated with Group1, which will be migrated in Phase1; VM3is associated with Group2, which will be migrated in Phase1; VM4is associated with Group6, which will be migrated in Phase3.

At step308, hybrid cloud manager132generates a migration schedule. Hybrid cloud manager132generates the migration schedule based off at least the one or more migration phases defined at step310. For example, migration schedule may be based off of first migrating phase4221, then migration phase4222, and subsequently migration phase4223. Additionally, hybrid cloud manager132may generate the migration schedule based off user input, as well as the one or more migration phases in step310. For example, hybrid cloud manager may generate an initial migration schedule, and then modify the migration schedule after input from the user.

FIG. 4Eillustrates an example of a migration schedule440, generated according to step308discussed above in conjunction withFIG. 3. Migration schedule440is broken down into tables4411-4413associated with each migration phase. Table4411illustrates the clusters associated with migration phase4221. Table4412illustrates the clusters associated with migration phase4222. Table4413illustrates the groups associated with migration phase4223. For each group, tables4411-4413list the estimated time of migration, transfer size estimate, and retry policy, alert level, and migration type. The estimated time of migration defines an estimated time it will take to migrate the VMs in a given cluster from private data center102to cloud data center150. The estimated transfer size defines an estimated size of each cluster. The retry policy defines an amount of attempts that will be made to migrate each cluster to cloud data center150before prompting the user with an error message. The migration type defines the type of migration for each cluster. For example, the migration type may be chosen from one of a cold, warm, or hot migration. In a cold migration, hybrid cloud manager132suspends the VM on private data center102before transferring the VM to cloud data center150and subsequently powering back on the VM. In a warm migration, the hybrid cloud manager132creates a replica of a live VM (i.e., the source VM) and moves the replica to the cloud data center150. The hybrid cloud manager132subsequently performs a switchover to power off the source VM and power on the migrated replicated VM. In a hot migration, the VM is not suspended prior to migration from private data center102to cloud data center150; rather, the VM is “live,” i.e. remains powered-on.

Referring back toFIG. 3, at step310hybrid cloud manager132begins migration of the VMs from private data center102to cloud data center150. Hybrid cloud manager132migrates the VMs in accordance with schedule440generated in step308. In some embodiments, hybrid cloud manager132may pause migration at one or more validation points after each migration phase to determine whether the user has any changes to the migration schedule. Based on whether the user modifies the migration schedule, hybrid cloud manager132may update the schedule440and continue with migration.

Accordingly, the method discussed inFIG. 3eliminates the need for manual entry of a recovery or migration plan from private data center102to cloud data center150.