DRBD 9, Nutzung des Festplattenspeichers unter Proxmox VE, verteiltes Storage

Proxmox VE und DRBD 9 für verteiltes Storage in größeren Clustern.
Mit Linstor können wir ein verteiltes Dateisystem aufsetzen, den Festplattenspeicher im Cluster nutzen und außerdem können wir das ganze System hochverfügbar machen.

Es werden 3 physische Server mit entsprechend viel RAM, sehr viel Festplattenspeicher und mehreren CPU Kernen gebraucht.
Auf jedem Server wird Proxmox VE installiert.

Netz und die Namen der Server

Netz: 172.16.0.0/22
Domäne: mono.plan
Gateway: 172.16.0.1
DNS: 8.8.8.8 oder andere DNS-Server

pve201      IP-Adresse: 172.16.0.201
pve202      IP-Adresse: 172.16.0.202
pve203      IP-Adresse: 172.16.0.203


Nach der Proxmox VE Installation haben wir 3 Server zur Verfügung. Danach können wir im Browser auf dem Client die WEB Interfaces starten und sich anmelden.
https://172.16.0.201:8006

Die WEB Interfaces von dem zweiten Proxmox VE Server.
https://172.16.0.202:8006

Die WEB Interfaces von dem dritten Proxmox VE Server.
https://172.16.0.103:8006

Punkt
Die Namen der Server sollten in DNS eingetragen werden. Zur Sicherheit, im Falle, wenn der DNS-Server ausfallen sollte, trage ich auch die Namen der Server auf allen 3 Servern in der /etc/hosts Datei.

172.16.0.201 pve201.mono.plan pve201
172.16.0.202 pve202.mono.plan pve202
172.16.0.203 pve203.mono.plan pve203
Punkt
Wir definieren jetzt auf einem von den drei Proxmox VE einen Cluster. Der Name des Clusters, z.B. mbsCluster1. Wir können auch jeden anderen Namen nehmen. Es wird Links auf Datacenter geklickt, dann auf Cluster und auf Create Cluster.

Punkt
Es wurde ein Cluster erstellt. Zuerst befindet sich der pve201 Server als einziger im Cluster. Um weitere Proxmox VE Server zu dem Cluster zufügen, klicken wir auf Join Infomation und kopieren die Informationen.

Punkt
Mit einem Klick auf Copy Information werden alle benötigte Informationen für den Join weiter Maschinen in die Zwischenablage kopiert.

Punkt
Wir wechseln zu dem zweiten Proxmox VE Server https://172.16.0.202:8006 und klicken auf Join Cluster. In dem geöffneten Fenster können wir in dem Eingabefeld mit STRG+V die Informationen aus der Zwischenablage einfügen. Danach müssen wir noch das Root-Passwort eintragen und den Join bestätigen,
Wir warten eine Weile und aktualisieren dann die Web-Seite. Es kommt das Anmeldefenster und nach dem Anmelden sehen wir schon die Änderungen in auf der Oberfläche.
 
Punkt
Wir wechseln zu dem dritten Proxmox VE Server https://172.16.0.203:8006 und klicken auf Join Cluster. In dem geöffneten Fenster können wir in dem Eingabefeld mit STRG+V die Informationen einfügen. Danach müssen wir noch das Root-Passwort eintragen und den Join bestätigen,
 
Punkt
Alle drei Server befinden sich ab jetzt in einem Cluster. So sieht die grafische Oberfläche von Proxmox VE, wenn sich die Server pve201, pve202 und pve203 im Cluster befinden.

DRBD 9, Verwaltung des Festpalttenspeichers der 3 Server mit Linstor.

DRBD hat die Aufgabe, die Daten in Echtzeit auf andere Server zu spiegeln. Auf diese Weise kann man Hochverfügbarkeit der Server erreichen. In unserem Fall würde das so aussehen, dass die Daten, die auf dem Server pve201 gespeichert werden, sofort auf den anderen beiden Servern pve202 und pve203 gespiegelt werden. In unserem Fall haben immer aktuelle Daten auf 3 verschiedenen Servern.

Zu diesem Zweck brauchen wir DRBD 9 auf den Servern. Bei Standard Installation ist DRBD 8 auf Proxmox VE 8.x installiert.

Punkt
Nach der Standard Proxmox VE Installation werden DRBD 9 Pakete installiert. Im ersten Schritt wird auf allen Servern Repository eingefügt.

# wget -O /tmp/linbit-keyring.deb https://packages.linbit.com/public/linbit-keyring.deb
# dpkg -i /tmp/linbit-keyring.deb
# PVERS=8 && echo "deb [signed-by=/etc/apt/trusted.gpg.d/linbit-keyring.gpg] \
 http://packages.linbit.com/public/ proxmox-$PVERS drbd-9" > /etc/apt/sources.list.d/linbit.list
# apt update
# apt upgrade
Punkt
Die DRBD 9 Pakete und Linstor werden auf allen Servern installiert.

# apt install pve-headers-$(uname -r) drbd-dkms drbd-utils linstor-proxmox
# apt install -y linstor-controller linstor-satellite linstor-client
Punkt
Mit dem Befehl modinfo drbd können Sie überprüfen, ob die drbd 9 Module geladen sind. Auf allen Servern.

# modinfo drbd

 

Die Ausgabe müsste so ca. aussehen. Auf jeden Fall sollte mindesten die Version 9 zeigen.

 

filename:       /lib/modules/6.8.12-8-pve/updates/dkms/drbd.ko
softdep:        post: handshake
alias:          block-major-147-*
license:        GPL
version:        9.2.12
description:    drbd - Distributed Replicated Block Device v9.2.12
author:         Philipp Reisner <phil@linbit.com>, Lars Ellenberg <lars@linbit.com>
...
Punkt
linstor-satellite Dienst-Datei wird entsprechend angepasst. Die drei Zeilen werden eingefügt bzw. angepasst.
Auf allen Server.

# systemctl edit linstor-satellite

 

[Service]
Type=notify
TimeoutStartSec=infinity
Punkt
Der Dienst linstor-satellite wird auf jedem Server aktiviert.

# systemctl enable linstor-satellite --now
Punkt
Auf jedem Server brauchen wir ein Volume Group. Wir gehen davon aus, dass mindestens eine zusätzliche Festplatte für die Daten verfügbar ist.  Auf der Festplatte wird eine Partition erstellt, mit pvcreate wird die Partition initialisiert und danach wird ein Volume Group vg_drbd erstellt. Das machen wir auf allen Servern. In unserem Fall haben wir eine Festplatte sdb.

# cfdisk /dev/sdb


Wir haben eine Partition sdb1 erstelllt. Jetzt können wir die Partition initialisieren. Auf jedem Server

 

# pvcreate /dev/sdb1

 

Eine VG wird erstellt. Auf jedem Server,

 

# vgcreate vg_drbd /dev/sdb1
Punkt
Aus einem Server machen wir zusätzlich einen Linstor-Controller. Auf dem Linstor-Controller und nur auf dem Linstor-Controller werden bestimmte Befehle ausgeführt, um den Festplattenspeicher auf den Servern zu nutzen, verwalten und zu kontrollieren. Wir nehmen gleich den ersten Server, also pve201

root@pve201:~# systemctl enable linstor-controller --now
Punkt
Alle Konten werden auf den Linstor-Controller pve201 zugefügt.

root@pve201:~# linstor node create pve201 172.16.0.201 --node-type Combined
root@pve201:~# linstor node create pve202 172.16.0.202 --node-type Combined
root@pve201:~# linstor node create pve203 172.16.0.203 --node-type Combined
Punkt
Schauen wir, ob die Knoten sauber eingefügt sind

root@pve201:~# linstor node list

 

Die Ausgabe sollte so ähnlich aussehen.

Punkt
Storage Pool wird für jeden Server erstellt, selbstverständlich nur auf dem Linstor-Controller. Vorher haben wir schon Volume Group mit dem Namen vg_drbd auf jedem Server erstellt.

root@pve201:~# linstor storage-pool create lvm pve201 pve-storage vg_drbd
root@pve201:~# linstor storage-pool create lvm pve202 pve-storage vg_drbd
root@pve201:~# linstor storage-pool create lvm pve203 pve-storage vg_drbd
Punkt
Schauen wir, was für Storage Pools zur Verfügung stehen.

root@pve201:~# linstor storage-pool list

 

Punkt
Resource Group wird erstellt, auf dem Linstor-Controller. --place-count wid auf 3 gestellt, weil der Festplattenspeicher auf allen drei genutzt wird.

root@pve201:~# linstor resource-group create pve-rg --storage-pool=pve-storage --place-count=3
Punkt
Volume Group wird ertellt. Nur auf dem Linstor-Controller

root@pve201:~# linstor volume-group create pve-rg
Punkt
Resource Group kann man mit dem Befehl linstor resource-group list auflisten

root@pve201:~# linstor resource-group list

 

Punkt
Die Proxmox VE Storage Datei /etc/pve/storage.cfg können wir jetzt bearbeiten. Es reicht, wenn wir die Datei nur auf dem Linstor-Controller (pve201) bearbeiten. Zwischen den Festplatten Einträgen bitte eine Zeile leer lassen.

root@pve201:~# nano /etc/pve/storage.cfg

 

Folgender Inhalt kann man einfügen.

 

drbd: linstor_drbd
        content images,rootdir
        controller 172.16.0.201
        resourcegroup pve-rg

 

So könnte die Datei /etc/pve/storage.cfg aussehen.

 

dir: local
       path /var/lib/vz
       content iso,vztmpl,backup

lvmthin: local-lvm
        thinpool data
        vgname pve
        content rootdir,images

drbd: linstor_drbd
      content images,rootdir
      controller 172.16.0.201
      resourcegroup pve-rg
Punkt
Auf allen Servern bitte die folgenden Dienste neu starten.

root@pve201:~# systemctl restart pve-cluster pvedaemon pvestatd pveproxy pve-ha-lrm
root@pve202:~# systemctl restart pve-cluster pvedaemon pvestatd pveproxy pve-ha-lrm
root@pve203:~# systemctl restart pve-cluster pvedaemon pvestatd pveproxy pve-ha-lrm
Punkt
Jetzt können wir auf der grafischen Oberfläche von Proxmox VE z.B. auf dem pev201 eine neue VM erstellen. Gleich nach der Erstellung der VM können wir uns auch den Zustand der Replikation der Festplatten mit dem folgenden Befehl anschauen. Die Daten werden synchronisiert.

root@pve201:~# linstor resource list

 

Wenn die Synchronisation abgeschlossen ist, wird es ca. so aussehen.

Wenn eine VM gestartet ist, wird die Festplatte bzw. die Festplatten in Benutzung (InUse) angezeigt.

 

Die VMs kann man jederzeit von einem zu dem anderen Server ohne Unterbrechung migrieren.
Wir haben ein Cluster, aber noch keine Hochverfügbarkeit.
 

Der Cluster wird hochverfügbar gemacht.

Punkt
Es wird eine HD Gruppe HA-Group erstellt. Zu dieser Gruppe werden alle 3 Knoten eingefügt pve201, pve202 und pve203.

 

Punkt
Jetzt müssen wir noch die VM definieren, die zu der hochverfügbaren Gruppe gehören soll. Es wird links auf Datacenter geklickt, in der Mitte auf HA und rechts auf Resource->Add. Eine VM und die HA-Gruppe wird ausgewählt. Mit dem Button Add wird das alles bestätigt.
Ab jetzt haben wir hochverfügbare VM. Sollten der Knoten auf der die VM gerade läuft ausfallen, wird die VM in kürzeste Zeit auf einem anderen Knoten automatisch starten.

 

Punkt
Wenn wir vorhaben, die VM ganz normal herunterzufahren, müssen wir die Option Request State auf stopped ändern. Dann kann die VM ganz normal heruntergefahren werden. Wollen wir die VM wieder starten, wechseln wir die Option Request State auf started