DRBD (Distributed Replicated Block Device) ist eine verteilte, flexible und universell replizierte Speicherlösung für Linux. Es spiegelt den Inhalt von Blockgeräten wie Festplatten, Partitionen, logischen Volumes usw. wider. zwischen Servern. Es werden Kopien von Daten auf zwei Speichergeräten erstellt, sodass bei einem Ausfall eines der Geräte die Daten auf dem anderen verwendet werden können.
Wir können sagen, dass dies so etwas wie eine RAID 1- Netzwerkkonfiguration mit Festplatten ist, die verschiedenen Servern zugeordnet sind. Es funktioniert jedoch ganz anders als RAID (auch vernetzt).
Ursprünglich wurde DRBD hauptsächlich in Hochverfügbarkeits-Computerclustern (HA) verwendet. Ab Version 9 kann es jedoch zur Bereitstellung von Cloud-Speicherlösungen verwendet werden.
In diesem Artikel führen wir Sie durch die Installation von DRBD unter CentOS und zeigen kurz, wie Sie damit einen Speicher (eine Partition) auf zwei Servern replizieren. Dies ist der perfekte Artikel für den Einstieg in DRBD unter Linux.
Test Umgebung
Wir werden für dieses Setup einen Cluster mit zwei Knoten verwenden.
- Knoten 1: 192.168.56.101 - tecmint.tecmint.lan
- Knoten 2: 192.168.56.102 - server1.tecmint.lan
Schritt 1: Installieren Sie DRBD-Pakete
DRBD ist als Linux-Kernelmodul implementiert. Da es sich um einen virtuellen Blockgerätetreiber handelt, befindet er sich ganz unten im E / A-Stapel des Systems.
DRBD kann von ELRepo oder EPEL installiert werden. Beginnen wir mit dem Importieren des ELRepo-Paketsignaturschlüssels 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-Steuerung zu befreien.
# semanage permissive -a drbd_t
Wenn auf Ihrem System eine Firewall ausgeführt wird, müssen Sie den DRBD-Port 7789 hinzufügen, um die Datensynchronisation zwischen den beiden Knoten zu ermöglichen.
Führen Sie diese Befehle auf dem 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 auf dem 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. Bereiten Sie einen Low-Level-Speicher vor
Nachdem wir DRBD auf beiden Knoten des Clusters installiert haben, müssen wir darauf Speicherbereiche mit ungefähr derselben Größe vorbereiten. Dies kann eine Festplattenpartition (oder eine gesamte physische Festplatte), ein Software-RAID-Gerät , ein logisches LVM-Volume oder eine andere Art von Blockgerät auf Ihrem System sein.
In diesem Tutorial erstellen wir mit dem Befehl dd ein 2-GB-Testblockgerät.
# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024
Angenommen, es handelt sich um eine nicht verwendete Partition (/ dev / sdb1) auf einem zweiten Blockgerät (/ dev / sdb), das mit beiden Knoten verbunden ist.
Schritt 3. DRBD konfigurieren
Die Haupt-DRBD-Konfigurationsdatei ist
/etc/drbd.conf
, und zusätzliche Konfigurationsdateien finden Sie im Verzeichnis /etc/drbd.d
.
Um den Speicher zu replizieren, müssen wir der Datei
/etc/drbd.d/global_common.conf
, die die globalen und allgemeinen DRBD-Konfigurationsabschnitte enthält , die erforderlichen Konfigurationen hinzufügen und Ressourcen in den .res
Dateien definieren.
Sichern Sie die Originaldatei auf beiden Knoten und öffnen Sie die neue Datei zur Bearbeitung (verwenden Sie Ihren bevorzugten Texteditor).
# 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 den Editor.
Konzentrieren wir uns kurz auf die Protokoll-C-Zeile. DRBD unterstützt drei verschiedene Replikationsmodi (d. H. Drei Grad der Replikationssynchronität), nämlich:
- Protokoll A: asynchrones Replikationsprotokoll; Wird am häufigsten in Fernreplikationsszenarien verwendet.
- Protokoll B: Semisynchrones Replikationsprotokoll oder synchrones Speicherprotokoll.
- Protokoll C: Wird normalerweise für Knoten in Kurzstreckennetzen verwendet. Es ist bei weitem das am häufigsten verwendete Replikationsprotokoll in DRBD-Einstellungen.
Wichtig : Die Auswahl des Replikationsprotokolls wirkt sich auf zwei Bereitstellungsfaktoren aus: Sicherheit und Latenz. Im Gegensatz dazu ist der Durchsatz weitgehend unabhängig vom gewählten Replikationsprotokoll.
Schritt 4. Hinzufügen einer Ressource
Ressource ist ein Sammelbegriff, der sich auf alle Aspekte eines bestimmten Datensatzes bezieht, der repliziert wird. Wir werden unsere Ressource in einer 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:
- on hostname : Der on-Abschnitt, zu dem die verschachtelte Konfigurationsanweisung gehört.
- 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 eine Blockgerätepartition, die ein Sicherungsgerät für ein DRBD-Gerät ist.
- Meta-Disk : Definiert, wo DRBD seine Metadaten speichert. Intern bedeutet, dass DRBD seine Metadaten auf demselben physischen Gerät auf niedriger Ebene speichert wie die tatsächlichen Daten in der Produktion.
- Adresse : Gibt die IP-Adresse und die Portnummer des entsprechenden Hosts an.
Beachten Sie auch, dass Sie die Parameter direkt im Abschnitt Ressourcen angeben können, wenn sie auf beiden Hosts dieselben Werte haben.
Zum Beispiel könnte die obige Konfiguration überarbeitet werden, um:
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 der 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 : Ein DRBD-Verwaltungstool auf hoher Ebene.
- drbdsetup : Ein untergeordnetes Verwaltungstool zum Verbinden von DRBD-Geräten mit ihren Sicherungsgeräten, zum Konfigurieren von DRBD-Gerätepaaren zum Spiegeln ihrer Sicherungsgeräte und zum Überprüfen der Konfiguration laufender DRBD-Geräte.
- Drbdmeta : ein 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 ihn starten, der die Ressource mit dem Sicherungsgerät verbindet, dann die Replikationsparameter festlegen und die Ressource mit dem Peer verbinden:
# drbdadm up test
Wenn Sie nun den Befehl lsblk ausführen , werden Sie feststellen, dass das DRBD-Gerät / Volume drbd0 dem Sicherungsgerät zugeordnet ist
/dev/sdb1
:
# lsblk
Liste der Blockgeräte
Führen Sie Folgendes aus, um eine Ressource zu deaktivieren:
# drbdadm down test
Führen Sie den folgenden Befehl aus, um den Status der Ressource zu überprüfen (beachten Sie, dass an dieser Stelle der Status Inkonsistent / Inkonsistent erwartet wird ):
# drbdadm status test
OR
# drbdsetup status test --verbose --statistics #for a more detailed status
Überprüfen des Status einer Ressource auf
Böses
Schritt 6: Festlegen der Hauptressource / -quelle für die anfängliche Gerätesynchronisierung
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 nur auf einem Knoten aus, um die anfängliche vollständige Synchronisierung zu starten:
# drbdadm primary --force test
# drbdadm status test
Festlegen des
Primärknotens als Startgerät Nach Abschluss der Synchronisierung sollte der Status beider Festplatten UpToDate sein.
Schritt 7: Testen des DRBD-Setups
Schließlich müssen wir prüfen, ob das DRBD-Gerät ordnungsgemäß funktioniert, um die replizierten Daten zu speichern. Denken Sie daran, dass wir ein leeres Datenträger-Volume verwendet haben. Daher müssen wir ein Dateisystem auf dem Gerät erstellen und es bereitstellen, um zu prüfen, ob wir es zum Speichern replizierter Daten verwenden 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 (der eine Ressource mit einer primären Rolle hat):
# mkfs -t ext4 /dev/drbd0
Erstellen Sie ein Dateisystem auf dem Drbd-Volume.
Mounten Sie es dann wie gezeigt (Sie können dem Mount-Punkt einen geeigneten Namen geben):
# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/
Kopieren oder erstellen Sie nun einige Dateien am obigen Einhängepunkt und erstellen Sie mit dem Befehl ls eine lange Liste :
# cd /mnt/DRDB_PRI/
# ls -l
Listen Sie den Inhalt des primären Drbd-Volumes auf. Hängen Sie anschließend die Bereitstellung
des Geräts auf (stellen Sie sicher, dass die Bereitstellung nicht geöffnet ist, ändern Sie das Verzeichnis nach der Bereitstellung, um Fehler zu vermeiden) und ändern Sie die Hostrolle von primär zu sekundär:
# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test
Machen Sie einen anderen Knoten (der eine Ressource mit einer sekundären Rolle hat) primär, schließen Sie dann ein Gerät an und führen Sie eine lange Liste von Mountpunkten 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 in den Manpages der Verwaltungstools:
# man drbdadm
# man drbdsetup
# man drbdmeta
Hilfe: DRBD-Benutzerhandbuch .
Zusammenfassung
DRBD ist äußerst flexibel und vielseitig, was es zu einer Speicherreplikationslösung macht, die zum Hinzufügen von HA zu nahezu jeder Anwendung geeignet ist. In diesem Artikel haben wir Ihnen gezeigt, wie Sie DRBD unter CentOS 7 installieren, und kurz gezeigt, wie Sie es zum Replizieren von Speicher verwenden. Teilen Sie uns Ihre Gedanken über das unten stehende Feedback-Formular mit.
Erfahren Sie mehr über den Kurs.