Installation und Konfiguration von DRBD für die Replikation von Netzwerk-Dateisystemen unter Debian 8

DRBD-Konfiguration als Primary/Primary Cluster für Hochverfügbarkeit

Nun wollen wir unseren Netzwerk-Dateisystem-Cluster so konfigurieren, dass er in einer Hochverfügbarkeitskonfiguration arbeitet. Dazu müssen wir einige Änderungen an der Konfiguration vornehmen.

Bearbeiten Sie die Konfigurationsdatei /etc/drbd.d/r0.res und fügen Sie die roten Konfigurationen hinzu:

resource r0 {
on mysql1.local.vm {
device /dev/drbd1;
disk /dev/sdb;
address 192.168.152.100:7789;
meta-disk internal;
}
on mysql2.local.vm {
device /dev/drbd1;
disk /dev/sdb;
address 192.168.152.110:7789;
meta-disk internal;
}
handlers {
split-brain "/usr/lib/drbd/notify-split-brain.sh root";
}
net {
allow-two-primaries;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
startup {
become-primary-on both;
}
}

Im Detail haben wir das Management einer geteilten Hirnsituation automatisiert, da wir uns in einer HA-Umgebung befinden und das Failover automatisiert werden muss.

split-brain = das ist die Maßnahme, die zu ergreifen ist, wenn splitbrain heappens, in diesem Fall sendet er eine E-Mail an root@localhost.

after-sb-0pri = Split brain wurde gerade entdeckt, aber zu diesem Zeitpunkt ist die Ressource auf keinem Host in der primären Rolle.

discard-zero-changes = Wenn es einen Host gibt, auf dem überhaupt keine Änderungen stattgefunden haben, wenden Sie einfach alle Änderungen auf dem anderen an und fahren Sie fort.
after-sb-1pri = Split brain wurde gerade erkannt, und zu diesem Zeitpunkt befindet sich die Ressource in der Primärrolle auf einem Host.

discard-secondary = Welcher Host sich derzeit in der Rolle Secondary befindet, machen Sie diesen Host zum Split Brain Opfer.

after-sb-2pri = Split brain wurde gerade entdeckt, und zu diesem Zeitpunkt befindet sich die Ressource in der primären Rolle auf beiden Hosts.

Dann führen Sie auf beiden Servern die folgenden Befehle aus, jeder Befehl auf jedem Server gleichzeitig:

drbdadm disconnect r0
drbdadm connect r0
drbdadm primary r0

Starten Sie dann den Dienst auf beiden Servern neu mit:

/etc/init.d/drbd restart

Wenn wir uns nun die Logs von drbd für beide Knoten ansehen, können wir sehen.

root@mysql1:~# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
srcversion: 1A9F77B1CA5FF92235C2213
1: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:12 dw:4 dr:904 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
root@mysql2:~# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
srcversion: 1A9F77B1CA5FF92235C2213
1: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r-----
ns:12 nr:0 dw:0 dr:924 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Wie Sie sehen können, ist in beiden Fällen die Konfiguration primär/primär, so dass Sie die Partition nun bei Bedarf auf beiden Servern mounten können.

root@mysql1:~# mount /dev/drbd1 /var/www/
root@mysql1:~# df -h
Dateisystem Dim. Usati Dispon. Uso% Montato su
/dev/sda1 9,3G 1,4G 7,5G 16% /
udev 10M 0 10M 0% /dev
tmpfs 97M 4,6M 92M 5% /run
tmpfs 241M 0 241M 0% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 241M 0 241M 0% /sys/fs/cgroup
/dev/dr1 4,8G 10M 4,6G 1% /var/wwww 1%.

Überprüfen Sie nun, wie es funktioniert. Versuchen Sie, eine Datei in mysql1 zu erstellen.

root@mysql1:~# touch /var/www/mysql1.txt
root@mysql1:~#

Und jetzt versuche drbd1 auf mysql2 zu mounten und sehe, ob mysql1.txt vorhanden ist.

root@mysql2:~# mount /dev/drbd1 /var/www/
root@mysql2:~# ls -al /var/www/
totale 24
drwxr-xr-x 3 root root 4096 ott 5 15:30 .
drwxr-xr-x 12 root root 4096 ott 5 12:26 ..
drwx------ 2 root root 16384 ott 5 12:23 lost+found
-rw-r--r-- 1 root root 0 ott 5 15:20 mysql1.txt

Wie du sehen kannst, ist die Datei vorhanden!

Das könnte dich auch interessieren …