NFS Server · 3 min read · Nov 18, 2025

Einrichten eines hochverfügbaren NFS-Servers - Seite 4

8 Installieren und Konfigurieren von heartbeat

heartbeat ist die Steuerinstanz dieses gesamten Setups. Es wird auf server1 und server2 installiert und überwacht den anderen Server. Wenn server1 ausfällt, erkennt heartbeat auf server2 dies und lässt server2 übernehmen. heartbeat startet und stoppt auch den NFS-Server auf sowohl server1 als auch server2. Es bietet auch NFS als virtuellen Dienst über die IP-Adresse 192.168.0.174, sodass die Knoten des Webserver-Clusters nur einen NFS-Server sehen.

Zuerst installieren wir heartbeat:

server1/server2:

apt-get install heartbeat

Jetzt müssen wir drei Konfigurationsdateien für heartbeat erstellen. Sie müssen identisch auf server1 und server2 sein!

server1/server2:

/etc/heartbeat/ha.cf:

| logfacility local0 keepalive 2 #deadtime 30 # VERWENDEN SIE DAS!!! deadtime 10 bcast eth0 node server1 server2 |

Als Knotennamen müssen wir die Ausgabe von uname -n auf server1 und server2 verwenden.

server1/server2:

/etc/heartbeat/haresources:

| server1 IPaddr::192.168.0.174/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server |

Das erste Wort ist die Ausgabe von uname -n auf server1, egal ob Sie die Datei auf server1 oder server2 erstellen! Nach IPaddr setzen wir unsere virtuelle IP-Adresse 192.168.0.174, und nach drbddisk verwenden wir den Ressourcennamen unserer DRBD-Ressource, die hier r0 ist (denken Sie daran, dass dies der Ressourcenname ist, den wir in /etc/drbd.conf verwenden - wenn Sie einen anderen verwenden, müssen Sie ihn auch hier verwenden).

server1/server2:

/etc/heartbeat/authkeys:

| auth 3 3 md5 somerandomstring |

somerandomstring ist ein Passwort, das die beiden heartbeat-Dämonen auf server1 und server2 verwenden, um sich gegenseitig zu authentifizieren. Verwenden Sie hier Ihren eigenen String. Sie haben die Wahl zwischen drei Authentifizierungsmechanismen. Ich verwende md5, da es der sicherste ist.

/etc/heartbeat/authkeys sollte nur von root lesbar sein, daher tun wir dies:

server1/server2:

chmod 600 /etc/heartbeat/authkeys

Schließlich starten wir DRBD und heartbeat auf server1 und server2:

server1/server2:

/etc/init.d/drbd start
/etc/init.d/heartbeat start

9 Erste Tests

Jetzt können wir unsere ersten Tests durchführen. Auf server1 führen Sie aus:

server1:

ifconfig

In der Ausgabe sollte die virtuelle IP-Adresse 192.168.0.174 angezeigt werden:

| eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.172 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fea1:c59b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:18992 errors:0 dropped:0 overruns:0 frame:0 TX packets:24816 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2735887 (2.6 MiB) TX bytes:28119087 (26.8 MiB) Interrupt:177 Base address:0x1400 eth0:0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.174 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:177 Base address:0x1400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:71 errors:0 dropped:0 overruns:0 frame:0 TX packets:71 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5178 (5.0 KiB) TX bytes:5178 (5.0 KiB) |

Führen Sie auch aus:

server1:

df -h

auf server1. Sie sollten jetzt /data dort aufgelistet sehen:

| Filesystem Size Used Avail Use% Mounted on /dev/sda5 4.6G 430M 4.0G 10% / tmpfs 126M 0 126M 0% /dev/shm /dev/sda1 89M 11M 74M 13% /boot /dev/drbd0 24G 33M 23G 1% /data |

Wenn Sie dasselbe tun:

server2:

ifconfig
df -h

auf server2, sollten Sie 192.168.0.174 und /data nicht sehen.

Jetzt erstellen wir eine Testdatei in /data/export auf server1 und simulieren dann einen Serverausfall von server1 (indem wir heartbeat stoppen):

server1:

touch /data/export/test1
/etc/init.d/heartbeat stop

Wenn Sie jetzt ifconfig und df -h auf server2 ausführen, sollten Sie die IP-Adresse 192.168.0.174 und die /data-Partition sehen, und

server2:

ls -l /data/export

sollte die Datei test1 auflisten, die Sie zuvor auf server1 erstellt haben. Sie wurde also auf server2 gespiegelt!

Jetzt erstellen wir eine weitere Testdatei auf server2 und sehen, ob sie auf server1 gespiegelt wird, wenn es wieder hochkommt:

server2:

touch /data/export/test2

server1:

/etc/init.d/heartbeat start

(Warten Sie ein paar Sekunden.)

ifconfig
df -h
ls -l /data/export

Sie sollten 192.168.0.174 und /data wieder auf server1 sehen, was bedeutet, dass es wieder übernommen hat (weil wir es als primär definiert haben), und Sie sollten auch die Datei /data/export/test2 sehen!

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.