Ich habe mehrere Webanwendungen in Produktion, die NFS-Verbindungen nutzen, um Ressourcen (in der Regel statische Bestandsdateien) für Webköpfe freizugeben. Wenn eine NFS-Einhängung nicht mehr verfügbar ist, hängt sich Apache auf und fordert Dateien an, auf die nicht zugegriffen werden kann, was der Kernel protokolliert:
Nov 2 14:21:20 server2 kernel: nfs: server server1 not responding, still trying
Ich habe das Verhalten in RHEL5 mit NFS v3 und Apache 2.2.3 reproduziert:
-
Erstellen eines NFS-Mounts auf Server1 (Inhalt meiner /etc/exports)
/srv/test_share server2(rw)
-
Hängen Sie die NFS-Freigabe auf Server2 ein (Inhalt meiner /etc/fstab)
server1:/srv/test_share /mnt/test_share nfs defaults 0 0
-
Einrichten eines virtuellen Hosts in Apache mit einer einfachen HTML-Datei, die auf Bilddateien verweist, die im NFS-Sharen gespeichert sind
-
Laden Sie die Website, die HTML- und Bilddateien geben alle 200
-
Deaktivieren Sie die NFS-Freigabe, das Laden der Seite liefert 404s für die referenzierten Bilder
-
Hängen Sie die NFS-Freigabe erneut ein
-
Simulieren Sie einen NFS-Absturz, indem Sie NFS auf Server1 ausschalten - das erneute Laden der Site hängt die referenzierten Dateien ab.
Die Internetrecherchen haben bisher keine gute Lösung ergeben. Grundsätzlich wäre das gewünschte Verhalten, dass der Webserver 404er zurückgibt und sich nicht aufhängt, bis die NFS-Einhängung wiederhergestellt ist.
Zum Wohl,
Ben