Die Übersetzung des Artikels wurde am Vorabend des Kursbeginns erstellt
DRBD (Distributed Replicated Block Device) ist eine verteilte, flexible und universell replizierbare Speicherlösung für Linux. Es spiegelt den Inhalt von Blockgeräten wie Festplatten, Partitionen, logischen Volumes usw. wider. zwischen Servern. Es erstellt Kopien der Daten auf zwei Speichergeräten, sodass bei Ausfall eines von ihnen die Daten auf dem zweiten verwendet werden können.
Man könnte sagen, es ist so etwas wie
Ursprünglich wurde DRBD hauptsächlich in Computerclustern mit hoher Verfügbarkeit (HA) eingesetzt, ab Version XNUMX kann es jedoch für die Bereitstellung von Cloud-Speicherlösungen verwendet werden.
In diesem Artikel erklären wir, wie man DRBD auf CentOS installiert und zeigen kurz, wie man damit Speicher (Partition) auf zwei Servern repliziert. Dies ist der perfekte Artikel für den Einstieg in DRBD unter Linux.
Test Umgebung
Für dieses Setup verwenden wir einen Zwei-Knoten-Cluster.
- Knoten 1: 192.168.56.101 – tecmint.tecmint.lan
- Knoten 2: 192.168.56.102 – server1.tecmint.lan
Schritt 1: DRBD-Pakete installieren
DRBD ist als Linux-Kernelmodul implementiert. Da es sich um einen Treiber für ein virtuelles Blockgerät handelt, befindet es sich ganz unten im E/A-Stack des Systems.
DRBD kann über ELRepo oder EPEL installiert werden. Beginnen wir mit dem Importieren des Signaturschlüssels des ELRepo-Pakets und dem Verbinden des Repositorys auf beiden Knoten, 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.rpm
Anschließend müssen Sie das DRBD-Kernelmodul und die Dienstprogramme auf beiden Knoten installieren, indem Sie Folgendes verwenden:
# yum install -y kmod-drbd84 drbd84-utils
Wenn Sie SELinux aktiviert haben, müssen Sie Richtlinien konfigurieren, um DRBD-Prozesse von der SELinux-Kontrolle auszunehmen.
# semanage permissive -a drbd_t
Wenn auf Ihrem System außerdem eine Firewall (firewalld) läuft, müssen Sie den DRBD-Port 7789 hinzufügen, um die Datensynchronisierung zwischen den beiden Knoten zu ermöglichen.
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 --reload
Fü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 --reload
Schritt 2: Low-Level-Speicher vorbereiten
Nachdem wir DRBD nun auf beiden Cluster-Knoten installiert haben, müssen wir auf ihnen etwa gleich große Speicherbereiche bereitstellen. Dies kann eine Festplattenpartition (oder eine ganze physische Festplatte), ein Software-RAID-Gerät oder
Für diesen Artikel erstellen wir mit dem Befehl dd ein 2-GB-Testblockgerät.
# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024
Nehmen wir an, dass es sich um eine ungenutzte Partition (/dev/sdb1) auf einem zweiten Blockgerät (/dev/sdb) handelt, das mit beiden Knoten verbunden ist.
Schritt 3. DRBD konfigurieren
DRBD-Hauptkonfigurationsdatei − /etc/drbd.conf
, und weitere Konfigurationsdateien finden Sie im Verzeichnis /etc/drbd.d
.
Um den Speicher zu replizieren, müssen wir der Datei die erforderlichen Konfigurationen hinzufügen /etc/drbd.d/global_common.conf
, das globale und allgemeine Abschnitte der DRBD-Konfiguration enthält, und wir müssen darin Ressourcen definieren .res
Dateien.
Erstellen wir auf beiden Knoten eine Sicherungskopie der Originaldatei und öffnen wir dann die neue Datei zum Bearbeiten (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.
Schauen wir uns kurz die Protokoll-C-Zeile an. DRBD unterstützt drei verschiedene Replikationsmodi (d. h. drei Grade der Replikationssynchronität), nämlich:
- Protokoll A: asynchrones Replikationsprotokoll; Wird am häufigsten in Replikationsszenarien über große Entfernungen verwendet.
- Protokoll B: Halbsynchrones Replikationsprotokoll oder synchrones Speicherprotokoll.
- Protokoll C: wird normalerweise für Knoten in Netzwerken mit kurzen Entfernungen verwendet; Dies ist bei weitem das am häufigsten verwendete Replikationsprotokoll in DRBD-Einstellungen.
Es ist wichtig,: Die Wahl des Replikationsprotokolls beeinflusst zwei Bereitstellungsfaktoren: Sicherheit und Latenz. Der Durchsatz hingegen hängt nicht wesentlich vom gewählten Replikationsprotokoll ab.
Schritt 4: Fügen Sie eine Ressource hinzu
Ressource ist ein Überbegriff, der sich auf alle Aspekte eines bestimmten replizierten Datensatzes bezieht. Wir werden unsere Ressource in der Datei definieren /etc/drbd.d/test.res
.
Fügen Sie der Datei auf beiden Knoten Folgendes hinzu (denken Sie daran, die Variablen durch die tatsächlichen Werte für Ihre Umgebung zu ersetzen).
Achten Sie auf die Hostnamen. Wir müssen den Netzwerk-Hostnamen angeben, der mit dem Befehl uname abgerufen werden kann -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 Hostname: Der On-Abschnitt, für den die verschachtelte Konfigurationsanweisung gilt.
- Test: Dies ist der Name der neuen Ressource.
- Gerät /dev/drbd0: Zeigt ein neues virtuelles Blockgerät an, das von DRBD verwaltet wird.
- Festplatte /dev/sdb1: Dies ist eine Blockgerätepartition, die ein Sicherungsgerät für das DRBD-Gerät ist.
- Meta-Disk: Definiert, wo DRBD seine Metadaten speichert. Intern bedeutet, dass DRBD seine Metadaten auf demselben physischen Low-Level-Gerät speichert wie die tatsächlichen Daten in der Produktion.
- Adresse: Gibt die IP-Adresse und Portnummer des entsprechenden Knotens an.
Beachten Sie außerdem, dass Sie, wenn die Parameter auf beiden Hosts die gleichen Werte haben, diese direkt im Abschnitt „Ressourcen“ angeben können.
Die obige Konfiguration könnte beispielsweise wie folgt umstrukturiert werden:
resource test {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
on tecmint.tecmint.lan {
address 192.168.56.101:7789;
}
on server1.tecmint.lan {
address 192.168.56.102:7789;
}
}
Schritt 5: Initialisieren und starten Sie die Ressource
Für die Interaktion mit DRBD verwenden wir die folgenden Verwaltungstools (die mit dem Kernelmodul interagieren, um DRBD-Ressourcen zu konfigurieren und zu verwalten):
- drbdadm: DRBD-Administrationstool auf hoher Ebene.
- drbdsetup: Ein Verwaltungstool auf niedrigerer Ebene zum Verbinden von DRBD-Geräten mit ihren Backup-Geräten, zum Konfigurieren von DRBD-Gerätepaaren, um ihre Backup-Geräte widerzuspiegeln, und zum Überprüfen der Konfiguration laufender DRBD-Geräte.
- Drbdmeta: Metadaten-Management-Tool.
Nachdem wir alle anfänglichen Ressourcenkonfigurationen hinzugefügt haben, müssen wir die Ressource auf beiden Knoten aufrufen.
# drbdadm create-md test
Initialisieren des Metadatenspeichers
Als nächstes müssen wir es ausführen, wodurch die Ressource mit ihrem Backup-Gerät verbunden wird, dann die Replikationsparameter festgelegt und die Ressource mit ihrem Peer verbunden wird:
# drbdadm up test
Wenn Sie nun den Befehl ausführen /dev/sdb1
:
# lsblk
Liste der Blockgeräte
Um eine Ressource zu deaktivieren, führen Sie Folgendes aus:
# drbdadm down test
Um den Status einer Ressource zu überprüfen, führen Sie den folgenden Befehl aus (beachten Sie, dass zu diesem Zeitpunkt der Status der Festplatten erwartet wird). Inkonsistent/Inkonsistent):
# drbdadm status test
OR
# drbdsetup status test --verbose --statistics #for a more detailed status
Überprüfen des Status einer Ressource auf
teuflisch
Schritt 6: Legen Sie die Synchronisierungsquelle für die primäre Ressource/das anfängliche Gerät fest
Zu diesem Zeitpunkt ist DRBD einsatzbereit. Jetzt müssen wir angeben, welcher Knoten als Quelle für die anfängliche Gerätesynchronisierung verwendet werden soll.
Führen Sie den folgenden Befehl auf nur einem Knoten aus, um die erste vollständige Synchronisierung zu starten:
# drbdadm primary --force test
# drbdadm status test
Festlegen des Primärknotens als anfängliches Gerät
Sobald die Synchronisierung abgeschlossen ist, sollte der Status beider Laufwerke UpToDate sein.
Schritt 7: Testen des DRBD-Setups
Abschließend müssen wir prüfen, ob das DRBD-Gerät wie erforderlich zum Speichern der replizierten Daten funktioniert. Denken Sie daran, dass wir ein leeres Festplattenvolume verwendet haben. Daher müssen wir ein Dateisystem auf dem Gerät erstellen und es mounten, um zu prüfen, ob wir es zum Speichern replizierter Daten verwenden können.
Wir müssen ein Dateisystem auf dem Gerät erstellen, indem wir den folgenden Befehl auf dem Knoten verwenden, auf dem wir die erste vollständige Synchronisierung gestartet haben (der über die Ressource mit der primären Rolle verfügt):
# mkfs -t ext4 /dev/drbd0
Erstellen eines Dateisystems auf dem Drbd-Volume
Mounten Sie es dann wie gezeigt (Sie können dem Mount-Punkt einen passenden Namen geben):
# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/
Kopieren oder erstellen Sie nun einige Dateien im oben genannten Mount-Punkt und erstellen Sie eine lange Liste mit
# cd /mnt/DRDB_PRI/
# ls -l
Listen Sie den Inhalt des Haupt-Drbd-Volumes auf
Hängen Sie als Nächstes das Gerät aus (stellen Sie sicher, dass der Mount nicht geöffnet ist, ändern Sie das Verzeichnis nach dem Aufheben der Bereitstellung, um Fehler zu vermeiden) und ändern Sie die Knotenrolle von primär in sekundär:
# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test
Machen Sie den anderen Knoten (der über eine Ressource mit sekundärer Rolle verfügt) zum primären Knoten, schließen Sie dann ein Gerät daran an und geben Sie eine lange Liste von Bereitstellungspunkten aus. Wenn das Setup einwandfrei 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üfen des DRBD-Setups, das auf dem sekundären Knoten ausgeführt wird.
Weitere Informationen finden Sie auf den Hilfeseiten der Verwaltungstools:
# man drbdadm
# man drbdsetup
# man drbdmeta
Information:
Zusammenfassung
DRBD ist äußerst flexibel und vielseitig, was es zu einer Speicherreplikationslösung macht, die sich zum Hinzufügen von HA zu fast jeder Anwendung eignet. In diesem Artikel haben wir gezeigt, wie man DRBD unter CentOS 7 installiert und kurz gezeigt, wie man es für die Speicherreplikation verwendet. Teilen Sie uns gerne Ihre Gedanken über das unten stehende Feedback-Formular mit.
Source: habr.com