Balanceamento de carga de latência + solução de failover

1

Estou procurando uma solução de balanceamento de carga de latência (ou geo) combinada com failover dinâmico.

A infraestrutura é baseada em 3 servidores dedicados da OVH. Os servidores estão localizados em 3 localizações geográficas diferentes (Canadá, França e Austrália).

Há poucas coisas que estou tentando alcançar:

  1. O cliente que acessa o serviço é redirecionado para o servidor mais próximo, portanto, a resposta é rápida.
  2. Se um servidor estiver fora de serviço, o pedido irá para o outro servidor e, eventualmente, o usuário receberá a resposta.
  3. Em condições de failover, é mais importante que o usuário receba a resposta em vez da resposta rápida.
  4. Eu preciso ter a possibilidade de reiniciar o servidor para atualizar ou algo de vez em quando. Então a magia tem que estar fora dos servidores principais.
  5. O tráfego passa por HTTPS, mas o HTTP redireciona para HTTPS.

Pequena ilustração do problema

Estou interessado apenas no tráfego HTTP. Cada pedido tem que ir para o servidor, nada pode ser armazenado em cache, pois a resposta é muito dinâmica.

Já consultei o AWS Route 53, que é ótimo, mas é apenas um DNS, por isso não resolverá a parte de failover.

OVH tem balanceamento de carga IP, mas não consigo fazer isso funcionar e não encontrei a opção para resolver o problema 1.

Estou interessado em qualquer sugestão ou solução, incluindo o uso de serviços de terceiros.

Eu também estou considerando uma opção para comprar 3 pequenos servidores VPS em cada local (perto de cada um dos servidores principais), que funcionará como um gateway. Nessa solução, posso usar o AWS Route 53 para fornecer balanceamento de carga de latência para os servidores VPS e os servidores lidarão com failover. Pela definição eles estarão ativos 100% do tempo, enquanto os servidores principais terão uma mudança para reiniciar sem tempo de inatividade do serviço.

    
por Arek_24 18.04.2017 / 13:36

1 resposta

2

To update my answer - all of these are optional. Caching can be turned off to allow dynamic responses. and traffic can be served over HTTP only if desired.

Uma solução que eu adoro é o Cloudflare. Ele praticamente responde a todos os seus problemas, supondo que você esteja usando HTTP / HTTPS e nenhum outro protocolo não mencionado em sua pergunta original.

Abordar a veiculação baseada em geolocalização do conteúdo -

O CF basicamente pode direcionar o tráfego que você envia por meio dele com o Gerenciador de Tráfego. Isto irá encontrar o caminho mais rápido para um dos seus servidores de origem e manter isso. Se, no entanto, algo falhou e você precisou, portanto, armazenar o conteúdo de um local diferente - o CF também pode fazer o balanceamento de carga para vários servidores em um único local ou servir a partir do próximo servidor mais próximo.

Abordando o aspecto de failover -

O CF, como mencionado anteriormente, faz um trabalho incrível ao fazer o ping de seus servidores de origem para uma atualização de status e garantir que eles sejam adequados à finalidade. Mas, para expandir um pouco, o CF também armazena em cache certos tipos de ativos que passam por seus proxies. Este é o recurso 'sempre on-line' onde, mesmo que o servidor de origem esteja offline, ele fará uma tentativa de servidor desse conteúdo independentemente.

Enfrentando a atualização de servidores -

Pessoalmente, eu desenho todos os meus ambientes em torno de um design contêiner do Docker que me permite fazer 'atualizações contínuas'. Dessa forma, posso atualizar, destruir, fazer o que for necessário para a imagem dos meus aplicativos e saber que ela será propagada de maneira segura. Isso obviamente também pode ser revertido, se necessário. Mas, novamente, se isso é algo que não é possível, o CF pode permitir que você crie uma VM secundária nesse local geográfico para atualizar a imagem, e alterne o DNS com eficiência.

Enfrentando as reescritas do HTTP - > HTTPS -

O CF também permite que regras sejam aplicadas ao tráfego. Uma delas significa que você pode reescrever com uma resposta HTTP 301 todo o tráfego HTTP para HTTPS (pode configurar como quiser, no entanto).

(Isso pressupõe que todos os seus registros DNS relacionados a isso passem pelo DNS do CF e sejam 'laranja em nuvem').

Também alguns recursos úteis para apontar você na direção certa - Cloudflare Traffic Manager

    
por 18.04.2017 / 21:34