Uma variedade de métodos pode ser usada para conseguir isso. Normalmente, uma combinação de balanceamento de carga DNS e balanceadores de carga é a abordagem aplicada. Permite que você tenha várias camadas de redundância, meu diagrama de fluxo simples:
Utilizador - > Resposta DNS (vários IPs, garante que você receba uma resposta de um respectivo provedor de nuvem) - > O Load Balancer (como o ELB ou o HAproxy, garante que seus servidores de nuvem estejam ativos) - > servidor de nuvem
exemplo simples de um passo a passo: link
Uma solução que também usei anteriormente está usando o CDN para lidar com respostas de DNS e gerenciar dinamicamente o tráfego em vários datacenters ou provedores de nuvem. A Akamai faz isso usando o gerenciamento de tráfego global: link
edit: Esqueci de mencionar que com o balanceamento de carga DNS pode fornecer algum comportamento interessante baseado em como os servidores upstream armazenam respostas DNS, às vezes ISPs ( cough comcast, em & t toss , eles ficaram melhores) e outros servidores DNS clientes não seguem os TTLs que você define (o blog que eu vinculei mencionou isso, mas eu não consigo acertar isso em casa o suficiente). Normalmente, isso não é um grande problema, mas algo a ser considerado se você realmente se deparar com um problema.