NFS Server · 7 min read · Jan 30, 2026
Hochverfügbarer NFS-Server mit DRBD und Heartbeat auf Debian 5.0 (Lenny)
Hochverfügbarer NFS-Server mit DRBD und Heartbeat auf Debian 5.0 (Lenny)
Dieses HowTo erklärt, wie ich einen hochverfügbaren NFS-Server mit Debian 5 (Lenny) und drbd8 mit Heartbeat eingerichtet habe.
Ich habe dieses Setup vor ein paar Tagen gemacht. Nur zum Spaß. Also dachte ich, es wäre eine gute Idee, dies zu dokumentieren.
Autor - Vishal Sharma
Erstellt - 9. März 2010
Version - 1.0
Haftungsausschluss - Dieses HowTo wird wie es ist bereitgestellt und kommt ohne jegliche Gewährleistung. Nutzen Sie es auf eigenes Risiko. Diese Schritte haben bei mir funktioniert. Daher sollten sie wahrscheinlich auch bei Ihnen funktionieren. Falls Sie auf Probleme stoßen, können Sie gerne Ihre Kommentare unten hinterlassen. Ich werde versuchen, diese so schnell wie möglich zu beantworten.
Hier ist eine Zusammenfassung dessen, was Sie tun müssen:
Schritt 1. Bereiten Sie Ihr System vor. Dies umfasst die Einrichtung Ihrer grundlegenden Hardware und Software. (Dies wird nicht als Teil dieses HowTo behandelt.)
Schritt 2. Richten Sie die erforderlichen IP-Adressen ein.
Schritt 3. Installieren Sie die erforderlichen Pakete.
Schritt 4. Bearbeiten Sie die relevanten Konfigurationsdateien.
Schritt 5. Starten Sie Ihr System.
Schritt 6. Testen Sie es, um sicherzustellen, dass es tatsächlich funktioniert.
SCHRITT 1. Bereiten Sie Ihr System vor
Ich verwende 3 Debian-Systeme dafür. Alle sind eine Standard-Standardinstallation. Ich habe jedoch eine Änderung vorgenommen, um mein System im Textmodus zu starten. Da ich nicht so großartige Hardware auf meinem Rechner habe, ziehe ich es vor, mit der Kommandozeile zu arbeiten.
Jedes System hat ein integriertes Netzwerk. In Produktionssystemen ist dies normalerweise nicht der Fall. Aber da meines nur eine Spielinstallation ist, habe ich es nicht für nötig gehalten, Dinge hinzuzufügen, die eine bessere Leistung bieten würden.
Wenn Sie keine Box widmen möchten, können Sie immer Sun VirtualBox dafür verwenden und Ihr Setup haben. Es ist auf diese Weise viel einfacher, da es Ihnen den Vorteil bietet, System-Snapshots zu erstellen, bevor Sie wesentliche Konfigurationsänderungen vornehmen.
Mein Testsetup hier basiert auf 2 Servern und einem Client. In meinem Szenario ist dieses Client-System nur ein normaler NFS-Client, der Freigaben vom NFS-Server einbindet. Mein Setup hier ist Aktiv/Passiv und NICHT Aktiv/Aktiv. Wenn Ihr aktives System zu einem bestimmten Zeitpunkt ausfällt, übernimmt das passive System.
Auf server01 und server02 habe ich 2 Partitionen, nämlich
/dev/hdb1 - 500GB - die als /data nfs-mountet.
/dev/hdc1 - 500MB - dies speichert die drbd-Metadaten. Es benötigt mindestens 128MB.
Stellen Sie sicher, dass Sie keine dieser Partitionen einhängen. Dies wird von drbd behandelt. Stellen Sie sicher, dass Sie nur die Partitionen erstellen und sie einfach so belassen, wie sie sind. Kein Formatieren, keine Einhängepunkte für jetzt.
SCHRITT 2. Richten Sie die erforderlichen IP-Adressen ein
Hier ist, wie ich meine Systeme benannt habe:
server01 - 192.168.1.2/24 (eth0)
server02 - 192.168.1.3/24 (eth0)
client01 - 192.168.1.4/24 (eth0)
Stellen Sie sicher, dass Sie die obigen Einträge in Ihrer /etc/hosts-Datei haben, damit die Namensauflösung kein Problem darstellt. Dies ist wahrscheinlich die beste Option und Sie möchten sich nicht mit der Einrichtung eines DNS-Servers dafür herumschlagen.
192.168.1.5/24 wäre meine virtuelle schwebende IP-Adresse. Dies ist die Adresse, die von der Außenwelt gesehen wird und von System zu System schwebt, während sich deren Zustand ändert.
Mein Standardgateway ist 192.168.1.1/24, was mein Router ist. Ich benötige Internetzugang für die Paketinstallationen.
Schritt 3. Installieren Sie die erforderlichen Pakete
Das Wichtigste für den HA-Cluster, damit er gut funktioniert, ist - DIE UHRZEIT. Die Uhrzeit auf den Systemen sollte gleich sein. Um dies sicherzustellen, stellen Sie sicher, dass Sie ntp-Pakete installiert haben.
server01# apt-get install ntp ntpdateFühren Sie das oben genannte auf server01 und server02 aus.
Auf den Servern, d.h. server01 und server02, müssen Sie die folgenden Pakete installieren, um in Betrieb zu gehen.
drbd8, Kernel-Header-Dateien, nfs-server-Installation und Heartbeat. Hier ist, was ich getan habe.
server01# apt-get updateserver01# apt-get install linux-headers-`uname -r` drbd8-utils drbd8-source heartbeat nfs-kernel-server(Das oben sollte eine Weile dauern, um abzuschließen.)
Nachdem die Installation abgeschlossen ist, erstellen Sie das Kernel-drbd-Modul mit dem folgenden Befehl:
server01# m-a a-i drbd8-sourceDies wird eine Kompilierung durchführen und das drbd-Kernelmodul erstellen.
server01# modprobe drbdserver01# lsmod | grep drbd(Das sollte Ihnen etwas anzeigen, wenn dies Ihnen nichts gibt, dann gibt es irgendwo ein Problem, das behoben werden muss.)
Deaktivieren Sie nfs, um beim Booten zu starten. Dies geschieht, weil der nfs-Start und -Stopp von drbd verwaltet wird und wir nicht möchten, dass das System sich einmischt.
server01# update-rc.d -f nfs-kernel-server removeserver01# update-rc.d -f nfs-common removeFühren Sie die gleichen Schritte auch auf server02 aus.
Schritt 4. Erstellen/Bearbeiten Sie die relevanten Konfigurationsdateien
Dies sind die Dateien, die Sie auf server01 und server02 bearbeiten müssen.
Um NFS-Exporte zu verwalten - /etc/exports - (auf server01 und server02):
/data/export 192.168.1.0/255.255.255.0(rw)Für die drbd-Konfiguration - /etc/drbd.conf (auf server01 und server02):
global {
usage-count yes;
}
common {
syncer { rate 10M; }
}
resource r0 {
protocol C;
handlers {
pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
}
startup {
degr-wfc-timeout 120; # 2 Minuten.
}
disk {
on-io-error detach;
}
net {
}
syncer {
rate 10M;
al-extents 257;
}
on server01 {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.1.2:7788;
meta-disk /dev/hdc1[0];
}
on server02 {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.1.3:7788;
meta-disk /dev/hdc1[0];
}
}Für Heartbeat - /etc/ha.d/ha.cf - (auf server01 und server02):
logfacility local0
keepalive 1
deadtime 10
bcast eth1
auto_failback on
node server01 server02Richten Sie die Heartbeat-Authentifizierung ein - /etc/heartbeat/authkeys - (auf server01 und server02):
auth 3
3 md5 your_passwordAnstelle von md5 können Sie auch sha1 verwenden. Vergessen Sie nicht, diese Datei nur für root lesbar/schreibbar zu machen.
chmod 600 /etc/heartbeat/authkeys (auf server01 und server02.)
Um die ha-Ressource verfügbar zu machen - /etc/ha.d/haresources - (auf server01 und server02):
server01 IPaddr::192.168.1.100
server01 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server(HINWEIS: für server02 müssen Sie in der haresources-Datei bemerkt haben, dass ich denselben Hostnamen, d.h. server01, verwendet habe. Dies soll sicherstellen, dass, wenn server01 online verfügbar ist, server02 die Kontrolle an ihn zurückgibt und er sekundär wird. Bitte ändern Sie den obigen Hostnamen in server02, wenn Sie möchten, dass er primär bleibt.)
Nachdem Sie all dies getan haben, geben Sie diese Befehle ein, um das drbd-Metadisk zu initialisieren (auf server01 und server02):
server01# drbdadm create-md r0 ( r0 ist der Ressourcenname.)
server01# drbdadm up allFühren Sie ein
cat /proc/drbd auf server01 und server02 aus und Sie werden sehen, dass sowohl server01 als auch server02 im sekundären Modus und inkonsistent sind. Das ist ziemlich offensichtlich, da wir das nfs-System noch nicht eingerichtet haben und wir nicht definiert haben, welches System der primäre Server sein wird. In meinem Fall ist es server01. Daher werde ich die folgenden Befehle auf server01 eingeben:
server01# drbdsetup /dev/drbd0 primary -oserver01# mkfs.ext3 /dev/drbd0server01# mkdir /dataserver01# mount -t ext3 /dev/drbd0 /dataStandardmäßig speichert der nfs-Server seinen Einhängezustand und seine Sperren unter /var/lib/nfs und wir möchten, dass dies im Falle eines Failovers erhalten bleibt. Also tun Sie dies auf server01:
server01# mv /var/lib/nfs/ /data/server01# ln -s /data/nfs/ /var/lib/nfsserver01# mkdir /data/exportserver01# umount /dataserver01# cat /proc/drbd <— Sehen Sie es sich genau an und Sie werden feststellen, dass server01 jetzt das primäre System ist.
Geben Sie diese Befehle auf server02 ein, um es auf einen Übernahmefall im Falle eines Ausfalls vorzubereiten.
mkdir /datarm -fr /var/lib/nfsln -s /data/nfs /var/lib/nfsHmm… das ist ziemlich viel. Sie sind aus der Konfigurationssicht fertig. Jetzt fahren Sie fort und starten Sie Ihre Systeme.
Schritt 5. Starten Sie Ihr System
Starten Sie die erforderlichen Dienste auf server01 und server02:
/etc/init.d/drbd start/etc/init.d/heartbeat startNachdem das oben erfolgreich abgeschlossen wurde, werden Sie feststellen, dass server01 eine zusätzliche IP - 192.168.1.100 hat und /data eingehängt ist. Sie können auch die Datei /proc/drbd für den Echtzeitstatus überprüfen.
Auf server02 sollten Sie 192.168.1.100 und /data nicht sehen.
tail -f /var/log/messagesund beobachten Sie den Spaß.
Schritt 6. Testen Sie es, um sicherzustellen, dass es tatsächlich funktioniert
Der beste Weg, dies zu testen, ist, es auf die echte und harte Weise zu tun. Schalten Sie einfach server01 aus und sehen Sie, wie server02 übernimmt. Beobachten Sie die Übernahmeprotokolle auf server02. :)
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.