J'ai deux serveurs, placés dans des centres de données en Hollande et en France. Les deux exécutent Debian Wheezy. Je dois partager / rentrer entre eux, avec de bonnes performances. Il y a quelque 300 utilisateurs sur les serveurs, environ 30 d'entre eux devraient pouvoir avoir des processus actifs sur un serveur donné à un moment donné, chacun ayant des lectures de 50 kbit et et des écritures de 20 kbit / seconde, avec des pics courts autour de 2000 kbit / s lecture. mesures avec iotop sur le stockage local. J'ai beaucoup de petits fichiers, environ 500 000 au total et j'ai besoin d'une latence aussi faible que possible. Le ping entre les serveurs est de 17 ms et la connexion peut atteindre environ 20 à 30 Mo / s lors de l'utilisation de scp et wget. Il semble qu'il devrait y avoir beaucoup de bande passante disponible pour que cela fonctionne aussi, mais ...
Ce que j'ai vérifié jusqu'à présent: sshfs: il semblait que ses performances étaient meilleures que nfs, mais il a changé de façon aléatoire les autorisations des fichiers en root, ce qui a provoqué le crash de l'application.
nfs: moyen de ralentir, d'essayer le noatime et un tas d'autres options, mais il reste lent, même lorsque seuls quelques processus sont actifs.
drbd: 5 heures de travail sans issue, quand j'ai réalisé que je ne pouvais pas vraiment monter le système de fichiers sur les deux systèmes :-(
glusterfs: Avoir une copie locale de toutes les données semblait vraiment prometteur, mais l'accès aléatoire aux fichiers est vraiment lent et après un certain temps, cela devient incroyablement lent et se bloque presque. noatime n'aide pas.
nfs encore: Toujours lent.
Pleurer dans le clavier: Aucune amélioration du tout.
Quoi essayer ensuite? Chacun des essais ratés a pris une soirée ou peut-être plus au cours de la dernière semaine, et j'aimerais vraiment que la prochaine méthode fonctionne. Et oui, il est crucial que les systèmes de fichiers soient partagés entre les deux serveurs.
Merci pour toutes nouvelles idées sur ce problème.
la source
Réponses:
Il existe quelques solutions possibles à cela:
Vous pouvez opter pour un stockage en bloc répliqué comme DRBD (ou MARS comme mentionné ci-dessus), mais vous devez configurer un système de fichiers de cluster au-dessus du stockage en bloc. Ces systèmes de fichiers pourraient être GFS2 ou OCFS2 qui sont tous deux disponibles dans le noyau Debian afaik. DRBD peut gérer primaire / primaire et vous pouvez le monter sur les deux serveurs en même temps. Mais si vous le faites avec un système de fichiers standard, un serveur ne connaît pas l'autre et vous détruiriez votre système de fichiers en quelques secondes. Un système de fichiers de cluster sur le dessus gérerait la communication et le verrouillage afin que les deux nœuds puissent écrire dans le même bloc.
Utilisez un système de fichiers distribué pour / home. Vous trouverez une liste de ces systèmes de fichiers sur http://en.wikipedia.org/wiki/Comparison_of_distributed_file_systems . Mais méfiez-vous et choisissez judicieusement. Ils ne peuvent pas tous faire de la magie et ont tous leurs inconvénients. Gluster est un tel système de fichiers. Pour certains systèmes, vous pourriez avoir besoin de plus de deux nœuds seulement.
S'il ne doit pas être répliqué en temps réel et qu'une synchronisation de fichiers presque en temps réel serait suffisante, alors jetez un œil à BitTorrent Sync ( http://www.getsync.com/ ), Dropbox ou alternatives. Chaque serveur a son propre / home, mais les modifications sont répliquées sur la base de fichiers sur l'autre serveur.
la source