Login
Newsletter
Werbung

Do, 23. Januar 2014, 15:00

Projekt »Virtueller hochverfügbarer Linux-Server«, Teil 11

Corosync und Pacemaker, libvirt und Live-Migration von KVM

Ein Minimalsystem genügt für den Server. Auf die Installation muss nicht weiter eingegangen werden. Nachdem das neue System erstmals gebootet wurde, müssen wir die Netzwerkschnittstellen einrichten. Die erste soll mit dem Standort-Netz verbunden werden, die zweite soll beide Server durch ein Kabel direkt verbinden. Dazu erhält sie auf dem ersten Server die (willkürlich gewählte) Adresse 192.168.2.1 und auf dem zweiten die Adresse 192.168.2.2.

Als nächstes müssen wir dafür sorgen, dass das Repositorium »squeeze-backports« zur Verfügung steht. Dazu fügen wir zur Datei /etc/apt/sources.list die Zeile

deb http://backports.debian.org/debian-backports squeeze-backports main

hinzu und führen apt-get update aus. Wir nutzen das sogleich aus, um einen aktuelleren Kernel zu installieren. Die Auswahl der Version ist einfach, da es nur einen Kernel auf Basis von Linux 3.2.x gibt.

apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.4-amd64

Da als nächste Maßnahme die Einrichtung von DRBD ansteht, schieben wir gleich ein

apt-get install drbd8-utils

hinterher (hier kann optional auch die Backports-Version verwendet werden). Nun benötigen wir Partitionen für DRBD, und zwar eine pro virtueller Maschine. Eine Live-Migration der VMs ist nur möglich, wenn jede DRBD-Partition im Dual-Primary-Modus betrieben wird - eine Änderung gegenüber dem früheren Setup. Nun könnte man sich die Frage stellen, fällt damit nicht der Grund weg, für jede VM eine eigene Partition anzulegen? Denn dies geschah nur, um die VMs flexibel auf die beiden Server verteilen zu können, je nach Last.

Die Antwort ist ja, falls man das resultierende DRBD-Gerät mit fdisk oder einem weiteren LVM weiter partitionieren würde. Ich plane selbst, in diese Richtung zu gehen, aber erst, wenn ich einen Weg gefunden habe, die Partitionierung weiter zu vereinfachen. Das wird ein Thema in der nächsten Folge sein.

Die VM-Partitionen werden in diesem Beispiel mit vm100, vm101 usw. benannt. Wir kreieren also Partitionen für die VMs mit Kommandos wie folgendem, das ein 6 GB großes logisches Volume in der Volume Group vg0 anlegt:

lvcreate --name=vm100 -L 6G vg0

Nun können wir die Datei /etc/drbd.conf bearbeiten. Diese enthält Definitionen global und common sowie eine Definition pro Ressource (DRBD-Gerät). Der Abschnitt common vereinfacht die Konfiguration erheblich, da er für alle DRBD-Geräte gilt. Die Konfiguration ist gegenüber früher leicht modifiziert, insbesondere sollen beide Rechner die Volumes als Primary mounten können. Mit einem Gerät vm100 und unter Weglassen von Kommentaren und Leerzeilen kann die Datei so aussehen:

global {
  usage-count no;
}
common {
  protocol C;
  handlers {
    pri-on-incon-degr "halt -f";
    pri-lost-after-sb "halt -f";
    fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
    after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
   }
  syncer { rate 125M; }
  startup {
    wfc-timeout      60;
    degr-wfc-timeout 60;
  }
  disk {
    on-io-error   detach;
    fencing       resource-only;
  }
  net {
    ping-timeout 10;    # 1 second
    after-sb-0pri discard-younger-primary;
    after-sb-1pri discard-secondary;
    after-sb-2pri disconnect;
    allow-two-primaries;
  }
}
resource vm100 {
  on erdbeere {
    device     /dev/drbd0;
    disk       /dev/mapper/vg0-vm100;
    address    192.168.2.1:7780;
    meta-disk  internal;
  }
  on himbeere {
    device     /dev/drbd0;
    disk       /dev/mapper/vg0-vm100;
    address    192.168.2.2:7780;
    meta-disk  internal;
  }
}

Diese Datei muss auf beiden Rechnern immer identisch sein! Jetzt können wir auf beiden Servern das Gerät initialisieren:

drbdadm create-md vm100
drbdadm up vm100

Nur auf einem von beiden dürfen wir das folgende Kommando ausführen. Damit bestimmen wir diesen Rechner zum primären Knoten für diese Ressource.

drbdadm -- --overwrite-data-of-peer primary vm100

Auf dem anderen Rechner dürfen wir allerdings auch

drbdadm primary vm100

eingeben, denn wir erlauben anders als früher ja zwei Primarys.

Nun haben wir das Blockgerät /dev/drbd0, das wir auf einem der beiden Rechner mit fdisk formatieren können, um dann eine virtuelle Maschine damit zu starten. Oder wir starten die virtuelle Maschine direkt und erledigen die Partitionierung innerhalb - so würde man vorgehen, wenn man eine Distribution in der VM installieren würde.

Nun sollte man einmal neu booten - erstens um den neuen Kernel zu aktivieren und zweitens, um zu sehen, ob die DRBD-Volumes korrekt starten.

Kommentare (Insgesamt: 5 || Alle anzeigen )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung