Honestamente, eu não sugeriria fazer replicação em tempo real entre as máquinas do apache. Faça com que eles tenham seu próprio código ou rsync do servidor "principal" de vez em quando. Em tempo real (ou próximo) há muita inspeção de arquivos que não é necessária 99% do tempo.
Pessoalmente, eu recomendaria ter três camadas.
Balanceamento de carga / Servidores da Web (seus processos http / php)
Servidores de arquivos (código / arquivos que precisam ser compartilhados em todos os nós da web)
Servidores de banco de dados (seus bancos de dados de back-end)
Muito mais simples do que ter replicação completa entre servidores.
Se você não tiver a capacidade de ter um servidor de arquivos dedicado (NFS / ect), Terá o "Web2" Montado "Carregamentos de usuário do Web1", Ambos os servidores da Web poderão ler & escrever para a área compartilhada, sem necessidade de sincronização, a menos que você atualize o código do site.
Web1
/var/www/website/www
/var/www/website/_files
web2
/var/www/website/www
/var/www/website/_files (NFS mouned to Web1)
/var/www/website/_files.bak (rsync copy from web1 incase web1 explodes)
Ambos os servidores são quase-vivos em termos de armazenamento, são redundantes e você não precisa adicionar nenhuma bobagem de sincronização complexa.
editar:
há um guia sobre como usar o NFS em uma instância do EC2.