Ich erstelle eine Anwendung, die einen Standard-Dateiserver über ein WAN auf einige Standorte verteilen muss. Grundsätzlich muss jede Site viele verschiedene Dateien unterschiedlicher Größe schreiben (einige im Bereich von 100 MB, die meisten jedoch klein), und die Anwendung ist so geschrieben, dass Kollisionen kein Problem darstellen. Ich möchte ein System einrichten, das die folgenden Qualifikationen erfüllt:
- Jede Site kann Dateien in einem gemeinsam genutzten "Namespace" speichern. Das heißt, alle Dateien werden im selben Dateisystem angezeigt.
- Jeder Standort würde keine Daten über das WAN senden, es sei denn, dies ist erforderlich. Das heißt, auf jeder Seite des WAN würde lokaler Speicher vorhanden sein, der in dasselbe logische Dateisystem "zusammengeführt" würde.
- Linux & Free ($$$) ist ein Plus
Grundsätzlich würde so etwas wie eine zentrale NFS-Freigabe die meisten Anforderungen erfüllen, jedoch nicht zulassen, dass die lokal geschriebenen Daten lokal bleiben. Alle Daten von entfernten Seiten des WAN werden ständig lokal kopiert.
Ich habe mich mit Lustre befasst und einige erfolgreiche Tests damit durchgeführt. Es scheint jedoch, dass Dateien ziemlich gleichmäßig über den verteilten Speicher verteilt werden. Ich habe die Dokumentation durchgesehen und nichts gefunden, das den lokalen Speicher automatisch dem Remotespeicher "vorzieht". Sogar etwas, das mit dem Speicher mit der niedrigsten Latenz ging, wäre in Ordnung. Es würde die meiste Zeit funktionieren, was den Anforderungen dieser Anwendung entsprechen würde.
Einige Antworten auf einige der unten gestellten Fragen:
- Serverknoten: 2 oder 3 zum Starten. Jeder Server verfügt über Dutzende gleichzeitiger Lese- / Schreibclients, die eine Verbindung herstellen.
- Die WAN-Topologie ist vollständig vermascht und zuverlässig. (Großunternehmen, Kosten sind nicht so hoch wie Bürokratie)
- Client-Failover: Ich hatte eigentlich nicht daran gedacht, das Client-Failover durchzuführen (hauptsächlich, weil unsere aktuelle Anwendung dies nicht nur an einem Standort tut). Ich nahm an, dass die praktische Antwort lautet, dass die Server an jedem geografisch verteilten Standort einzelne Fehlerquellen für die Clients sein sollen, die sie bedienen. Wenn Sie hier über etwas Bestimmtes nachdenken, denke ich, dass dies für die Diskussion ziemlich wichtig wäre.
- Roll-my-own: Ich habe über rsync / unison nachgedacht, aber ich würde einiges an ausgefallener Logik benötigen, um den "dynamischen" Teil dieser Arbeit nahtlos zu machen. Das heißt, die Datei scheint lokal zu sein, wird jedoch nur bei Bedarf abgerufen.
- MS-DFS: Es scheint sicherlich etwas zu sein, das ich untersuchen sollte. Mein Hauptproblem wäre möglicherweise die Unsicherheit über die Konfiguration / Zuverlässigkeit / Leistung des NFS-Servers unter Windows, da viele der Clients, die eine Verbindung herstellen, NFS-Clients sind.