Openlab 01 - Workshop Virtualisierung/Xen: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
 
Zeile 18: Zeile 18:
 
  xm list
 
  xm list
 
  xm console 1
 
  xm console 1
 +
 +
=== Live Migration ===
 +
 +
Seit DRBD v8.0.6 unterstützt drbd für Xen Live Migration. Dabei wird eine DomU fast ohne Unterbrechung zwischen zwei Hosts verschoben. Normalerweise geht das nur wenn beide Hosts über ein geteiltes Laufwerk (iSCSI/FC Disk) verfügen. Aber mit einer DRBD Active/Active Konfiguration geht das nun auch.
 +
Dafür gibt es in den DRBD Sourcen ein Shell Script das bei der installation nach ''/etc/xen/scripts/block-drbd'' kopiert wird und das Handling übernimmt.
 +
 +
Ausgangsbasis ist eine mit xen-create-image erstellte DomU die als Imagedatei in ''/xen/domains/xen01/disk.img'' liegt. Sowie zwei Dom0 die eine DRBD0 (r0) Resource teilen die erfolgreich eingerichtet ist. Die DRBD Konfiguration sieht folgendermaßen aus.
 +
 +
<pre>
 +
# /etc/drbd.conf
 +
 +
global {
 +
    usage-count yes;
 +
}
 +
 +
common {
 +
  syncer { rate 10M; }
 +
}
 +
 +
resource r0 {
 +
  protocol C;
 +
 +
  handlers {
 +
    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
 +
    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
 +
    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
 +
    #outdate-peer "/usr/sbin/drbd-peer-outdater";
 +
  }
 +
 +
  disk {
 +
    on-io-error  detach;
 +
  }
 +
 +
  net {
 +
    # Wichtig
 +
    allow-two-primaries;
 +
    after-sb-0pri discard-zero-changes;
 +
    after-sb-1pri discard-secondary;
 +
    # Wichtig
 +
    after-sb-2pri disconnect;
 +
    rr-conflict disconnect;
 +
 +
  }
 +
 +
  syncer {
 +
    rate 10M;
 +
    al-extents 257;
 +
  }
 +
 +
  on xen0a {
 +
    device    /dev/drbd0;
 +
    disk      /dev/sda3;
 +
    address    10.72.241.100:7788;
 +
    flexible-meta-disk  internal;
 +
  }
 +
 +
  on xen0b {
 +
    device    /dev/drbd0;
 +
    disk      /dev/sda3;
 +
    address  10.72.241.101:7788;
 +
    meta-disk internal;
 +
  }
 +
 +
}
 +
</pre>
 +
 +
Nun mounten wir r0 auf einem der Rechner und kopieren den Inhalte des DomU Image auf r0.
 +
 +
mount /dev/drb0 /drb0
 +
mount -o loop /xen/domains/xen01/disk.img /mnt
 +
cp -a /mnt /drbd0/
 +
 +
Nun werden die Laufwerke wieder ausgehängt und folgende Zeile an der DomU konfiguration geändert.
 +
 +
ALT: disk = [ 'file:/xen/domains/xen01/disk.img,sda1,w', 'file:/xen/domains/xen01/swap.img,sda2,w' ]
 +
NEU: disk = [ 'drbd:r0,sda1,w', 'file:/xen/domains/xen01/swap.img,sda2,w' ]
 +
 +
Jetzt sollten wir die DomU auf beiden Dom0 starten können.
 +
 +
# auf dom0-a
 +
xm create /etc/xen/xen01.cfg
 +
xm list
 +
xm shutdown xen01
 +
# auf dom0-b
 +
xm create /etc/xen/xen01.cfg
 +
xm list
 +
 +
Um ein automatisches Migrate (oder auch eine Live Migrate) machen zu können müssen wir den xend-relocation-server starten. Dazu ergänzenm wir /etc/xen/xend-config.sxp um folgende Zeile und starten xend neu:
 +
 +
(xend-relocation-server yes)
 +
 +
Nun läßt sich eine laufende DomU mit folgender Anweisung auf die Nachbar Dom0 schieben. Das dauert ca. 2 Sekunden. Alle Prozesse laufen dabei weiter.
 +
 +
xm migrate --live xen01 <neighbour-ip>

Version vom 18. Januar 2009, 15:34 Uhr

Kickoff

Xen installieren

# Pakete installieren
apt-get install xen-linux-system-2.6.18-6-xen-686 xen-tools xen-utils-common libc6-xen bridge-utils
# Anpasungen der Konfig (Wo liegen die Filesystem Images und welcher Kernel wird verwendet)
sed -ie "s/# dir = \/home\/xen/dir = \/xen/" /etc/xen-tools/xen-tools.conf
sed -ie "s/2.6.16-2/2.6.18-6/g" /etc/xen-tools/xen-tools.conf

Nun sollte man in /etc/xen/xend-config.sxp noch (network-script network-bridge) einkommentieren oder wenn man nicht eth0 als standard Interface verwendet die Zeile (network-script 'network-bridge netdev=bond0') verwenden. Danach muß xend einmal reloaded werden. Nun sollte das Bridge Device xenbr0 existieren.

Als nächstes wird eine DomU installiert und anschließend gestartet.

xen-create-image --debootstrap --swap 128Mb --memory 128Mb --dist etch --dhcp --hostname xen01
# Statt --dhcp kann auch eine feste IP angegeben werden --ip 192.168.1.222 --netmask 255.255.255.0 --gateway 192.168.1.1 
xm create /etc/xen/xen01.cfg 
xm list
xm console 1

Live Migration

Seit DRBD v8.0.6 unterstützt drbd für Xen Live Migration. Dabei wird eine DomU fast ohne Unterbrechung zwischen zwei Hosts verschoben. Normalerweise geht das nur wenn beide Hosts über ein geteiltes Laufwerk (iSCSI/FC Disk) verfügen. Aber mit einer DRBD Active/Active Konfiguration geht das nun auch. Dafür gibt es in den DRBD Sourcen ein Shell Script das bei der installation nach /etc/xen/scripts/block-drbd kopiert wird und das Handling übernimmt.

Ausgangsbasis ist eine mit xen-create-image erstellte DomU die als Imagedatei in /xen/domains/xen01/disk.img liegt. Sowie zwei Dom0 die eine DRBD0 (r0) Resource teilen die erfolgreich eingerichtet ist. Die DRBD Konfiguration sieht folgendermaßen aus.

# /etc/drbd.conf

global {
    usage-count yes;
}

common {
  syncer { rate 10M; }
}

resource r0 {
  protocol C;

  handlers {
    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
    #outdate-peer "/usr/sbin/drbd-peer-outdater";
  }

  disk {
    on-io-error   detach;
  }

  net {
    # Wichtig
    allow-two-primaries;
    after-sb-0pri discard-zero-changes;
    after-sb-1pri discard-secondary;
    # Wichtig
    after-sb-2pri disconnect;
    rr-conflict disconnect;

  }

  syncer {
    rate 10M;
    al-extents 257;
  }

  on xen0a {
    device     /dev/drbd0;
    disk       /dev/sda3;
    address    10.72.241.100:7788;
    flexible-meta-disk  internal;
  }

  on xen0b {
    device    /dev/drbd0;
    disk      /dev/sda3;
    address   10.72.241.101:7788;
    meta-disk internal;
  }

}

Nun mounten wir r0 auf einem der Rechner und kopieren den Inhalte des DomU Image auf r0.

mount /dev/drb0 /drb0
mount -o loop /xen/domains/xen01/disk.img /mnt
cp -a /mnt /drbd0/

Nun werden die Laufwerke wieder ausgehängt und folgende Zeile an der DomU konfiguration geändert.

ALT: disk = [ 'file:/xen/domains/xen01/disk.img,sda1,w', 'file:/xen/domains/xen01/swap.img,sda2,w' ]
NEU: disk = [ 'drbd:r0,sda1,w', 'file:/xen/domains/xen01/swap.img,sda2,w' ]

Jetzt sollten wir die DomU auf beiden Dom0 starten können.

# auf dom0-a
xm create /etc/xen/xen01.cfg
xm list
xm shutdown xen01
# auf dom0-b
xm create /etc/xen/xen01.cfg
xm list

Um ein automatisches Migrate (oder auch eine Live Migrate) machen zu können müssen wir den xend-relocation-server starten. Dazu ergänzenm wir /etc/xen/xend-config.sxp um folgende Zeile und starten xend neu:

(xend-relocation-server yes)

Nun läßt sich eine laufende DomU mit folgender Anweisung auf die Nachbar Dom0 schieben. Das dauert ca. 2 Sekunden. Alle Prozesse laufen dabei weiter.

xm migrate --live xen01 <neighbour-ip>
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge