Configuring virtual machine high availability

High availability keeps virtual machines operational if the node they are located on fails due to a kernel crash, power outage, or becomes unreachable over the network. Graceful shutdown is not considered a failure event.

In the event of failure, the system will attempt to evacuate the affected VMs automatically, that is, migrate them offline with auto-scheduling to other healthy compute nodes in the following order:

  • VMs with the “Active” status are evacuated first and automatically started.
  • VMs with the “Shut down” status are evacuated next and remain stopped.
  • All other VMs are ignored and left on the failed node.

If something blocks the evacuation, for example, the destination compute nodes lack the resources to host the affected VMs, these VMs remain on the failed node and receive the “Error” status. You can evacuate them manually after solving the issue (providing sufficient resources, joining new nodes to the cluster, etc.).

By default, high availability for virtual machines is enabled automatically after creating the compute cluster. If required, you can disable it manually. Keep in mind that virtual machines with disabled high availability will not be evacuated to healthy nodes in the case of a failover.

Prerequisites

To disable high availability for virtual machines

Admin panel

  1. Click the virtual machine for which you wish to disable high availability.
  2. On the VM right pane, click the pencil icon next to the High availability parameter.
  3. In the High availability window, disable high availability for the VM, and then click Save.

Command-line interface

Use the following command:

vinfra service compute server set <server> --ha-enabled {true,false}
--ha-enabled {true,false}
Enable or disable HA for the virtual machine.
<server>
Virtual machine ID or name

For example, to disable high availability for the virtual machine myvm, run:

# vinfra service compute server set myvm --ha-enabled false

To evacuate virtual machines manually

Admin panel

  1. Click a virtual machine in the “Error” status.
  2. Click Evacuate on the VM right pane.

Command-line interface

Use the following command:

vinfra service compute server evacuate <server>
<server>
Virtual machine ID or name

For example, to evacuate the stopped VM myvm from its node to a healthy compute node, run:

# vinfra service compute server evacuate myvm