Container Fault Tolerance in Virtualized Environments
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing high availability approaches in virtualized computing environments are not designed to provide fault tolerance for containers running inside virtual machines, leading to undesirable data loss or corruption when a failure occurs, especially for business-critical legacy applications.
Innovation Solution
Implementing a fault tolerance mechanism where a snapshot of a container is created and transferred to a secondary virtual machine upon failure, allowing the container to be resumed without reinitialization, reducing downtime and resource consumption.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If containers are run inside virtual machines to leverage both container and virtualization technologies, then resource efficiency and portability are improved, but fault tolerance deteriorates because container crashes occur when the virtual machine fails
Solution Approach 1:
The system segments the container lifecycle management from the virtual machine lifecycle. When a container needs fault tolerance, it is divided into two independent components: the primary virtual machine hosting the container, and a secondary virtual machine prepared as a failover target. This segmentation allows the container to be rescued independently from VM failures.
Solution Approach 2:
The system performs preliminary actions by pre-configuring a secondary virtual machine before failures occur. The secondary VM is prepared with the necessary environment and kept in a standby state, so that when the primary VM fails, the container can be quickly migrated without needing to recreate it. This advance preparation eliminates the need for reinitialization after failure.
2Reliability
If traditional high availability approaches are used with continuous synchronization between primary and secondary virtual machines, then fault tolerance is improved, but resource consumption and complexity increase
Solution Approach 1:
The system extracts the fault tolerance mechanism from the continuous synchronization process. Instead of maintaining constant synchronization between primary and secondary VMs, the invention only transfers container state information when needed (at failure recovery). This eliminates the overhead of continuous synchronization while maintaining fault tolerance.
Solution Approach 2:
The system uses copying of container state information rather than continuous synchronization. The secondary virtual machine receives a copy of the container's memory state and configuration data only when failover is required. This copying approach is resource-efficient compared to maintaining real-time synchronized copies.
3Productivity
If containers are restarted after virtual machine failure, then service restoration is achieved, but downtime increases due to reinitialization
Solution Approach 1:
The secondary virtual machine is pre-configured with the container's execution environment, configuration, and initial state before failure occurs. This preliminary preparation ensures that when failover happens, the container can resume execution immediately without needing to go through the time-consuming reinitialization process.
Solution Approach 2:
The invention introduces an intermediary mechanism (the secondary virtual machine with pre-loaded container state) that bridges the gap between primary VM failure and container restoration. This intermediary holds the container's state information and enables rapid recovery, acting as a buffer that eliminates the need for time-consuming restart procedures.
Data Source
AI summary
Example methods are described to provide fault tolerance for a container in a virtualized computing environment that includes a first virtual machine and a second virtual machine. The method may comprise detecting a failure at the first virtual machine. The container may be supported by the first virtual machine to run an application on a first operating system of the first virtual machine. The method may further comprise providing data relating to the container to the second virtual machine; and based on the data relating to the container, resuming the container in the second virtual machine to run the application on a second operating system of the second virtual machine.


