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.