DNS Round-robin

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa

DNS Round-robin é uma técnica de distribuição de carga, balanceamento de carga, de tolerância a falhas, provisionamento múltiplo e redundante de hosts de Internet, por exemplo, servidores Web ou servidores FTP, através da gestão do sistema de nomes de domínio (DNS) para atender às solicitações de computadores clientes de acordo com um modelo estatístico apropriado.[1][2]

Em sua implementação mais simples, o DNS Round-robin funciona respondendo às solicitações de DNS não apenas com um único endereço IP em potencial, mas com uma lista de possíveis endereços IP correspondentes a vários servidores que hospedam serviços idênticos. A ordem em que os endereços IP da lista são retornados é a base para o termo round robin. Com cada resposta de DNS, a sequência de endereços IP na lista é permutada. Geralmente, os clientes IP básicos tentam conexões com o primeiro endereço retornado de uma consulta DNS, de modo que, em tentativas de conexão diferentes, os clientes receberiam serviço de provedores diferentes, distribuindo assim a carga geral entre os servidores.[3]

Não há um procedimento padrão para decidir qual endereço será usado pelo aplicativo solicitante, alguns resolvedores tentam reordenar a lista para dar prioridade a redes numericamente "mais próximas". Alguns clientes da área de trabalho tentam endereços alternativos após um tempo limite de conexão de 30 a 45 segundos.

O DNS round-robin costuma ser usado para balancear carga de solicitações entre vários servidores Web. Por exemplo, uma empresa tem um nome de domínio e três cópias idênticas do mesmo site que residem em três servidores com três endereços IP diferentes. Quando um usuário acessa a página inicial, ele será enviado para o primeiro endereço IP. O segundo usuário que acessa a página inicial será enviado para o próximo endereço IP e o terceiro usuário será enviado para o terceiro endereço IP. Em cada caso, uma vez que o endereço IP é dado, ele vai para o final da lista. O quarto usuário, portanto, será enviado para o primeiro endereço IP e assim por diante.[3]

Um nome DNS round-robin é, em raras ocasiões, chamado de "rotor" devido à rotação entre registros alternativos.

Desvantagens[editar | editar código-fonte]

Embora fácil de implementar, o DNS round-robin tem vários inconvenientes, como os que surgem do cache de registros na própria hierarquia do DNS, bem como o armazenamento em cache e reutilização de endereços do lado do cliente, cuja combinação pode ser difícil de gerenciar. O DNS round-robin não deve ser confiado apenas para a disponibilidade do serviço. Se um serviço em um dos endereços na lista falhar, o DNS continuará a distribuir a esse endereço e os clientes ainda tentarão alcançar o serviço inoperante.

Além disso, ele pode não ser a melhor opção para o balanceamento de carga sozinho, pois ele simplesmente alterna a ordem dos registros de endereço sempre que um servidor de nomes é consultado. Não há consideração quanto ao tempo de transação, carga do servidor, congestionamento da rede, etc. O balanceamento de carga DNS round-robin funciona melhor para serviços com um grande número de conexões uniformemente distribuídas para servidores de capacidade equivalente.

Existem métodos para superar tais limitações. Por exemplo, os servidores DNS modificados (como lbnamed[4]) podem pesquisar rotineiramente servidores espelhados quanto à disponibilidade e ao fator de carga. Se um servidor não responder conforme necessário, o servidor poderá ser removido temporariamente do pool de DNS, até que ele relate que está novamente operando dentro das especificações.

Referências

  1. «What Is Round Robin DNS?». www.dnsknowledge.com. Consultado em 1 de junho de 2019 
  2. Brisco, T. «DNS Support for Load Balancing». tools.ietf.org (em inglês). Consultado em 1 de junho de 2019 
  3. a b «How To Configure DNS Round-Robin Load-Balancing For High-Availability». DigitalOcean (em inglês). Consultado em 1 de junho de 2019 
  4. lbnamed, a load-balanced DNS server implemented in the Perl programming language