O que você precisa depende muito do seu aplicativo e também da qualidade do design, da qualidade do esquema do banco de dados, do código e do seu código front-end (javascript / html etc). Mas por causa dessa resposta, eu imagino que todo o código está bem escrito e seu esquema de banco de dados é impecável.
Esta é a configuração que eu usaria:
- 2 servidores PHP / apache (se você puder / saber como você também pode usar o nginx em vez do apache)
- 1 servidor MySQL
Para executar uma configuração PHP / MySQL, recomendo usar servidores virtuais em vez de alugar o hardware sozinho.
Ambos os Amazon EC2 e Linode servidores farão bem. As vantagens do EC2 é que é muito fácil iniciar novas instâncias se você precisar delas, elas têm um balanceador de carga integrado que você pode usar e você pode fazer com que o Amazon adicione servidores dependendo da carga. Mas a Amazon é um pouco cara, então o Linode pode ser uma opção melhor.