Balanceamento de carga DNS com verificações de integridade

Balanceamento de carga DNS com verificações de integridade

Eu tenho um problema aqui.

Temos uma configuração de instâncias de computação em duas regiões de nuvem diferentes de um provedor de nuvem que eu não mencionaria, exceto para afirmar que é difícil trabalhar com ele.

Essas instâncias estão usando (obviamente) private.

Não podemos usar uma solução de balanceamento de carga baseada em VIP porque esse provedor de nuvem não permite IPs privados entre regiões, portanto, um NLB está fora de cogitação.

O que precisamos é de um servidor DNS (bem, dois, na verdade, pelo menos) com recursos de verificação de integridade de registro A. Deixe-me dar um exemplo:

  1. Serviço:
  • Servidor A - Região 1 - IP 10.1.1.100
  • Servidor B - Região 2 - IP 172.26.1.100
  1. Balanceadores DNS (compartilhando os mesmos registros e banco de dados de configuração):
  • DNS A - Região 1 - IP 10.1.1.50
  • DNS B - Região 2 - IP 172.26.1.50
  • Registro DNS 1: qualquer que seja.local - 10.1.1.50
  • Registro DNS 2: qualquer que seja.local - 172.26.1.50
  1. Clientes:
  • Cliente A – Qualquer região – Qualquer IP
  1. Cenário A:
  • Cliente A Possui DNS A e DNS B configurados como servidores DNS.
  • O cliente A pede o que quer que seja.local para o servidor DNS A
  • O servidor A está offline
  • O servidor DNS A possui verificações de integridade de back-end, detecta-o e responde com o IP do servidor B (172.26.1.50)
  • O TTL é definido como 0 (zero) ou algo igualmente baixo para evitar o armazenamento em cache.
  1. Cenário B:
  • Cliente A Possui DNS A e DNS B configurados como servidores DNS.
  • O cliente A pede o que quer que seja.local, o servidor DNS A está inativo, então o servidor DNS B responde
  • O servidor B está offline
  • O servidor DNS B possui verificações de integridade de back-end, detecta-o e responde com o IP do servidor A (10.1.1.100)
  • O TTL é definido como 0 (zero) ou algo igualmente baixo para evitar o armazenamento em cache.

Em essência: Um servidor DNS que verifica a integridade dos IPs dos registros DNS.

Cumprimentos.

Responder1

Cliente A Possui DNS A e DNS B configurados como servidores DNS.

erm, você está caminhando para um mundo de dor com uma máquina usando vários servidores DNS configurados com diferentes dados divididos. Você realmente precisaria construir sua própria pilha resolvida no host de monitoramento para obter um comportamento previsível.

A forma de monitorar este serviço é sem dividir o DNS:

service.example.com.  CNAME region1_service.example.com.
service.example.com.  CNAME region2_service.example.com.
region1_service.example.com. A 10.1.1.50
region2_service.example.com. A 172.26.1.50

E monitore cada um dos seguintes:

  • serviço.exemplo.com
  • região1_service.example.com
  • região2_service.example.com

Como alternativa, seu agente de monitoramentopoderiasuporte à configuração de endereços explícitos - para que você possa monitorar cada instância separadamente. Mas então você tem a complicação de sinalizar uma interrupção em AMBOS os nós, o que é muito mais sério do que uma interrupção em um dos nós.

Você também deve verificar COMO o cliente de monitoramento implementa o rrDNS. O tempo de detecção de failover seguindo as regras é de aproximadamente 5 minutos, mas os navegadores aplicam um limite de cerca de 10 segundos para a conexão inicial e <1 segundo para solicitações subsequentes.

Responder2

No final, EXISTEM soluções para isso. Isso é essencialmente o que um GSLB oferece, existem muitos comerciais.

Se quiser fazer isso com certa simplicidade e código aberto, você pode usar PowerDNS com registros LUA em um cluster PowerDNS.

informação relacionada