Proxmox und DRBD für verteiltes Storage in kleinen Clustern

Ausgangslage

Die bevorzugte Methode, um verteilten Storage in Proxmox-Clustern zu verwenden, ist aktuell CEPH. CEPH ist ein grossartiger Ansatz, jedoch auch nicht ganz einfach in Betrieb zu nehmen und für einen kleinen Cluster eigentlich überdimensioniert.

DRBD hingegen ist recht schnell in Betrieb genommen, und fügt sich problemlos in eine Serverinstallation mit LVM ein.

Der Storage-Treiber basierend auf DRBD-Manager wird zwar mit Proxmox noch mitgeliefert, aber ist nicht mehr wirklich unterstützt, seit es um DRBD-Manager einiges Hin- und Her um dessen Lizenzierung gab.

Die im Moment im Proxmox-Wiki empfohlene Variante, zwei DRBD-Volumes zu verwenden, ist unflexibel, funktioniert eigentlich nur mit zwei Knoten, und bietet ein hohes Risiko.

DRBD mit LVM ohne DRBD-Manager

Wir haben uns deshalb entschieden, DRBD mit einem eigenen Storage-Plugin für uns wieder auf eine Weise verfügbar zu machen, wie sie uns gut passt: Mit DRBD-Volumes aufsetzend auf LVM, aber ohne den DRBD-Manager zu verwenden. In diesem Modell wird eine LVM-Volumegroup benötigt (die aber z.B. mit einer lokalen Storage-Volumegroup identisch sein kann). Jede virtuelle Disk erhält zwei LVM-Volumes: Eines für die Metadaten, eines für die Daten. Darauf aufsetzend wird ein DRBD-Volume konfiguriert mit Synchronisation gegen einen Partnerknoten. Die virtuelle Maschine kann also jederzeit auf einem der beiden Partnerknoten laufen. Gibt es mehr als zwei Knoten im Netz, so wird jede VM (und Disk) jeweils auf zwei Knoten lauffähig sein – auf Mehrfachspiegel via DRBD verzichten wir aus Performance- und Komplexitätsgründen.

Bitte beachten Sie: Dieses Storage-Plugin basiert auf bestehenden Storage-Plugins von Proxmox und steht deshalb unter der AGP-Lizenz. Wir verwenden dieses Plugin selbst und stellen es so zur Verfügung, wie es für unsere Zwecke taugt. Wir übernehmen keinerlei Garantie dafür, dass es Ihren Anforderungen entspricht.

 

Installation und Inbetriebnahme

Bevor Sie DRBD in Betrieb nehmen sollten Sie dafür sorgen, dass auf Ihrem System LVM aufgesetzt ist und mindestens eine Volumegroup existiert. Eine bereits bestehende Volumegroup ist in Ordnung, wenn es Sie nicht stört, dass Sie dann evtl. die DRBD-Volumes dann auch in dieser als Inhalt auftauchen.

Unser DRBD-Storage-Plugin finden Sie unter Downloads als Debian-Paket. Laden Sie es herunter und installieren es auf allen Knoten mit

apt install ./pvedrbd-*.deb

Unter /etc/pve/storage.cfg wird automatisch eine Standardkonfiguration eingerichtet. Für ganz einfache Fälle sollte dies bereits genügen, aber es lohnt sich vielleicht, an dieser Stelle kurz ein bisschen nachzudenken, wie der Cluster aussehen soll. In der Konfigurationsdatei:

voldrbd: drbdstor
    vgname sys
    shared
    #peers 
    #peerips

Lässt sich mit der Option vgname die zu verwendende Volume Group konfigurieren. Standardmässig wird einfach die erste gefundene verwendet. Die auskommentierten Optionen peers und peerips sollten eine Liste der Knoten, auf denen DRBD Volumes anlegen soll sowie deren IP-Adressen eingetragen werden. Wir hier nichts angegeben, so werden alle Proxmox-Knoten im Cluster mit der IP verwendet, auf die deren Namen auflöst.

In allen nicht trivialen Clustern ist es anzuraten, auf jedem Rechner ein separates Interface für die DRBD-Synchronisation zu verwenden. Dessen IP-Adresse wird unter peerips eingetragen. Für einen einfachen Zwei-Knoten-Cluster mit den Knoten pve1 und pve2 und den IP-Adressen im Synchronisationsnetz 192.168.33.1 und 192.168.33.2 tragen Sie also in storage.cfg folgendes ein:

  peers pve1 pve2
  peerips 192.168.33.1 192.168.33.2

Nach einem Nuestart des pvedaemon sollte nun das Storage drbdstore auftauchen und verwendet werden können.

 

Verwendung mit nur einem Knoten

Beim Aufsetzen eines Clusters kann es notwendig sein, die VMs schon mal aufzusetzen, obwohl noch kein zweiter Knoten vorhanden ist. Verwenden Sie dann als zweiten Knoten (peers) den Namen none und seine künftige IP-Adresse unter peerips. So lassen sich die DRBD-Volumes noch ohne Synchronisationspartner aufsetzen.

Zur Zeit ist ein späteres Aufsetzen der Synchronisation noch mit Handarbeit verbunden. Dazu in einem späteren Artikel mehr.

 

Verwendung mit mehr als zwei Knoten

Die aufgesetzten DRBD-Volumes werden – falls mehr als ein Knoten vorhanden ist – immer paarweise synchronisiert. Mehrfachspiegel werden in dieser einfachen Konfiguration nicht unterstützt. Sie können steuern, auf welchen Knoten Spiegel eingerichtet werden: Wenn Sie eine virtuelle Disk auf einem Knoten einrichten, dann wird der Synchronisationspartner auf dem nächsten Knoten in der peer-Liste eingerichtet.

Ein späterer Umzug des Synchronisationspartners ist zur Zeit noch Handarbeit. Dazu in einem späteren Artikel mehr.

 

Live-Migration

In der Standardkonfiguration von DRBD nach der Installation ist kein Dual-Primary-Modus konfiguriert und folgerichtig muss eine VM zur Migration zuerst heruntergefahren werden, bevor die VM auf dem Partnerknoten hochgefahren werden kann.

Möchten Sie zwingend Live-Migration nutzen, dann müssen Sie in DRBD den Dual-Primary-Modus konfigurieren.

Dies bietet jedoch auch Risiken!