[Pacemaker] KVM live migration and multipath
Sven Arnold
sven.arnold at localite.de
Wed Jun 19 23:33:01 UTC 2013
Hi All,
it asked this on linux-ha but had no luck. Is anybody here who has some
hints for me or could tell me if it is possible (and sensible) to live
migrate a virtual machine if the disk image is provided by a multipath
device?
I am not sure if my approach is flawed or if I am using the wrong or
misconfigured tools.
Thanks a lot and sorry for crossposting,
Sven
Dear All,
I have set up a three node cluster with shared storage (DRBD
active/passive) which exports iSCSI Volumes (TGT) containing KVM/QEMU
disk images.
The iSCSI Target is configured as one resource and accessible on two
floating ip addresses to allow multipath I/O for speed and redundancy.
The VM hosts are accessing the volumes via open-isci using dm-multipath
(grouping_policy multibus).
While migrating the iSCSI Target from A to B everything works fine.
But if I try to live migrate a virtual machine I experience file system
corruptions inside the virtual machine. So, somehow the switching of the
iSCSI/Multipath Sessions is not handled properly by the VM hosts.
I have configured iSCSI timeouts rather short (noop_out_timeout 5
seconds) and "no_path_retry queue" on the multipath device.
My question(s):
1) Is it conceptually wrong what I am trying to accomplish?
3) Is it valid to use "no_path_retry queue" in such a setup?
4) Did I miss some important configuration options (timings, etc.)?
5) Is TGT multipath capable?
Thank you all for any hints,
Sven
===== Additional Information below: =====
- Cluster Layout
- Environment
- multipath configuration
- iSCSI Timings
- cib configuration (simplified and sorted)
Cluster Layout:
---------------
A B C
(active) <--- DRBD ---> (passive)
iSCSI Target
ip0 ip1 -- failover-->
(floating IPs)
---------------- iSCSI Initiator -----------------------
(two pathes)
---------------- Multipath I/O -----------------------
---------------- libvirt/KVM -----------------------
<------------------------------ failover ----- VM1
Environment:
------------
Ubuntu 12.04.2 LTS
kernel 3.5.0.34
corosync 1.4.2-2
cman 3.1.7-0ubuntu2.1
pacemaker 1.1.6-2ubuntu3
resource-agents 1:3.9.2-5ubuntu4.1
tgt 1:1.0.17-1ubuntu2
open-iscsi 2.0.871-0ubuntu9.12.04.2
multipath-tools 0.4.9-3ubuntu5
multipath.conf:
---------------
defaults {
udev_dir /dev
polling_interval 10
path_selector "round-robin 0"
path_grouping_policy multibus
path_checker readsector0
rr_min_io 100
max_fds 8192
rr_weight priorities
failback immediate
no_path_retry queue
}
iscsi timeouts (from /etc/iscsid/iscsi.conf):
---------------------------------------------
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.auth_timeout = 45
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
cib configuration (excerpt, slightly modified):
-----------------------------------------------
primitive p-drbd-r0 ocf:linbit:drbd \
params drbd_resource="r0" \
op monitor interval="15"
ms ms-drbd-r0 p-drbd-r0 \
meta master-max="1" master-node-max="1" clone-max="2"
clone-node-max="1" notify="true"
primitive p-vg_drbd ocf:heartbeat:LVM \
params volgrpname="vg_drbd" \
op monitor interval="30s" timeout="30s" \
op start interval="0" timeout="30s" \
op stop interval="0" timeout="30s"
primitive p-iscsi-target ocf:heartbeat:iSCSITarget \
params iqn="<iscsi iqn>" tid="1" implementation="tgt"
allowed_initiators="<..initiator ips..>" \
op monitor interval="15s"
primitive p-lun1-vm_disk ocf:heartbeat:iSCSILogicalUnit \
params target_iqn="iqn.2013-03.de.localite:storage" lun="1"
path="/dev/vg_drbd/vm_disk" implementation="tgt" vendor_id="STGT"
primitive p-iscsiip0 ocf:heartbeat:IPaddr2 \
params ip="10.223.101.131" nic="eth2" cidr_netmask="26" \
op monitor interval="20s"
primitive p-iscsiip1 ocf:heartbeat:IPaddr2 \
params ip="10.223.101.195" nic="eth3" cidr_netmask="26" \
op monitor interval="20s"
group rg-iscsitarget p-iscsi-target p-lun1-vm_disk p-iscsiip0 p-iscsiip1
primitive p-iscsi-initiator lsb:open-iscsi \
op monitor interval="30s"
clone clone-iscsiinitiator p-iscsi-initiator \
meta interleave="true"
primitive p-libvirtd lsb:libvirt-bin \
op monitor interval="30s"
clone clone-libvirtd p-libvirtd \
meta interleave="true"
primitive p-vm ocf:heartbeat:VirtualDomain \
params config="/etc/libvirt/qemu/vm.xml"
migration_transport="tls" \
meta allow-migrate="true" \
op start interval="0" timeout="250s" \
op stop interval="0" timeout="300s" \
op monitor interval="60s" timeout="30s" \
op migrate_from interval="0" timeout="300s" \
op migrate_to interval="0" timeout="300s"
colocation col-iscsitarget_on_drbd inf: rg-iscsitarget ms-drbd-r0:Master
order o-drbd-r0_before_vg inf: ms-drbd-r0:promote p-vg_drbd:start
order o-vg-drbd-r0_before_iscsitarget inf: p-vg_drbd rg-iscsitarget
order o-iscsitarget_before_iscsiinitiator 0: rg-iscsitarget
clone-iscsiinitiator
order o-iscsiinitiator_before_libvirt 0: clone-iscsiinitiator clone-libvirtd
order o-libvirt_before_vm inf: clone-libvirtd p-vm
More information about the Pacemaker
mailing list