Je crée une application qui doit distribuer un serveur de fichiers standard sur quelques sites via un WAN. Fondamentalement, chaque site doit écrire un grand nombre de fichiers divers de taille variable (certains dans la plage de 100 Mo, mais la plupart sont petits), et l'application est écrite de sorte que les collisions ne soient pas un problème. J'aimerais avoir un système qui réponde aux qualifications suivantes:
- Chaque site peut stocker des fichiers dans un "espace de noms" partagé. Autrement dit, tous les fichiers s'affichent dans le même système de fichiers.
- Chaque site n'enverrait pas de données sur le WAN à moins que cela ne soit nécessaire. C'est-à-dire qu'il y aurait un stockage local de chaque côté du WAN qui serait "fusionné" dans le même système de fichiers logique.
- Linux et gratuit ($$$) est un plus
Fondamentalement, quelque chose comme un partage NFS central répondrait à la plupart des exigences, mais il ne permettrait pas aux données écrites localement de rester locales. Toutes les données des côtés distants du WAN seraient copiées localement tout le temps.
J'ai examiné Luster et j'ai effectué avec succès des tests avec lui, mais il semble distribuer les fichiers de manière assez uniforme sur le stockage distribué. J'ai fouillé dans la documentation et je n'ai rien trouvé qui "préfère" automatiquement le stockage local au stockage distant. Même quelque chose qui allait avec le stockage à latence la plus faible serait bien. Cela fonctionnerait la plupart du temps, ce qui répondrait aux exigences de cette application.
Quelques réponses à quelques questions posées ci-dessous:
- Nœuds de serveur: 2 ou 3 pour démarrer. Chaque serveur aurait des dizaines de clients de lecture / écriture simultanés se connectant.
- La topologie WAN est entièrement maillée et fiable. (grande entreprise, le coût n'est pas aussi limitatif que les formalités administratives)
- Basculement client: en fait, je n'avais pas pensé à faire basculer les clients (principalement parce que notre application actuelle ne le fait pas sur un seul site). Je supposais que la réponse pratique était que les serveurs de chaque site géographiquement distribué devraient être des points de défaillance uniques pour les clients qu'ils desservent. Cependant, si vous pensez à quelque chose de spécifique ici, je pense que ce serait tout à fait pertinent pour la discussion.
- Roll-my-own: J'ai pensé à rsync / unison, mais j'aurais besoin d'un peu de logique pour faire en sorte que la partie "dynamique" de ce travail fonctionne de manière transparente. C'est-à-dire que le fichier semble être local, mais n'est récupéré que sur demande.
- MS-DFS: Cela semble certainement être quelque chose que je devrais examiner. Mon principal problème serait potentiellement incertain quant à la configuration / fiabilité / performance du serveur NFS sous Windows, car de nombreux clients se connectant sont des clients NFS.