Fault tolerance for hybrid cloud deployments
A technique for providing fault tolerance for virtual machines in a hybrid cloud computing system is discussed. When a primary virtual machine (VM) in a private data center is configured for fault tolerance, a secondary VM is instantiated in a public cloud computing system. Changes to the execution state of the primary VM are recorded and relayed to the secondary VM by way of caching modules, which provide acknowledgements messages back to the primary VM. A technique for failback from the public cloud computing system to the private data center is also discussed.
1. A method for managing a hybrid cloud computing system, the method comprising:
instantiating a secondary virtual machine in a public cloud computing system by creating and running the secondary virtual machine in the public cloud computing system, the secondary virtual machine having an execution state corresponding to a primary virtual machine in a private data center;
configuring the secondary virtual machine to run in a virtual lockstep with the primary virtual machine;
in response to configuring the secondary virtual machine to run in a virtual lockstep with the primary virtual machine, recording changes to the execution state of the primary virtual machine;
receiving, at the public cloud computing system, the changes to the execution state of the primary virtual machine from a first caching module in the private data center; and
updating state data and a virtual disk of the instantiated secondary virtual machine according to the received changes to the execution state of the primary virtual machine, wherein at least a portion of output activity of the instantiated secondary virtual machine is suppressed.
2. The method of claim 1 , further comprising initiating a failover operation responsive to failure of the primary virtual machine, the failover operation comprising:
receiving remaining changes that occurred to the execution state of the primary virtual machine from the first caching module until a point of failure of the primary virtual machine;
updating the state data and the virtual disk of the secondary virtual machine according to the remaining changes; and
operating the secondary virtual machine in the public cloud computing system as a new primary virtual machine in place of the prior primary virtual machine.
3. The method of claim 2 , further comprising:
updating a network routing entry in a router in the private data center to redirect traffic to the secondary virtual machine in the public cloud computing system.
4. The method of claim 2 , further comprising:
dynamically updating a domain name service (DNS) to refer to the secondary virtual machine in the public cloud computing system.
5. The method of claim 2 , further comprising:
instantiating a tertiary virtual machine in the private data center, the tertiary virtual machine having an execution state corresponding to the secondary virtual machine in the public cloud computing system; and
initiating a failback operation from the secondary virtual machine to the tertiary virtual machine.
6. The method of claim 1 , wherein the first caching module transmits acknowledgements to the primary virtual machine indicating that changes to the execution state of the primary virtual machine have been logged.
7. The method of claim 1 , wherein the primary virtual machine updates a virtual disk in the private data center, and the secondary virtual machine updates a second virtual disk stored in the public cloud computing system.
8. A non-transitory computer-readable storage medium comprising instructions that, when executed in a computing device, manage a hybrid cloud computing system, by performing the steps of:
instantiating a secondary virtual machine in a public cloud computing system by creating and running the secondary virtual machine in the public cloud computing system, the secondary virtual machine having an execution state corresponding to a primary virtual machine in a private data center;
configuring the secondary virtual machine to run in a virtual lockstep with the primary virtual machine;
in response to configuring the secondary virtual machine to run in a virtual lockstep with the primary virtual machine, recording changes to the execution state of the primary virtual machine;
receiving, at the public cloud computing system, the changes to the execution state of the primary virtual machine from a first caching module in the private data center; and
updating state data and a virtual disk of the instantiated secondary virtual machine according to the received changes to the execution state of the primary virtual machine wherein at least a portion of output activity of the instantiated secondary virtual machine is suppressed.
9. The non-transitory computer-readable storage medium of claim 8 , further comprising initiating a failover operation responsive to failure of the primary virtual machine, the failover operation comprising:
receiving remaining changes that occurred to the execution state of the primary virtual machine from the first caching module until a point of failure of the primary virtual machine;
updating the state data and the virtual disk of the secondary virtual machine according to the remaining changes; and
operating the secondary virtual machine in the public cloud computing system as a new primary virtual machine in place of the prior primary virtual machine.
10. The non-transitory computer-readable storage medium of claim 9 , further comprising:
updating a network routing entry in a router in the private data center to redirect traffic to the secondary virtual machine in the public cloud computing system.
11. The non-transitory computer-readable storage medium of claim 9 , further comprising:
dynamically updating a domain name service (DNS) to refer to the secondary virtual machine in the public cloud computing system.
12. The non-transitory computer-readable storage medium of claim 9 , further comprising:
instantiating a tertiary virtual machine in the private data center, the tertiary virtual machine having an execution state corresponding to the secondary virtual machine in the public cloud computing system; and
initiating a failback operation from the secondary virtual machine to the tertiary virtual machine.
13. The non-transitory computer-readable storage medium of claim 8 , wherein the first caching module transmits acknowledgements to the primary virtual machine indicating that changes to the execution state of the primary virtual machine have been logged.
14. The non-transitory computer-readable storage medium of claim 8 , wherein the primary virtual machine updates a virtual disk in the private data center, and the secondary virtual machine updates a second virtual disk stored in the public cloud computing system.
15. A hybrid cloud computing system comprising:
a private data center comprising a host computer executing a primary virtual machine; and
a public cloud computing system configured to:
instantiate a secondary virtual machine in the public cloud computing system by creating and running the secondary virtual machine in the public cloud computing system, the secondary virtual machine having an execution state corresponding to the primary virtual machine in the private data center;
configure the secondary virtual machine to run in a virtual lockstep with the primary virtual machine;
in response to configuring the secondary virtual machine to run in a virtual lockstep with the primary virtual machine, record changes to the execution state of the primary virtual machine;
receive, at the public cloud computing system, the changes to the execution state of the primary virtual machine from a first caching module in the private data center; and
update state data and a virtual disk of the instantiated secondary virtual machine according to the received changes to the execution state of the primary virtual machine, wherein at least a portion of output activity of the instantiated secondary virtual machine is suppressed.
16. The hybrid cloud computing system of claim 15 , wherein the public cloud computing system is further configured to initiate a failover operation responsive to failure of the primary virtual machine, the failover operation comprising:
receiving remaining changes that occurred to the execution state of the primary virtual machine from the first caching module until a point of failure of the primary virtual machine;
updating the state data and the virtual disk of the secondary virtual machine according to the remaining changes; and
operating the secondary virtual machine in the public cloud computing system as a new primary virtual machine in place of the prior primary virtual machine.
17. The hybrid cloud computing system of claim 16 , wherein the public cloud computing system is further configured to:
update a network routing entry in a router in the private data center to redirect traffic to the secondary virtual machine in the public cloud computing system; and
dynamically update a domain name service (DNS) to refer to the secondary virtual machine in the public cloud computing system.
18. The hybrid cloud computing system of claim 16 , wherein the public cloud computing system is further configured to:
instantiate a tertiary virtual machine in the private data center, the tertiary virtual machine having an execution state corresponding to the secondary virtual machine in the public cloud computing system; and
initiate a failback operation from the secondary virtual machine to the tertiary virtual machine.
19. The hybrid cloud computing system of claim 15 , wherein the first caching module transmits acknowledgements to the primary virtual machine indicating that changes to the execution state of the primary virtual machine have been logged.
20. The hybrid cloud computing system of claim 15 , wherein the primary virtual machine updates a virtual disk in the private data center, and the secondary virtual machine updates a second virtual disk stored in the public cloud computing system.