Wir konfigurieren DRBD zur Replikation des Speichers auf zwei CentOS 7-Servern.

Die Übersetzung des Artikels wurde im Vorfeld des Starts des Kurses vorbereitet „Linux-Administrator. Virtualisierung und Clusterbildung“.

DRBD (Distributed Replicated Block Device – verteiltes repliziertes BlockgerĂ€t) ist eine verteilte, flexible und universell replizierbare Datenspeicherlösung fĂŒr Linux. Es spiegelt den Inhalt von BlockgerĂ€ten wie Festplatten, Partitionen, logischen Volumen usw. zwischen Servern wider. Es erstellt Datenkopien auf zwei SpeichergerĂ€ten, sodass im Falle eines Ausfalls eines GerĂ€ts die Daten auf dem anderen verwendet werden können.

Man könnte sagen, dass es eine Art Netzwerk-RAID-Konfiguration 1 mit auf verschiedene Server gespiegelten Festplatten ist. Es funktioniert jedoch ganz anders als RAID (sogar als Netzwerk-RAID).

UrsprĂŒnglich wurde DRBD hauptsĂ€chlich in Computer-Clustern mit hoher VerfĂŒgbarkeit (HA – High Availability) eingesetzt, ab der neunten Version kann es jedoch auch zur Bereitstellung von Cloud-Speicherlösungen verwendet werden.

In diesem Artikel zeigen wir, wie man DRBD in CentOS installiert und demonstrieren kurz, wie man es zur Replikation von Speicher (Partition) auf zwei Servern verwendet. Dies ist der ideale Artikel, um mit DRBD in Linux zu beginnen.

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 Linux-Kernelmodul implementiert. Es stellt den Treiber fĂŒr ein virtuelles BlockgerĂ€t dar und befindet sich daher ganz unten im I/O-Stack des Systems.

DRBD kann aus ELRepo oder EPEL installiert werden. Beginnen wir mit dem Import des Paket-SignaturschlĂŒssels von ELRepo und dem Aktivieren des Repositories 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

Dann mĂŒssen Sie das DRBD-Kernelmodul und die Dienstprogramme auf beiden Knoten mit folgendem Befehl installieren:

# yum install -y kmod-drbd84 drbd84-utils

Wenn SELinux aktiviert ist, mĂŒssen Sie die Richtlinien so konfigurieren, dass die DRBD-Prozesse von der SELinux-Kontrolle befreit werden.

# semanage permissive -a drbd_t

DarĂŒber hinaus, wenn Ihre Systeme eine Firewall (firewalld) betreiben, mĂŒssen Sie den DRBD-Port 7789 hinzufĂŒgen, um die Datensynchronisation zwischen den beiden Knoten zuzulassen.

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. Vorbereitung des unteren Speichers

Jetzt, wo DRBD auf beiden Knoten des Clusters installiert ist, mĂŒssen wir Speicherbereiche von ungefĂ€hr gleichem Umfang auf ihnen vorbereiten. Dies kann eine Partition der Festplatte (oder eine gesamte physische Festplatte), ein Software-RAID-GerĂ€t sein, ein logischer LVM-Volume oder ein anderer Typ eines BlockgerĂ€tes, das sich in Ihrem System befindet.

FĂŒr diesen Artikel werden wir mit dem Befehl dd ein Test-BlockgerĂ€t mit einer GrĂ¶ĂŸe von 2 GB erstellen.

# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

Angenommen, dies ist eine unbenutzte Partition (/dev/sdb1) auf dem zweiten BlockgerÀt (/dev/sdb), das an beide Knoten angeschlossen ist.

Schritt 3. DRBD konfigurieren

Die Hauptkonfigurationsdatei von DRBD ist /etc/drbd.conf, wÀhrend sich die zusÀtzlichen Konfigurationsdateien im Verzeichnis befinden, /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 die globalen und gemeinsamen Konfigurationsabschnitte von DRBD enthĂ€lt, und die Ressourcen mĂŒssen wir in .res Dateien definieren.

Machen Sie eine Sicherungskopie der ursprĂŒnglichen Datei auf beiden Knoten und öffnen Sie dann die 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 in beide Dateien die folgenden Zeilen ein:

global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}

Speichern Sie die Datei und schließen Sie den Editor.

Lassen Sie uns kurz auf der Zeile protocol C verweilen. DRBD unterstĂŒtzt drei verschiedene Replikationsmodi (d.h. drei Grade der ReplikationssynchronitĂ€t), und zwar:

  • protocol A: Protokoll fĂŒr asynchrone Replikation; wird am hĂ€ufigsten in Replikationsszenarien ĂŒber große Entfernungen verwendet.
  • protocol B: Protokoll fĂŒr halb-synchrone Replikation oder Protokoll fĂŒr synchronen Speicher.
  • protocol C: wird normalerweise fĂŒr Knoten in Netzwerken mit kurzen Entfernungen verwendet; es ist zweifellos das am hĂ€ufigsten verwendete Replikationsprotokoll in DRBD-Konfigurationen.

Wichtig: Die Wahl des Replikationsprotokolls beeinflusst zwei Bereitstellungsfaktoren: die Sicherheit und die Verzögerung. Die Bandbreite hingegen hÀngt nicht wesentlich vom gewÀhlten Replikationsprotokoll ab.

Schritt 4. Ressource hinzufĂŒgen

Eine Ressource (Resource) ist ein Überbegriff, der sich auf alle Aspekte eines bestimmten replizierten Datensatzes bezieht. Wir definieren unsere Ressource in der Datei /etc/drbd.d/test.res.

FĂŒgen Sie Folgendes 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 Hostnamen, wir mĂŒssen den Netzwerknamen des Hosts angeben, 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;
        }
}
}

{REPOSITORY_ABSOLUTE_PATH}

  • am Hostnamen: Abschnitt on, der mit dem eingebetteten Konfigurationsoperator verbunden ist.
  • test: dies ist der Name der neuen Ressource.
  • device /dev/drbd0: gibt ein neues virtuelles BlockgerĂ€t an, das von DRBD verwaltet wird.
  • disk /dev/sdb1: dies ist der Abschnitt des BlockgerĂ€ts, der das SicherungsgerĂ€t fĂŒr das DRBD-GerĂ€t ist.
  • meta-disk: definiert, wo DRBD seine Metadaten speichert. Internal bedeutet, dass DRBD seine Metadaten auf demselben physischen, niedrigstufigen GerĂ€t speichert, auf dem sich die tatsĂ€chlichen Daten in der Produktion befinden.
  • address: gibt die IP-Adresse und die Portnummer des entsprechenden Knotens an.

Beachten Sie auch, dass Sie, wenn die Parameter auf beiden Hosts die gleichen Werte haben, diese direkt im Ressourcenabschnitt angeben können.

Zum Beispiel könnte die obige Konfiguration umstrukturiert werden in:

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. Initialisierung und Start der Ressource

Um mit DRBD zu interagieren, verwenden wir die folgenden Administrationswerkzeuge (die mit dem Kernel-Modul zur Konfiguration und Verwaltung der DRBD-Ressourcen interagieren):

  • drbdadm: DRBD-Administrationswerkzeug auf hoher Ebene.
  • drbdsetup: DRBD-Administrationswerkzeug auf niedrigerer Ebene zum Verbinden von DRBD-GerĂ€ten mit ihren SicherungsgerĂ€ten, zum Einrichten von DRBD-PĂ€rchen fĂŒr die Spiegelung ihrer SicherungsgerĂ€te und zur ÜberprĂŒfung der Konfiguration aktiver DRBD-GerĂ€te.
  • Drbdmeta: Werkzeug zur Verwaltung von Metadaten.

Nach dem HinzufĂŒgen aller ursprĂŒnglichen Konfigurationen der Ressource mĂŒssen wir die Ressource auf beiden Knoten aufrufen.

# drbdadm create-md test

Wir konfigurieren DRBD zur Replikation des Speichers auf zwei CentOS 7-Servern.
Initialisierung des Metadaten-Speichers

Dann mĂŒssen wir es starten, was die Ressource mit ihrem SicherungsgerĂ€t verbindet, dann die Replikationsparameter festlegt und die Ressource mit ihrem Peer verbindet:

# drbdadm up test

Jetzt, wenn Sie den Befehl ausfĂŒhren lsblk, werden Sie feststellen, dass das DRBD-GerĂ€t / Volume drbd0 mit dem SicherungsgerĂ€t verbunden ist. /dev/sdb1:

# lsblk

Wir konfigurieren DRBD zur Replikation des Speichers auf zwei CentOS 7-Servern.
Liste der BlockgerÀte

Um die Ressource zu deaktivieren, fĂŒhren Sie Folgendes aus:

# drbdadm down test

Um den Zustand der Ressource zu ĂŒberprĂŒfen, fĂŒhren Sie den folgenden Befehl aus (beachten Sie, dass in diesem Schritt der Zustand der Festplatten erwartet wird Inkonsequent/Inkonsequent):

# drbdadm status test
OR
# drbdsetup status test --verbose --statistics 	#for  a more detailed status

Wir konfigurieren DRBD zur Replikation des Speichers auf zwei CentOS 7-Servern.
ÜberprĂŒfung des Zustands der Ressource auf ĂŒ
berflÀchen

Schritt 6: Festlegen der Hauptressource/Quelle fĂŒr die anfĂ€ngliche Synchronisierung der GerĂ€te

Zu diesem Zeitpunkt ist DRBD bereits betriebsbereit. Jetzt mĂŒssen wir angeben, welcher Knoten als Quelle fĂŒr die anfĂ€ngliche Synchronisierung der GerĂ€te verwendet werden soll.

FĂŒhren Sie den folgenden Befehl nur auf einem Knoten aus, um die anfĂ€ngliche vollstĂ€ndige Synchronisierung zu starten:

# drbdadm primary --force test
# drbdadm status test

Wir konfigurieren DRBD zur Replikation des Speichers auf zwei CentOS 7-Servern.
Hauptknoten als AusgangsgerÀt festlegen
Nach Abschluss der Synchronisierung sollte der Zustand beider Festplatten UpToDate sein.

Schritt 7: Testen des DRBD-Setups

Schließlich mĂŒssen wir ĂŒberprĂŒfen, ob das DRBD-GerĂ€t wie gewĂŒnscht funktioniert, um replizierte Daten zu speichern. Denken Sie daran, dass wir ein leeres Festplattenspeichervolumen verwendet haben, sodass wir ein Dateisystem auf dem GerĂ€t erstellen und es einhĂ€ngen mĂŒssen, um zu prĂŒfen, ob wir es zur Speicherung replizierter Daten nutzen können.

Wir mĂŒssen ein Dateisystem auf dem GerĂ€t mit dem folgenden Befehl auf dem Knoten erstellen, von dem aus wir die anfĂ€ngliche vollstĂ€ndige Synchronisierung gestartet haben (auf dem sich die Ressource mit der Hauptrolle befindet):

# mkfs -t ext4 /dev/drbd0

Wir konfigurieren DRBD zur Replikation des Speichers auf zwei CentOS 7-Servern.
Dateisystem auf dem Drbd-Laufwerk erstellen

Dann hÀngen Sie es wie folgt ein (Sie können der EinhÀngepunkt einen passenden Namen geben):

# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/

Kopieren oder erstellen Sie nun einige Dateien im oben angegebenen EinhÀngepunkt und machen Sie eine lange Liste mit Hilfe von dem Befehl ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Wir konfigurieren DRBD zur Replikation des Speichers auf zwei CentOS 7-Servern.
Inhalt des Haupt-Disk-Drbd auflisten

Montieren Sie das GerĂ€t anschließend ab (stellen Sie sicher, dass die Montage nicht geöffnet ist, wechseln Sie das Verzeichnis nach dem Abmontieren, um Fehler zu vermeiden) und Ă€ndern Sie die Rolle des Knotens von Haupt- auf SekundĂ€rknoten:

# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test

Machen Sie den anderen Knoten (auf dem sich die Ressource mit der sekundĂ€ren Rolle befindet) zum Hauptknoten, verbinden Sie dann das GerĂ€t und fĂŒhren Sie eine lange Liste der EinhĂ€ngepunkte aus. Wenn das Setup korrekt funktioniert, sollten alle Dateien, die auf dem Volumen gespeichert sind, dort sein:

# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls  -l 

Wir konfigurieren DRBD zur Replikation des Speichers auf zwei CentOS 7-Servern.
ÜberprĂŒfung des DRBD-Setups, das auf dem sekundĂ€ren Knoten funktioniert.

FĂŒr weitere Informationen konsultieren Sie die Hilfeseiten der Administrationswerkzeuge:

# man drbdadm
# man drbdsetup
# man drbdmeta

Hinweis: Benutzerhandbuch DRBD.

Zusammenfassung

DRBD ist Ă€ußerst flexibel und vielseitig, was es zu einer Lösung fĂŒr die Speicherreplikation macht, die sich hervorragend fĂŒr die Integration von HA in nahezu jede Anwendung eignet. In diesem Artikel haben wir gezeigt, wie man DRBD unter CentOS 7 installiert und kurz demonstriert, wie man es zur Speicherreplikation nutzt. Teilen Sie uns gerne Ihre Gedanken ĂŒber das Feedback-Formular unten mit.

Weitere Informationen zum Kurs.

Quelle: habr.com

60GB SSD 8Gb DDR4