Você está realmente fazendo duas perguntas.
Balanceamento de carga do tráfego HTTP
Uma boa ferramenta para usar é haproxy. Eu acho que vale muito a pena usar por causa de seu uso leve de recursos, configuração versátil, excelente registro e boa interface de usuário "ao vivo".
Você pode executá-lo em uma máquina e distribuir conexões HTTP para vários back-ends com base em uma estratégia configurável (como round-robin ou, de preferência, conexões menos abertas).
Implantando seu aplicativo em vários hosts
Apenas sincronizar o disco rígido provavelmente não será a solução. Infelizmente você menciona apenas "projetos da web". Isso significa HTML estático? Código? Bancos de dados?
A maioria dos aplicativos não é gravada de maneira que eles possam operar em um "sistema de arquivos compartilhado", porque eles se colocariam uns sobre os outros.
O padrão de arquitetura normalmente usado para fazer escala de aplicativos da Web é chamado de "nada compartilhado" para que eles possam ser executados sem esse tipo de sincronização.
Acho o "app de 12 fatores" um bom manual para esse padrão: link ele também faz referência ao artigo da Wikipedia sobre o tópico : link