Por árbol de archivos grande me refiero a unos 200k archivos, y creciendo todo el tiempo. Sin embargo, se cambia un número relativamente pequeño de archivos en una hora determinada.
Por bidireccional quiero decir que los cambios pueden ocurrir en cualquiera de los servidores y necesitan ser empujados al otro, por lo que rsync no parece apropiado.
Por distante quiero decir que los servidores están en centros de datos, pero geográficamente remotos entre sí. Actualmente solo hay 2 servidores, pero eso puede expandirse con el tiempo.
En tiempo real, está bien que haya una pequeña latencia entre la sincronización, pero ejecutar un cron cada 1-2 minutos no parece correcto, ya que una fracción muy pequeña de archivos puede cambiar en una hora determinada, y mucho menos minutos.
EDITAR : Esto se ejecuta en VPS, por lo que podría estar limitado en los tipos de cosas a nivel de kernel que puedo hacer. Además, los VPS no son ricos en recursos, por lo que evitaría las soluciones que requieren mucha memoria RAM (como Gluster?).
¿Cuál es el enfoque mejor / más "aceptado" para hacer esto? Parece que sería una necesidad común, pero todavía no he podido encontrar un enfoque generalmente aceptado, lo cual fue sorprendente. (Estoy buscando la seguridad de las masas. :)
Me he encontrado con lsyncd para activar una sincronización en el nivel de cambio del sistema de archivos. Eso parece inteligente, aunque no es muy común, y estoy un poco confundido por los diversos enfoques de lsyncd. Solo está usando lsyncd con rsync, pero parece que esto podría ser frágil para la bidireccionalidad ya que rsync no tiene una noción de memoria (por ejemplo, para saber si un archivo eliminado en A debe eliminarse en B o si es un archivo nuevo en B eso debería copiarse a A). lipsync parece ser solo una implementación lsyncd + rsync, ¿verdad?
Luego está usando lsyncd con csync2 , así: https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ... Me estoy inclinando hacia este enfoque, pero csync2 es un poco peculiar, aunque hice una prueba exitosa. Me preocupa sobre todo que no haya podido encontrar mucha confirmación comunitaria de este método.
A la gente aquí parece gustarle mucho Unison, pero parece que ya no está en desarrollo activo y no está claro que tenga un activador automático como lsyncd.
He visto mencionar a Gluster , pero ¿quizás exagere para lo que necesito?
ACTUALIZACIÓN: fyi- Terminé yendo con la solución original que mencioné: lsyncd + csync2. Parece que funciona bastante bien, y me gusta el enfoque arquitectónico de tener los servidores unidos de manera muy flexible, de modo que cada servidor pueda funcionar de manera indefinida por sí mismo, independientemente de la calidad del enlace entre ellos.