Eu não sei como CPU é intensivo sua lógica de negócios, quais são suas esperanças / planos para o crescimento. mas eu começaria com a escalabilidade em mente, mesmo que agora seja um pouco exagerado.
você pode executar todas as máquinas em um ou dois servidores robustos como máquinas virtuais e depois adicionar mais hardware - isso obviamente será menos eficiente, mas facilitará o crescimento no futuro.
minha opinião seria:
- par de proxy reverso com mecanismo de failover para que um deles seja ativo é passivo. você pode começar com apache2 ou nginx , depois mova para a solução de hardware. o failover entre servidores pode ser feito com pulsação .
- mecanismo de balanceamento de carga em um proxy que distribui seu tráfego entre os servidores de aplicativos reais e manipula falhas de qualquer
- dois servidores de aplicativos no início
- ou sessões fixas [para que o cliente conecte-se com o appserv #n obtenha todas as consultas do servidor] ou o servidor de sessão separado [como tudo o que é altamente disponibilizado]
- é possível bancos de dados mysql particionados [novamente - muito dependente de suas necessidades e conjunto de dados, se você não conseguir imaginar ter mais do que 5 a 10 GB de dados - talvez não haja necessidade disso]. cada instância protegida com replicação drbd ou replicação mestre-escravo ou mestre-mestre.
Se você optar pela abordagem de virtualização, você pode começar com a máquina alugada e descobrir mais tarde o que fazer ... vms são animais bastante portáteis.
tudo isso pode ser um exagero, mas acho que pelo menos o proxy reverso na frente + a virtualização vale a pena ser implementada, enquanto o particionamento é bom de se pensar.