É como dizer "Que tipo de carro vai ganhar o Baja 1000?". Depende.
Além disso, 100% de tempo de atividade não é possível. Você pode ficar perto, no entanto
Dito isto, há algumas coisas que você vai querer fazer.
1) Qualquer solução que você coloque em prática, certifique-se de medir tudo o que puder. Com as métricas, você pode determinar se está acima ou abaixo do provisionado e age. Você também pode ver tendências e fazer escolhas informadas antes que as coisas comecem a se quebrar.
2) A redundância é sua amiga. Redundância geográfica (dividindo o aplicativo em diferentes datacenters em diferentes regiões geográficas), horizontal (dividindo os servidores de aplicativos dos DBs e dos servidores de conteúdo) e vertical (alguns pequenos com um balanceador de carga é melhor que 1 grande).
Então, essa é a vista dos pés de 10k.
Especificamente, no seu caso, eu definiria um grupo de servidores que poderia lidar com cerca de 75% do seu tráfego. Possivelmente 2 ou 3 servidores Nginx (minha escolha pessoal, use com o que você está confortável) frente a um par de servidores de banco de dados (1 mestre, 1 réplica somente leitura). Use o servidor da web para fazer proxy de volta para algum tipo de FCGI ou outro servidor de aplicativos. Certifique-se de que os servidores front-end estão servindo suas páginas em cache (você está fazendo o cache, certo?).
Agora, você precisará soltar algum tipo de LB na frente disso. Um single vai ficar bem, porque ...
Você configurará uma cópia disso em outro datacenter. Todas as réplicas somente de leitura de banco de dados, a menos que você queira entrar e obter a configuração de replicação mestre / mestre.
Use o DNS round-robin para dividir o tráfego entre os CNAMES de DNS dos dois balanceadores de carga.
Em caso de falha em um dos controladores de domínio, basta mover o nome de usuário afetado para o local de trabalho.
Isso vai ser caro e difícil de fazer.
Honestamente, a maioria das pessoas só faz isso em um único CD, já que simplesmente não é rentável percorrer todo o caminho.
Pessoalmente, começaria pequeno e verificaria como isso acontece. Deve ser fácil adicionar servidores e, depois de um tempo, você poderá ver onde seu aplicativo precisa da ajuda.