Esses requisitos não são completamente incomuns, mas parece um problema.
Para os aplicativos da web de negócios mais significativos, os proxies de balanceamento de carga de alta disponibilidade devem estar em praticamente todos os lugares. Isso significa usar o que for apropriado: dns round-robin, haproxy, ipvs, pfsense, f5's, netscalers, cisco ace, etc.
Servidores da Web que atendem ao conteúdo estático devem ser sem estado. Além de eliminar conexões, deve haver pouco ou nenhum impacto nos usuários se algum servidor da web desaparecer. Portanto, não é necessário ter replicação de disco entre máquinas. Use LB mencionado acima para realizar a mesma coisa com menos esforço. A replicação cria dependências frágeis e um pesadelo de suporte que poderia derrubar tudo. Empurrar com git ou rsync sobre ssh como mencionado anteriormente em um servidor de implementação interno é uma idéia melhor. Se for enviar conteúdo para milhares de nós, a gema de assassinato do Twitter é incrível.
Servidores de aplicativos, qualquer coisa que produza uma página da Web com base em dados que sejam alterados, também devem ser relativamente sem estado. Definitivamente, use algo como o Nginx para fazer implantações limpas, dinâmicas e exponenciais do aplicativo. Os dados devem ser mantidos em um banco de dados (sql / nosql) ou provedor de dados RESTful.
O failover testado exaustivamente deve ser reservado para proteger bancos de dados e outros componentes cruciais. Para desempenho, se o aplicativo for medido para ter um afunilamento de gravação concorrente no banco de dados além do que o hardware (scale-up) pode manipular, considere um nosql confiável que usa um mecanismo de armazenamento estruturado por log, como o bitcask do riak.
Se este não for um aplicativo da Web, mas processar uma grande quantidade de dados, avalie um framework MapReduce como o Hadoop, que usa seu HDFS.