Der Artikel wurde im Vorfeld des Kurses erstellt .
DRBD (Distributed Replicated Block Device â verteiltes repliziertes BlockgerĂ€t) ist eine flexible und universell einsetzbare Datenspeicherlösung fĂŒr Linux. Es spiegelt den Inhalt von BlockgerĂ€ten wie Festplatten, Partitionen, logischen Volumes usw. zwischen Servern wider. Es erstellt Kopien von Daten auf zwei SpeichergerĂ€ten, sodass die Daten im Falle eines Ausfalls eines GerĂ€tes auf dem anderen genutzt werden können.
Man könnte sagen, dass es sich um eine Art 1 mit auf verschiedene Server gespiegeltene Festplatten handelt. Es funktioniert jedoch ganz anders als RAID (auch nicht im Netzwerk).
UrsprĂŒnglich wurde DRBD hauptsĂ€chlich in HochverfĂŒgbarkeits-Computerkursen (HA â High Availability) eingesetzt, seit der neunten Version kann es jedoch auch zur Bereitstellung von Cloud-Speicherlösungen verwendet werden.
In diesem Artikel zeigen wir, wie man DRBD unter CentOS installiert und geben einen kurzen Ăberblick, wie man es zur Replikation von Speicher (Partitionen) auf zwei Servern verwendet. Dies ist der ideale Einstieg, um mit DRBD unter Linux zu arbeiten.
Testumgebung
Wir werden einen Cluster aus zwei Knoten fĂŒr dieses Setup verwenden.
- Knoten 1: 192.168.56.101 â tecmint.tecmint.lan
- Knoten 2: 192.168.56.102 â server1.tecmint.lan
Schritt 1: Installation der DRBD-Pakete
DRBD wird als Kernelmodul von Linux implementiert. Es handelt sich um einen Treiber fĂŒr ein virtuelles BlockgerĂ€t, weshalb es sich ganz unten im I/O-Stack des Systems befindet.
DRBD kann aus ELRepo oder EPEL installiert werden. Lassen Sie uns mit dem Import des ELRepo-Paket-SignaturschlĂŒssels und dem Aktivieren des Repositories auf beiden Knoten beginnen, wie unten gezeigt.
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpmDann mĂŒssen Sie das DRBD-Kernelmodul und die Dienstprogramme auf beiden Knoten mit folgendem Befehl installieren:
# yum install -y kmod-drbd84 drbd84-utilsWenn SELinux aktiviert ist, mĂŒssen Sie die Richtlinien so anpassen, dass die DRBD-Prozesse nicht von SELinux ĂŒberwacht werden.
# semanage permissive -a drbd_t
AuĂerdem, wenn auf Ihrem System eine Firewall (firewalld) lĂ€uft, mĂŒssen Sie den DRBD-Port 7789 hinzufĂŒgen, um die Daten synchronisierung zwischen den beiden Knoten zu erlauben.
FĂŒhren Sie diese Befehle fĂŒr den ersten Knoten aus:
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reloadFĂŒhren Sie dann diese Befehle fĂŒr den zweiten Knoten aus:
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reloadSchritt 2. Vorbereitung des Low-Level-Speichers
Jetzt, da wir DRBD auf beiden Knoten des Clusters eingerichtet haben, mĂŒssen wir Speicherbereiche Ă€hnlicher GröĂe vorbereiten. Dies kann eine Partition auf der Festplatte (oder eine komplette physische Festplatte), ein Software-RAID-GerĂ€t, oder eine andere Art von BlockgerĂ€t in Ihrem System sein.
FĂŒr diesen Artikel erstellen wir ein Test-BlockgerĂ€t mit einer GröĂe von 2 GB mit dem Befehl dd.
# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024Angenommen, dies ist eine ungenutzte Partition (/dev/sdb1) auf dem zweiten BlockgerÀt (/dev/sdb), das mit beiden Knoten verbunden ist.
Schritt 3. DRBD einrichten
Die Hauptkonfigurationsdatei von DRBD ist /etc/drbd.conf, und die zusÀtzlichen Konfigurationsdateien finden Sie im Verzeichnis /etc/drbd.d.
Um den Speicher zu replizieren, mĂŒssen wir die erforderlichen Konfigurationen in die Datei hinzufĂŒgen /etc/drbd.d/global_common.conf, die globale und gemeinsame Abschnitte der DRBD-Konfiguration enthĂ€lt, und wir mĂŒssen die Ressourcen in .res Dateien definieren.
Sichern Sie die ursprĂŒngliche Datei auf beiden Knoten, und öffnen Sie dann eine neue Datei zur Bearbeitung (verwenden Sie einen Texteditor Ihrer Wahl).
# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
# vim /etc/drbd.d/global_common.conf FĂŒgen Sie beiden Dateien die folgenden Zeilen hinzu:
global {
usage-count yes;
}
common {
net {
protocol C;
}
}Speichern Sie die Datei und schlieĂen Sie dann den Editor.
Lassen Sie uns kurz auf die Zeile protocol C eingehen. DRBD unterstĂŒtzt drei verschiedene Replikationsmodi (d.h. drei Grade der Replikationssynchronisierung), nĂ€mlich:
- protocol A: das Protokoll der asynchronen Replikation; es wird am hĂ€ufigsten in Szenarien zur Replikation ĂŒber groĂe Distanzen verwendet.
- protocol B: das Protokoll der halbsynchronen Replikation oder des synchronen Speichers.
- protocol C: wird normalerweise fĂŒr Knoten in Netzwerken mit kurzen Distanzen verwendet; dies ist zweifellos das am hĂ€ufigsten verwendete Replikationsprotokoll in DRBD-Setups.
Wichtig: Die Wahl des Replikationsprotokolls hat Einfluss auf zwei Bereitstellungsfaktoren: Sicherheit und Latenz. Die Bandbreite hingegen hÀngt nicht wesentlich vom gewÀhlten Replikationsprotokoll ab.
Schritt 4. HinzufĂŒgen einer Ressource
Eine Ressource ist ein Sammelbegriff, der alle Aspekte eines bestimmten replizierbaren Datensatzes umfasst. Wir werden unsere Ressource in der Datei definieren. /etc/drbd.d/test.res.
FĂŒgen Sie das Folgende in die Datei auf beiden Knoten ein (vergessen Sie nicht, die Variablen durch die tatsĂ€chlichen Werte fĂŒr Ihre Umgebung zu ersetzen).
Achten Sie auf die Namen der Hosts; wir benötigen den Netzwerk-Hostnamen, den Sie mit dem Befehl uname erhalten können. -n.
resource test {
on tecmint.tecmint.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.101:7789;
}
on server1.tecmint.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.102:7789;
}
}
}wo:
- auf Hostnamen: Abschnitt on, zu dem der verschachtelte Konfigurationsoperator gehört.
- test: dies ist der Name der neuen Ressource.
- device /dev/drbd0: gibt das neue virtuelle BlockgerÀt an, das von DRBD verwaltet wird.
- disk /dev/sdb1: dies ist der BlockgerĂ€tespeicher, der das SicherungsgerĂ€t fĂŒr das DRBD-GerĂ€t darstellt.
- meta-disk: definiert, wo DRBD seine Metadaten speichert. Internal bedeutet, dass DRBD seine Metadaten auf demselben physischen low-level GerÀt speichert, auf dem auch die Produktionsdaten liegen.
- address: gibt die IP-Adresse und die Portnummer des entsprechenden Knotens an.
Beachten Sie auch, dass, wenn beide Hosts die gleichen Parameterwerte haben, Sie diese direkt im Ressourcenteil angeben können.
Zum Beispiel könnte die obige Konfiguration umstrukturiert werden in:
ressourcentest {
gerÀt /dev/drbd0;
disk /dev/sdb1;
meta-disk intern;
on tecmint.tecmint.lan {
adresse 192.168.56.101:7789;
}
on server1.tecmint.lan {
adresse 192.168.56.102:7789;
}
}Schritt 5. Initialisierung und Start des Ressourcen
FĂŒr die Interaktion mit DRBD werden wir folgende Administrationswerkzeuge verwenden (die mit dem Kernelmodul zur Konfiguration und Verwaltung der DRBD-Ressourcen interagieren):
- drbdadm: hochgradiges Administrationswerkzeug fĂŒr DRBD.
- drbdsetup: administratives Werkzeug auf niedrigerer Ebene zum AnschlieĂen von DRBD-GerĂ€ten an ihre Backup-GerĂ€te, zur Konfiguration von DRBD-Paaren zur Spiegelung ihrer Backup-GerĂ€te und zur ĂberprĂŒfung der Konfiguration von laufenden DRBD-GerĂ€ten.
- Drbdmeta: Werkzeug zur Verwaltung von Metadaten.
Nach dem HinzufĂŒgen aller Anfangs-Konfigurationen der Ressource mĂŒssen wir die Ressource an beiden Knoten aufrufen.
# drbdadm create-md test 
Initialisierung des Metadaten-Speichers
AnschlieĂend mĂŒssen wir es starten, was die Ressource mit ihrem Backup-GerĂ€t verbindet, dann die Replikationsparameter festlegt und die Ressource mit ihrem Peer verbindet:
# drbdadm up test Jetzt, wenn Sie den Befehl ausfĂŒhren , Sie werden feststellen, dass das GerĂ€t/Volume DRBD drbd0 mit dem Backup-GerĂ€t verbunden ist /dev/sdb1:
# lsblk 
Liste der BlockgerÀte
Um die Ressource zu deaktivieren, fĂŒhren Sie folgendes aus:
# drbdadm down testUm den Status der Ressource zu ĂŒberprĂŒfen, fĂŒhren Sie den folgenden Befehl aus (beachten Sie, dass zu diesem Zeitpunkt der Zustand der Laufwerke erwartet wird Inkonsequent/Inkonsequent):
# drbdadm status test
OR
# drbdsetup status test --verbose --statistics #for a more detailed status 
ĂberprĂŒfung des Ressourcenstatus auf u
niveaus
Schritt 6: Festlegen der primĂ€ren Ressource/Quelle fĂŒr die initiale Synchronisation der GerĂ€te
Zu diesem Zeitpunkt ist DRBD bereits betriebsbereit. Jetzt mĂŒssen wir angeben, welcher Knoten als Quelle fĂŒr die initiale Synchronisation der GerĂ€te verwendet werden soll.
FĂŒhren Sie den folgenden Befehl nur auf einem Knoten aus, um die ursprĂŒngliche vollstĂ€ndige Synchronisation zu starten:
# drbdadm primary --force test
# drbdadm status test 
Festlegen des primÀren Knotens als InitialgerÀt
Nach Abschluss der Synchronisation sollten beide Laufwerke den Status UpToDate aufweisen.
Schritt 7: Testen der DRBD-Konfiguration
ZunĂ€chst mĂŒssen wir ĂŒberprĂŒfen, ob das DRBD-GerĂ€t wie gewĂŒnscht fĂŒr die Speicherung von replizierten Daten funktioniert. Denken Sie daran, dass wir ein leeres Volume verwendet haben, daher mĂŒssen wir ein Dateisystem auf dem GerĂ€t erstellen und es einhĂ€ngen, um zu testen, ob wir es zur Speicherung der replizierten Daten nutzen können.
Wir mĂŒssen ein Dateisystem auf dem GerĂ€t mit dem folgenden Befehl auf dem Knoten erstellen, von dem wir die ursprĂŒngliche vollstĂ€ndige Synchronisation gestartet haben (auf dem der Ressourcenanteil die Hauptrolle spielt):
# mkfs -t ext4 /dev/drbd0 
Erstellen des Dateisystems auf dem Drbd-Volume
Dann montieren Sie es wie gezeigt (Sie können dem EinhÀngepunkt einen passenden Namen geben):
# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/
Jetzt kopieren oder erstellen Sie einige Dateien am oben angegebenen EinhÀngepunkt und listen Sie diese mit :
# cd /mnt/DRDB_PRI/
# ls -l 
Auflisten des Inhalts des Haupt-Drbd-Volumes
Entfernen Sie als NÀchstes das GerÀt (stellen Sie sicher, dass das EinhÀngen nicht aktiv ist, wechseln Sie das Verzeichnis nach dem AushÀngen, um Fehler zu vermeiden) und Àndern Sie die Rolle des Knotens von primÀr auf sekundÀr:
# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary testMachen Sie einen anderen Knoten (auf dem sich eine Ressource mit sekundĂ€rer Rolle befindet) zum primĂ€ren Knoten, verbinden Sie dann das GerĂ€t damit und fĂŒhren Sie die lange Liste von Montagepunkten aus. Wenn das Setup ordnungsgemÀà funktioniert, sollten alle auf dem Volume gespeicherten Dateien vorhanden sein:
# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls -l 
ĂberprĂŒfung des DRBD-Setups, das auf dem sekundĂ€ren Knoten lĂ€uft.
FĂŒr weitere Informationen konsultieren Sie bitte die Hilfeseiten der Administrationswerkzeuge:
# man drbdadm
# man drbdsetup
# man drbdmetaHilfe: .
Zusammenfassung
DRBD ist Ă€uĂerst flexibel und vielseitig, was es zu einer Lösung fĂŒr die Speicherreplikation macht, die sich fĂŒr die HinzufĂŒgung von HA in fast jede Anwendung eignet. In diesem Artikel haben wir gezeigt, wie man DRBD unter CentOS 7 installiert und kurz demonstriert, wie es fĂŒr die Speicherreplikation verwendet wird. Zögern Sie nicht, uns Ihre Gedanken ĂŒber das unten stehende Feedback-Formular mitzuteilen.
Quelle: habr.com
