As VMs não o ajudarão muito aqui, no que diz respeito à alta disponibilidade, embora possam ser úteis para simplificar a consolidação.
Sua pergunta não pode ser respondida sem dois dados importantes: seu orçamento e a carga. Se você tem um orçamento limitado, mas sua carga é baixa o suficiente, você pode facilmente mover tudo isso para dois servidores em uma configuração ativa / passiva.
Se o seu orçamento permitir, você poderá considerar a aquisição de uma SAN (ou, preferencialmente, duas para HA). Nesse caso, você ainda pode ter os bancos de dados, possivelmente virtualizados, no mesmo servidor que os aplicativos, mas com os dados gravados na SAN. Bancos de dados são principalmente ligados a E / S.
Outra rota é, na verdade, ter um cluster de failover de dois nós para os bancos de dados e ter as partições de banco de dados replicadas por meio do DRBD; ele funciona muito bem. No entanto, você quer ter certeza de que cada um tenha seu próprio disco; para isso eu recomendaria usar algo como uma máquina 2U com 6 discos com ataque de hardware com bateria.
Se você tiver ainda mais tráfego, mas ainda quiser manter um orçamento baixo, tente o seguinte:
- 2x servidor de banco de dados na configuração ativa / passiva replicada com DRBD
- 2 servidores front-end que executam os aplicativos, ambos ativos
- Executar um balanceador de carga de software em um VIP no front-end, apenas um deles receberá conexões de entrada, mas ele será reenviado localmente ou para o outro nó. Eu recomendo Haproxy
Cuidado com a carga embora; Se um dos nós falhar quando você estiver no pico de uso, você terá muitos problemas, mas pode ser uma boa maneira de lidar com o ocasional slashdotting.