Was ist DRBD?
DRBD (Distributed Replicated Block Device) ist ein Softwarepaket für Linux-basierte Systeme. Es wird verwendet, um die Speichergeräte von einem Knoten zum anderen Knoten über ein Netzwerk zu replizieren.
Es kann Unterstützung beim Umgang mit Disaster Recovery und Failovers bieten. DRBD kann als Hochverfügbarkeit für Hardware verstanden werden und kann als Ersatz für gemeinsam genutzten Netzwerkspeicher angesehen werden.
Wie funktioniert DRBD?
Angenommen, wir möchten eine Speicherpartition auf zwei CentOS-Systemen clustern, benötigen wir auf beiden Systemen ein Blockgerät (wie /dev/sdb1). Diese Systeme sind als Primärknoten und Sekundärknoten definiert (können zwischen Primär- und Sekundärknoten wechseln).
DRBD verwendet ein virtuelles Blockgerät (wie drbd0), um die /dev/sdb1-Blockgeräte beider Systeme gemeinsam zu nutzen. Der primäre Knoten ist derjenige, auf dem das virtuelle Laufwerk drbd0 zu Lese-/Schreibzwecken bereitgestellt wird.
Zuerst müssen wir DRBD-Pakete installieren, die zum Erstellen einer virtuellen Festplatte drbd0 verwendet werden. Wir können es als xfs- oder ext3-Dateisystem formatieren, um das /dev/drbd0-Gerät zu verwenden. Das drbd0-Gerät ist so konfiguriert, dass es /dev/sdb1-Blockgeräte auf beiden Systemen verwendet. Wir arbeiten jetzt nur noch auf dem drbd0-Gerät.
Da drbd0 nur auf dem primären Knoten gemountet werden kann, wird auf den Inhalt jeweils nur vom primären Knoten zugegriffen. Wenn das primäre System abstürzt, können wir auf jeden Fall die Systemdateien verlieren, aber das virtuelle Gerät drbd0 wird verfügbar sein. Wir können den ursprünglich sekundären Knoten in einen primären umschalten und wieder auf seine Inhalte zugreifen.
DRBD unter CentOS verwenden
Dieses Tutorial wurde unter CentOS 7 durchgeführt, sollte aber auch für andere CentOS-Versionen funktionieren. Lesen Sie dies, um zu erfahren, wie Sie die CentOS-Version überprüfen.
Anforderungen
- Zwei CentOS-installiertes System
- Ein kostenloses Blockgerät wie /dev/sdb1 auf beiden Systemen (vorzugsweise gleich groß)
- Selinux Permissiv oder deaktiviert
- Port 7788 auf Firewall erlaubt
- Knoten müssen sich im selben Netzwerk befinden.
Installation
Hier folgen wir der Installation, indem wir das Epel-Repository hinzufügen, da drbd-Pakete bei CentOS-Distributionen nicht verfügbar sind.
$ rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Fügen Sie auch den GPG-Schlüssel auf beiden Knoten hinzu. GPG-Schlüssel ist der öffentliche Schlüssel, der verwendet wird, um die Kommunikation zwischen Knoten zu verschlüsseln.
$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
Jetzt können wir yum verwenden, um drbd-Pakete zu installieren. Wir müssen die von unserem Kernel unterstützten drbd-Versionen identifizieren. Überprüfen Sie die für Ihren Kernel verfügbaren drbd-Versionen:
$ yum info *drbd* | grep Name
Die Ausgabe ist wie folgt:
Installieren Sie nun die erforderliche Version von drbd zusammen mit den erforderlichen Kernelmodulen.
$ yum -y install drbd84-utils kmod-drbd84
Überprüfen Sie, ob das Kernelmodul geladen ist oder nicht.
$ lsmod | grep -i drbd
Wenn die Antwort des obigen Befehls eine leere Ausgabe ergibt, werden Kernelmodule nicht geladen. Sie müssen das System neu starten und Folgendes versuchen:
$ modprobe drbd
modprobe ist ein Befehl, der auf intelligente Weise Module zum Linux-Kernel hinzufügt oder entfernt. Damit die Module bei jedem Start geladen werden, systemd-modules-load Dienst verwendet wird. Erstellen Sie also eine Datei namens drbd.conf innerhalb von /etc/modulesload.d.
$ echo drbd > /etc/modules-load.d/drbd.conf
DRBD konfigurieren
DRBD-Konfigurationsdateien befinden sich unter /etc/drbd.d/
Standardmäßig ist /etc/drbd.d/global_common.conf global verfügbar und enthält die globalen oder Hauptkonfigurationen. Andere Konfigurationsdateien werden Ressourcendateien mit der Erweiterung *.res genannt.
Jetzt erstellen wir die Ressourcenkonfigurationsdateien auf beiden Knoten, um drbd für unsere angegebenen Blockgeräte zu verwenden.
Lassen Sie uns die Ressourcendatei namens linuxhandbook.res
erstellen$ vi /etc/drbd.d/linuxhandbook.res
Kopieren Sie den folgenden Inhalt und fügen Sie ihn in die Ressourcendatei ein
resource linuxhandbook {
protocol C;
on node1 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.20.222.14:7788;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.20.222.15:7788;
meta-disk internal;
}
}
Hier,
- linuxhandbook ist der Ressourcenname. Ressourcennamen müssen immer eindeutig sein.
- Protokoll C wird für die synchrone Kommunikation verwendet. Es ist ein vollständig synchrones Replikationsprotokoll. Andere verfügbare Protokolle sind Protokoll A und Protokoll B.
- Protokoll A :Asynchrones Replikationsprotokoll. Im Allgemeinen bevorzugt für Knoten in weit entfernten Netzwerken.
- Protokoll B :Halbsynchrones Replikationsprotokoll. Wird auch als speichersynchrones Protokoll bezeichnet.
- Protokoll C :bevorzugt für Knoten in Netzwerken mit kurzer Distanz.
- Knoten 1 und Knoten2 sind die Hostnamen einzelner Knoten. Nur verwenden, um die Blöcke zu identifizieren.
- Gerät /dev/drbd0 ist das logische Gerät, das zur Verwendung als Gerät erstellt wurde.
- Festplatte /dev/sdb1 ist das physische Blockgerät, das drbd0 belegt.
- Adresse 10.20.222.14:7788 und Adresse 10.20.222.15:7788 sind die IP-Adressen von zwei jeweiligen Knoten mit offenem TCP-Port 7788.
- meta-internal disk wird verwendet, um festzulegen, dass interne Metadaten der Festplatte verwendet werden sollen.
Die Konfiguration muss auf beiden Knoten gleich sein.
Jetzt müssen wir den Metadatenspeicher auf jedem Knoten initialisieren:
$ drbdadm create-md linuxhandbook
Wenn dies eine Fehlermeldung ausgibt, müssen Sie manuell eine Dummy-Datendatei erstellen und danach den obigen Befehl versuchen.
$ dd if=/dev/zero of=/dev/sdb1 bs=1024k count=1024
Der Befehl dd wird verwendet, um eine zufällige Datei mit dem angegebenen Speicher zu erstellen. Der Befehl create-md muss danach erfolgreich sein.
Nachdem das logische Gerät verwendbar gemacht wurde, hängen Sie das drbd0-Gerät an die sdb1-Festplatte auf beiden Knoten an. Siehe die Ausgabe von lsblk
$ lsblk
die Ausgabe sollte so aussehen
Wenn nicht, hängen Sie das drbd0-Gerät über die Ressourcendatei an die sdb1-Festplatte an.
$ drbdadm attach linuxhandbook
or
$ drbdadm up linuxhandbook
Once again try,
$ lsblk
Starten und aktivieren Sie den drbd-Dienst auf beiden Knoten.
$ systemctl start drbd
$ systemctl enable drbd
Wenn der drbd-Start für einen Knoten schnell sein kann und einige Zeit für einen anderen Knoten benötigt .
Primäre und sekundäre Knoten einrichten
DRDB verwendet jeweils nur einen Knoten als primären Knoten, auf dem Lese- und Schreibvorgänge durchgeführt werden können.
Wir werden zunächst Knoten 1 als primären Knoten angeben.
$ drbdadm primary linuxhandbook --force
Überprüfen Sie den Status des drbd-Prozesses:
$ cat /proc/drbd
or
$ drbd-overview
Die Ausgabe sieht folgendermaßen aus:
Hier sind die Informationen, die wir erhalten können:
- Derzeit welcher Knoten primär und welcher sekundär ist.
- der Datensynchronisierungsprozess.
- drbd-Gerätestatus wie:Inkonsistent, aktuell, datenträgerlos.
Ein weiterer Knoten, Knoten 2, wird automatisch als sekundärer Knoten festgelegt. Sehen Sie sich den Prozessstatus der drbd-Übersicht an.
Der wichtigste Schritt, den wir noch nicht durchgeführt haben, ist das Formatieren des drbd0-Geräts. Dies kann nur auf einem der Knoten erfolgen.
Hier formatieren wir drbd0 als ext3 mit dem Befehl mkfs. xfs-Dateisystem funktioniert auch. Es ist besser, den gleichen Festplattentyp wie in /dev/sdb1 zu verwenden.
$ mkfs -t ext3 /dev/drbd0
Jetzt müssen wir wieder am primären Knoten (in diesem Tutorial zum Beispiel Knoten1) das drbd0-Gerät mounten, um daran arbeiten zu können.
$ mount /dev/drbd0 /mnt
you can select your required mount point instead of /mnt. for example, I can mount the /dev/drbd0 device to /var/lib/mysql to use it for mysql database drbd.
HINWEIS :Denken Sie immer an den Prozess. Zuerst sollten Sie den Knoten als primär für DRBD festlegen. Und dann mounten Sie das drbd0-Gerät auf Ihrem System und Sie dürfen Aktionen auf dem Gerät ausführen. Ohne den Knoten als primär zu machen, können Sie das drb0-Gerät nicht mounten und den Inhalt dieses Geräts nicht verwenden.
DRBD-Prozess testen
Nachdem drbd auf beiden Knoten eingerichtet wurde, wird ein Knoten zum primären Knoten gemacht. Wir haben das Gerät am Standort /mnt gemountet. Erstellen Sie nun eine Datei, um die Synchronisierung von drbd-Knoten zu testen.
$ touch /mnt/drbdtest.txt
$ ll /mnt/
Danach setzen wir node1 als sekundären und node2 als primären. Der Prozess wird ähnlich gespiegelt. Unmounten Sie auf Knoten 1 (bei Instanz primärer Knoten) das /dev/drbd0-Gerät, machen Sie es sekundär. Machen Sie bei node2 (bei der Instanz sekundärer Knoten) ihn zum primären Knoten und montieren Sie ihn an der erforderlichen Position.
bei Knoten 1:
$ umount /mnt
$ drbdadm secondary linuxhandbook
bei Knoten 2:
$ drbdadm primary linuxhandbook
$ mount /dev/drbd0 /mnt
Überprüfen Sie nach dem erfolgreichen Mounten auf Knoten2 die Dateien im Ordner /mnt. Sie müssen die Datei drbdtest.txt sehen (erstellt auf node1).
$ ll /mnt/
Wenn Sie eine GUI-Schnittstelle zum Verwalten und Visualisieren von drbd-Clusterknoten haben möchten, können Sie LCMC (Linux Cluster Management Console) verwenden.
Das ist es! Sie haben DRBD erfolgreich auf Ihrem System implementiert. Wenn noch Fragen offen sind, können Sie diese unten im Kommentarbereich auskommentieren.
Autor :Rishi Raj Gautam ist ein Linux-Liebhaber und ein Open-Source-Aktivist.