Lösung 1:
Es gibt mehrere Möglichkeiten, dies basierend auf Ihren Anforderungen zu tun.
- Verwenden Sie einen zentralen Dateiserver, der mit fx NFS auf den Webservern gemountet ist
- Dasselbe wie oben, aber redundant, wenn also einer ausfällt, übernimmt der andere
- Verwenden Sie ein Synchronisationstool (z. B. rsync) und hosten Sie die Dateien lokal auf den Webservern. Richten Sie dann einen Cronjob ein, um die Dateien zwischen den Servern in einem bestimmten Intervall zu synchronisieren.
- Verwenden Sie ein CDN wie Amazon S3, Akamai etc.
Die ersten beiden sind am besten, wenn viele neue Dateien kommen. Die dritte wäre die ideale Lösung, wenn Sie Dateien nicht so oft hinzufügen oder ändern, da die Benutzer 404-Fehler bei statischen Inhalten erhalten, die noch nicht synchronisiert sind.
Die letzte Option könnte in vielerlei Hinsicht ideal sein, könnte sich aber auch als die teuerste der 4 herausstellen. Sie müssten auch Ihre Websites neu schreiben, um dies zu unterstützen.
Lösung 2:
Eine weitere großartige Möglichkeit, die Last auf Webservern zu verringern und einen Lastausgleich durchzuführen, ist Squid (nämlich squid3). Richten Sie es als Reverse-Proxy mit Caching ein. Statische Inhalte wie Bilder usw. werden entweder auf der Festplatte (Standard) oder im RAM (schneller und am besten) zwischengespeichert, wenn Sie dies so einstellen. Es kann auch Round-Robin zu anderen Squid-Servern ausführen, wenn ein bestimmter Knoten überlastet ist.
Lösung 3:
Eine Lösung für diese Herausforderung, die ich verwendet habe, besteht darin, die Hauptlese-/Schreibkopie der Dateien auf einem freigegebenen NFS-Laufwerk zu haben, aber auch eine schreibgeschützte Kopie auf jedem Webserver zu behalten, damit ein Ausfall des NFS-Hosts den Dateizugriff ermöglicht im schreibgeschützten Modus, anstatt sie vollständig zu verlieren.
- Dateien befinden sich auf einem zentralen Host und werden über NFS-Mount mit Webhosts geteilt
rsync
läuft alle 15 Minuten, um die schreibgeschützte Kopie auf jedem Webhost aktuell zu halten.- A
check_link
bash-Skript wird jede Minute ausgeführt, um sicherzustellen, dass der NFS-Mount noch vorhanden ist, und tauscht andernfalls einen Symlink auf die schreibgeschützte Kopie aus.
Weitere Details finden Sie in diesem Artikel, als ich dieses System zum ersten Mal eingerichtet habe.
Vorteile:
- Dateilesevorgänge sind hochverfügbar
- Keine Racebedingungen für Dateischreibvorgänge
- Neue Dateien sind sofort für alle Webhoster verfügbar.
Nachteile:
- etwas komplex.
- Die Anzahl der Nur-Lese-Kopien skaliert mit der Anzahl der Webhosts, was übermäßig sein kann, wenn Sie viel mehr als zwei haben.
- Dateischreibvorgänge sind nicht hochverfügbar.
- Potenzielle Ausfallzeit von bis zu 1 Minute, bevor zur schreibgeschützten Kopie gewechselt wird.