Live migration of virtual machines
Go Live
DRBD, Pacemaker, and Libvirt
The VM migration concepts of various other third-party suppliers are just as varied as they are complex. However, Linux systems have some built-in tools with the ability to set up VM migration with Libvirt and Pacemaker. The following example is initially based on a simple two-node cluster that uses DRBD to keep its data synchronized between hosts. This type of setup is not particularly complex and offers useful insights into how it works.
For live migration with Libvirt and Pacemaker to work as intended on the basis of DRBD, DRBD must first be taught to run in dual-primary mode; this option is disabled out the box for safety reasons.
DRBD 8.3
How you enable this mode for DRBD depends on the DRBD version you are using. If you are using DRBD 8.3, which is the case for the majority of enterprise systems, the following entry in the resource configuration enables dual-primary mode:
net { allow-two-primaries; }
With DRBD 8.4, you need to add the following entry to the resource configuration:
net { protocol C; allow-two-primaries yes; }
These changes can be made on the fly; you simply need to issue a
drbdadm adjust <resource>
command when you are done. Caution: With Pacemaker, it is advisable at least to switch the cluster to maintenance mode before making any changes to DRBD or Libvirt. To do so, you can type:
crm configure property maintenance-mode=true
directly at the command line of one of the nodes belonging to the cluster; the command is effective throughout the cluster.
Pacemaker with More than Two Nodes
If you use a two-node cluster for virtualization, you will typically want to let Pacemaker manage DRBD. How-tos on the web configure the DRBD resources so that only one of the two nodes runs in primary mode (Figure 2). To change this, you need to make a configuration change to Pacemaker. DRBD resources in Pacemaker typically look like this:
ms ms_drbd-vm1 p_drbd-vm1 meta notify="true" master-max="1" clone-max="2"
To enable dual-primary mode for a DRBD resource like this, just set the value that follows master-max
to 2
. Pacemaker then automatically configures the DRBD resource so that it runs in primary mode on the two cluster nodes.