Sincronizar em várias direções é muito difícil de fazer bem. O que acontece quando você tem um conflito inevitável? isto é, o arquivo A foi editado no node1 e no node2 simultaneamente; ou perto o suficiente para que seu sistema veja alterações em ambos. Qual deles é o preferido? você pára a sincronização e espera por intervenção manual?
Você verá que, quando vários sistemas precisam acessar / sincronizar os mesmos dados e precisam de acesso de leitura e gravação, você terá um dos três métodos:
- Cliente / servidor: algo como NFS / SMB com um servidor que hospeda os arquivos para que todos possam acessar de uma só vez; o servidor manipula o bloqueio de arquivos e permite que cada nó saiba quando uma atualização ocorreu no sistema de arquivos.
- Armazenamento compartilhado: ou seja, SAN ou alguma forma de acesso direto; talvez um servidor executando um destino iSCSI. Com um gerenciador de bloqueio distribuído e um sistema de arquivos em cluster
- Armazenamento sincronizado / em cluster: coisas como Lustre, Ceph e DRBD (com um sistema de arquivos em cluster no topo).
Devido aos problemas que mencionei antes, quase ninguém faz uma ferramenta de sincronização peer to peer. Se você puder refazê-lo para que você sempre tenha atualizações em uma direção, as coisas se tornarão extremamente fáceis.