DRBD, Distributed Replicated Block Device
Proxmox VE und DRBD für verteiltes Storage in kleinen Clustern.
Es werden 2 Server verwendet und es ist ohne Bedeutung, ob das VMs oder physische Server sind. Hier wird die einfachste Konfiguration des DRBD Dienstes für die Festplattenreplikation vorgestellt. Die Funktion des DRBD Dienstes kann man auch als RAID1 per Netzwerk nennen. Daten, die auf einem Server gespeichert sind, werden auch gleichzeitig auf der Festplatte des anderen Server übertragen und gespeichert. Das ist eine typische DRBD-Konfiguration der Version 8.x, aber kann man auch bei Version 9.x anwenden.
Zur Verfügung haben wir
- 2 Server mit jeweils 2 Netzwerkkarten und mindestens 2 Festplatte bzw. Partitionen
- Proxmox VE
Es muss man auch dazu sagen, dass die VMs die Hochverfügbar sind, nur auf dem Primary Knoten gestartet werden können.

Unser Netzwerk (Ausgangssituation)
Firmen-Netzwerk: 172.16.0.0/22
DC: 172.16.0.10
Gateway: 172.16.0.1 (Die IP-Adresse der Firewall (Router))
DNS: IP-Adresse des DNS-Servers, z.B. des DC: 172.16.0.10
Daten zum Server1
Name: pve1
Domain: mono,plan
IP: 172.16.0.101/22
Gateway: 172.16.0.1
DNS: 172.16.0.10
Zweite Netzwerkkarte für die Festplattenreplikation
IP: 192.168.99.101/24
Zweite Festplatte: /dev/sdb1
Daten zum Server2
Name: pve2
Domain: mono,plan
IP: 172.16.0.102/22
Gateway: 172.16.0.1
DNS: 172.16.0.10
Zweite Netzwerkkarte für die Festplattenreplikation
IP: 192.168.99.102/24
Zweite Festplatte: /dev/sdb1

Die Installation wird auf beiden Server durchgeführt. Wie die Standardinstallation von Proxmox VE durchgeführt wird, finden Sie im Artikel Proxmox Installation . Die Einstellung können Sie von dem Artikel Proxmox Einstellungen (Community)




# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
wfc-timeout 100; # Bis zu 100 Sekunden wartet auf anderen Knoten, dann geht es weiter
degr-wfc-timeout 120;
}
...
disk {
resync-rate 100M;
}
...
net {
protocol C;
....
}

net {
cram-hmac-alg sha1;
shared-secret "secret+-";
}
on pve1 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.99.101:7789;
meta-disk internal;
}
on pve2 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.99.102:7789;
meta-disk internal;
}
}


192.168.99.101 pve1.mono.plan pve1
192.168.99.102 pve2.mono.plan pve2
...

Sollten Sie Probleme mit der Erstellung von *Meta Data Storage* haben, kennen Sie folgender Befehl nutzen.
VORSICHT: Der unterstehende Code macht einige/alle angegebenen Geräte-/Festplattendaten unbrauchbar!
VORSICHT: Nach dem Drücken der Entertaste werden Sie nicht gefragt, ob Sie wirklich den Befehl ausführen wollen. Wenn Sie ein Fehler bei der Angabe der Partition machen, zerstören Sie möglicherweise eine funktionieren Partition.







Wenn die beider Server neu gestartet werden, stehen beider auf Secondary, deshalb muss man ein von denen auf Primary stellen und die DRBD-Partition mounten.
root@pvex:~# mount -t ext4 /dev/drbd1 /data

https://172.16.0.101:8006/
https://172.16.0.102:8006/
Es wird Directory Storage erstellt, z.B. so wie auf dem unteren Bild. Es wird links auf Datacenter geklickt, dann rechts auf Storage und dann noch mehr nach recht auf Add. Hier wählen wir Directory.

Auf dem Primary wird immer die gemountete Größe der /dev/drbd1 Partition angezeigt. Auf dem Secondary wird die Größe der Systemfestplatte gezeigt.




-
- Die Ressource muss als Primary definiert werden
- die DRBD Partition muss gemountet sein.
So einfach kann man mit der einfachsten DRBD Konfiguration die Hochverfügbarkeit erreichen. Zugegeben, bei Ausfall der Primary Knoten müssen wir manuell der anderen auf Primary hochstufen und mounten, aber immerhin haben wir den aktuellen Stand. Das ist sicherlich sehr wichtig bei Fileservern bzw. Datenbanken.
Wir können bei der DRBD Konfiguration auch Logical Volume einsetzen.
Mit Logical Volume sind wir mehr flexibel und können sogar den Festplattenspeicher im laufenden Betrieb erweitern. Bei freien Festplatten-Slots im Server haben wir die Möglichkeit den Festplattenspeicher zu erweitern. Auch im System können wir danach die DRBD Partitionen erweitern.
Wenn wir, z.B. nach dem Artikel Administration eines LVM vorgehen
- Volume Group (vg1)
- logical Volume (lv1)
zur Verfügung haben, dann würde unsere /etc/drbd.d/res_drbd.res wie folgt aussehen.
net {
cram-hmac-alg sha1;
shared-secret "secret+-";
}
on pve1 {
device /dev/drbd1;
disk /dev/vg1/lv1;
address 192.168.99.101:7789;
meta-disk internal;
}
on pve2 {
device /dev/drbd1;
disk /dev/vg1/lv1;
address 192.168.99.102:7789;
meta-disk internal;
}
}
Fassen wir zusammen
- Nach dem Neustart von beiden Servern sind beide als secondary. Im Shell-Fenster können das wir folgt überprüfen.
# drbdadm status
oder
# watch cat /proc/drbd - Ressource auf einem Knoten müssen wir als Primary hochstufen
# drbdadm primary red_drbd.res - Die DRBD Partition muss gemountet werden. In unserem Fall wurde am Anfang die Partition mit ext4 Dateiformat erstellt, deshalb
# mount -t ext4 /dev/drbd1 /data
Jetzt kann man die VMs starten
Die VMs auf anderem Knoten ausführen
- Auf dem primary
- Alle VMs herunterfahren.
- die DRBD Partition umounten.
- abstufen auf secondary
# drbdadm secondary res_drbd - auf dem Zweiten der bisher als secondary war
- hochstufen auf primary
# drbdadm primary res_drbd
- mounten
- VMs starten.