A solução mais simples provavelmente executaria periodicamente o rsync para sincronizar as alterações de um host para outro. Há também ferramentas bidirecionais semelhantes ao rsync, como Unison . Você pode usar o lsyncd para monitorar o sistema de arquivos, que inicia o Unison para executar uma sincronização. Aqui está um tutorial.
Outra maneira popular e simples é ter um servidor de arquivos onde você armazena seus arquivos PHP. Esses diretórios são compartilhados via NFS e montados pelos servidores reais. Este servidor de arquivos não precisa ser poderoso. Com o armazenamento em cache, o desempenho do sistema de arquivos geralmente é muito bom. A sincronização não é, obviamente, instantânea, embora muito boa. Geralmente é bom o suficiente para um servidor web e fácil de configurar.
Outras opções mais complexas são sistemas de arquivos distribuídos e sistemas relacionados, como GFS , GlusterFS , DRBD . Vou deixar para você mesmo investigar isso, mas eles são considerados bastante complexos. Eles sincronizam quase em tempo real, mas podem ser difíceis de configurar e solucionar problemas.