1. A system for maintaining high availability of a plurality of virtual machines in a fault domain, the system comprising: a memory for storing a protected virtual machine list identifying a plurality of virtual machines within a fault domain that are to be maintained in an operating state; a network communication interface configured to receive heartbeat messages from a plurality of hosts executing the virtual machines; and a processor coupled to the memory and programmed to: determine a host, within the plurality of hosts, from which the network communication interface has not received a heartbeat message within a first predetermined duration to identify an unreachable host; determine whether the unreachable host has stored heartbeat data in a datastore within a second predetermined duration; and restart a virtual machine executed by the unreachable host based on determining that the unreachable host has not stored heartbeat data in the datastore within the second predetermined duration.