Par grande arborescence de fichiers, je veux dire environ 200k fichiers, et en croissance constante. Cependant, un nombre relativement faible de fichiers sont modifiés au cours d'une heure donnée.
Par bidirectionnel, je veux dire que des changements peuvent se produire sur l'un ou l'autre serveur et doivent être poussés sur l'autre, donc rsync ne semble pas approprié.
Par distant, je veux dire que les serveurs sont tous deux dans des centres de données, mais géographiquement éloignés les uns des autres. Actuellement, il n'y a que 2 serveurs, mais cela peut s'étendre avec le temps.
En temps réel, il est acceptable qu'il y ait un peu de latence entre la synchronisation, mais l'exécution d'un cron toutes les 1-2 minutes ne semble pas correcte, car une très petite fraction des fichiers peut changer dans une heure donnée, et encore moins une minute.
EDIT : Cela fonctionne sur les VPS, donc je pourrais être limité sur les types de choses au niveau du noyau que je peux faire. De plus, les VPS ne sont pas riches en ressources, donc je préfère les solutions qui nécessitent beaucoup de RAM (comme Gluster?).
Quelle est la meilleure approche / la plus "acceptée" pour y parvenir? Cela semble être un besoin commun, mais je n'ai pas encore trouvé d'approche généralement acceptée, ce qui était surprenant. (Je cherche la sécurité des masses. :)
J'ai rencontré lsyncd pour déclencher une synchronisation au niveau du changement de système de fichiers. Cela semble intelligent mais pas super commun, et je suis un peu confus par les différentes approches de lsyncd. Il n'y a que lsyncd avec rsync, mais il semble que cela puisse être fragile pour la bidirectionnalité car rsync n'a pas de notion de mémoire (par exemple, pour savoir si un fichier supprimé sur A doit être supprimé sur B ou s'il s'agit d'un nouveau fichier sur B qui doit être copié dans A). lèvresync semble être juste une implémentation lsyncd + rsync, non?
Ensuite, il y a l'utilisation de lsyncd avec csync2 , comme ceci: https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ... Je penche vers cette approche, mais csync2 est un peu excentrique, bien que j'en ai fait un test réussi. Je suis surtout préoccupé par le fait que je n'ai pas pu trouver beaucoup de confirmation communautaire de cette méthode.
Les gens ici semblent beaucoup aimer Unison, mais il semble qu'il ne soit plus en cours de développement actif et il n'est pas clair qu'il dispose d'un déclencheur automatique comme lsyncd.
J'ai vu Gluster mentionné, mais peut-être exagéré pour ce dont j'ai besoin?
MISE À JOUR: fyi- J'ai fini par utiliser la solution originale que j'ai mentionnée: lsyncd + csync2. Cela semble fonctionner assez bien, et j'aime l'approche architecturale consistant à réunir les serveurs de manière très lâche, afin que chaque serveur puisse fonctionner indéfiniment de manière autonome, quelle que soit la qualité de la liaison entre eux.
Réponses:
DRBD en mode double primaire avec un proxy est une option.
la source
Plutôt que de synchroniser, pourquoi ne pas partager le même système de fichiers sur NFS?
la source
Implémenter un système de fichiers distribué est probablement mieux que de le pirater avec des outils et des scripts, surtout si le cluster de serveurs va croître. Vous pourrez également mieux gérer un nœud tombé en panne.
Je ne pense pas que Gluster (ou AFS) soit exagéré du tout.
la source
Dans votre cas, je recommanderais une combinaison de DRBD en mode double primaire et de gfs ou ocfs.
L'inconvénient de DRBD en double primaire est qu'il s'exécutera en mode syncrone. Mais la vitesse d'écriture ne semble pas être importante ici non?
Une alternative à DRBD pourrait être un Soft-Raid1 utilisant plusieurs (2+) cibles iSCSI - mais je préférerais DRBD avec deux nœuds.
la source
Comme démontré ci-dessus, de nombreuses solutions sont disponibles, chacune avec ses avantages et ses inconvénients.
Je pense que j'envisagerais de placer tout l'arbre sous contrôle de version ( Subversion , par exemple) et de vérifier / mettre à jour périodiquement à partir des deux serveurs dans les tâches cron.
la source
Après avoir terminé quelque peu une quête concernant la même chose, je vais avec gluster. Cependant, je n'ai pas fait ou trouvé de tests de performances.
la source