Essa configuração depende do tipo de conteúdo a ser acessado pela Web: estritamente estático, dinâmico (PHP, ...), vindo de um servidor de aplicativos (tomcat, Jboss, ...)
Para a parte de balanceamento de carga, é importante saber se você precisa de um balanceador de carga de cluster (para evitar o ponto único de falha nesse nível também), persistência de sessões, se tiver recursos para colocar o balanceador de carga (s) fora dos servidores da web.
Você não explica como gera o conteúdo para seu servidor da web. Se o conteúdo for gerado uma vez por vez em um dispositivo externo, pode não ser necessário ter um armazenamento compartilhado ou um armazenamento replicado para eles. Apenas empurrando o novo conteúdo para dois servidores em vez de um da máquina onde os desenvolvimentos ocorrem bastaria.
Uma abordagem compacta seria instalar Linux Virtual Server em ambos os servidores da web, junto com o apache.
Se o site está fazendo modificações no sistema de arquivos da raiz do documento do Apache, pode haver várias soluções, dependendo do seu aplicativo:
- Basta executar o rsync em intervalos regulares entre os dois servidores usando o crontab
- Crie um compartilhamento NFS em um terceiro servidor montado como a raiz do documento do Apache
- Se o conteúdo mudar muito e você não quiser perder nada a qualquer momento, você pode criar um item de arquivo em uma configuração DRDB , para fazer a replicação de sincronia no nível de bloco da raiz do documento.
- Crie uma caixa de armazenamento compartilhada redundante combinando o DRBD e um mecanismo de compartilhamento (NFS = compartilhamento no nível do arquivo, iSCSI = compartilhamento no nível do bloco). A escolha do método de compartilhamento depende muito do seu aplicativo (número de conexões paralelas, quantidade de E / S, ...)
Na conclusão, não é fácil ser detalhado e exaustivo para responder à sua pergunta, pois sua opinião é muito vaga. A solução correta deve ser configurada de acordo com os requisitos da aplicação, que não estão detalhados aqui.