Notas:
Quanto você está disposto a gastar, eu ainda não vi alguém confiando em VPSs e realmente quer gastar o dinheiro para um caso de falha de datacenter.
Em relação aos seus desenhos:
A falha na primeira é verdadeira se (e somente se) o balanceador de carga for uma única máquina, se for um único sistema (como em um sistema criado a partir de vários hosts) não é mais verdade.
SPA (resposta mais curta possível):
Resposta realmente curta: Você precisa obter um IP de serviço disponível em todos os seus locais. E configure o roteamento BGP.
Um pouco mais: Normalmente, isso é feito usando o BGP e anunciando o IP em dois locais diferentes. Você pode configurá-lo de uma forma que os IPs estejam anunciando o tempo todo, mas um tem uma preferência menor que a outra. Desta forma, em circunstâncias normais, o tráfego irá para apenas um site, se isso falhar, a rota do BGP é interrompida e o tráfego muda para o IP ainda disponível.
Temos algumas configurações semelhantes a isso, o layout típico é:
(por localização):
-
2 loadbalancers
Este é o lugar onde o BGP também é executado e anuncia seus IPs. Geralmente Quagga e alguma configuração de IPVS (usamos keepalived)
-
n
servidores para lidar com a carga (FE)
Os casos de falha:
-
Qualquer 1 Loadbalancer (em um único site) falha
- Gerenciado pelo keepalived, o outro LB apenas continuará seu trabalho
-
Qualquer
n-k
dos FEs falha (k
sendo o número de FEs que podem falhar sem problemas)- Gerenciados pelos LBs, um cheque os removerá e eles não receberão mais tráfego
-
n-(k+1)
FEs falham (em um único site)- tratado pelo BGP. Nós vamos matar a sessão BGP nos LBs no site onde muitos FEs falharam. O outro local assume
-
qualquer interrupção importante em um único site
- Tratada pelo BGP, a sessão do BGP será descartada e o outro local saltará para
Desculpe, não estou de bom humor agora para aprofundar os detalhes de fazer isso manualmente. Meu palpite é que você será melhor (e mais barato) ao alugar um serviço de balanceamento de carga que fará a mágica para você. Eu li que a Amazon fornece isso, mas não sei se o uso deles é possível sem usar o restante da infraestrutura deles.