Fault Tolerance is used to protect that virtual machine which requires continuous availability of an application, in the event of a host failure. This is accomplished by creating a live secondary instance of the VM that is in virtual locked state with the primary VM. By allowing instantaneous failover between the two VMs, FT eliminates even the smallest chance of disruption, resulting in zero downtime of the VM.
Fault Tolerance makes intensive use of shadowing mechanisms. Once enabled for a particular VM, a secondary VM is created as shadow copy of the original VM. This copy is executed on a different ESXi host and it consumes its own resources such as vCPU, memory, network, and storage. The console of the secondary VM is locked and cannot be used, as all CPU and virtual device inputs on the primary VM are replicated to the secondary VM. This is done using a patented technology called VMware vLockstep. If the primary VM crashes (for example, because of a crash of the ESXi host), the secondary VM, which is an identical replica, immediately takes over. Because all changes inside the virtual machines are synchronized, the guest operating system and applications don’t need to be restarted.
FT is compatible with all guest operating systems supported by vSphere, but there are also some exclusions; check out the VMware knowledge base regarding this at http://kb.vmware.com/kb/1008027. FT works with HA and DRS for advanced load balancing and optimized initial placement of the virtual machines.
Requirements for FT
On the other hand, Fault Tolerance has also some requirements and disadvantages including:
- vSphere HA must be enabled
- Shared storage is needed
- The virtual machine’s virtual disks need to be Thick-provisioned (this limit omitted in vSphere 6.0)
- CPUs must be supported for Fault Tolerance
- ESXi hosts must have compatible processors, preferably the same processor within the same generation
- For vSphere 5.x, only 1 vCPU is supported along with Fault Tolerance, vSphere 6.0 allows up to 2 (Standard, Enterprise) or 4 (Enterprise Plus) vCPUs depending on your vSphere Edition
- Fault Tolerance requires a VMkernel port for shadow transfer. It is preferable to create a dedicated port group for this
Before using VMware Fault Tolerance, it is important to review the Fault Tolerance checklist, which is available in the vSphere documentation center at Link.
To enable FT for the desired VM, follow this next procedure:
- Connect to vCenter Server using vSphere Web Client.
- Select the desired VM from the inventory.
- Go to Actions pane.
- Select All vCenter Actions and then click Fault Tolerance.
- Click Turn on Fault Tolerance.
Turning on FT may result in changes in the amount of disk space a VM consumes. After a confirmation, FT will be enabled in a few moments.
To test Fault tolerance, you can perform a test failover by selecting the VM to be tested and then selecting Actions | All vCenter Actions | Fault Tolerance | Test Failover.
As soon as this option is selected, the current machine is migrated from the primary to the secondary virtual machine. The failover takes only a few short moments, resulting in almost zero downtime for the application. As soon as the machine is migrated to a new host, a new secondary virtual machine is generated on a different host for a failover, in case this machine fails. This means that the virtual machine is still in protection by fault tolerance.