O que é balanceamento de carga de DNS e como ele funciona?

O balanceamento de carga de DNS distribui o tráfego de entrada entre vários servidores para desempenho robusto e alta disponibilidade.

O balanceamento de carga de DNS usa o sistema de nomes de domínio (DNS) para distribuir o tráfego do site entre vários servidores para aumentar a taxa de transferência da rede, otimizar o desempenho, minimizar o tempo de inatividade e aumentar a eficiência geral da computação. 

O que é balanceamento de carga de DNS?

O balanceamento de carga de DNS distribui o tráfego de rede de entrada entre vários servidores ou recursos para melhorar a disponibilidade, a escalabilidade e o desempenho de um serviço ou aplicativo, distribuindo a carga entre várias instâncias de servidor. Ele apresenta uma maneira simples e eficiente de obter distribuição de carga entre vários servidores. 

O DNS é frequentemente descrito como a lista telefônica da Internet porque ele traduz nomes de domínio de sites (como f5.com ou amazon.com) em endereços IP numéricos que os servidores usam para identificar sites e dispositivos conectados à Internet. Esse processo é chamado de resolução de DNS. Durante a resolução de DNS, o navegador do usuário contata um servidor DNS para solicitar o endereço IP numérico correto do site de destino. 

O resolvedor de DNS procura o endereço IP associado ao nome de domínio solicitado consultando os servidores DNS do domínio para o registro A do domínio, ou registro de endereço, que mapeia nomes de domínio para um ou mais endereços IP. O resolvedor de DNS também pode encontrar um registro CNAME (nome canônico), que mapeia um nome de domínio para outro nome de domínio como um alias, ou entre um domínio pai e subdomínios.

A maioria dos domínios hoje emprega vários servidores DNS para proteger contra falhas do servidor ou para lidar com altos volumes de tráfego. Cada uma dessas diferentes instâncias de servidor, todas com um endereço IP diferente, pode lidar com solicitações de entrada para o domínio, de modo que a consulta DNS retorna uma lista de vários endereços IP em resposta à consulta DNS. Um balanceador de carga DNS usa vários métodos ou regras para escolher qual endereço IP compartilhar em resposta a uma consulta DNS, garantindo que o tráfego de conexão seja distribuído entre vários servidores disponíveis.

Um registro CNAME também pode ser útil no balanceamento de carga de DNS, pois permite que um único nome de domínio seja resolvido para o mesmo endereço IP de outro domínio: Um CNAME pode ser configurado para apontar para o nome de domínio de um balanceador de carga ou para o nome de domínio principal que usa o balanceamento de carga. 

Como usar DNS como um balanceador de carga

O balanceamento de carga de DNS distribui o tráfego de rede de entrada entre várias instâncias de servidor, distribuindo a carga e melhorando a disponibilidade e o desempenho do aplicativo ou serviço. Se um servidor ficar indisponível ou sobrecarregado, o resolvedor de DNS continuará a fornecer endereços IP para os servidores restantes, o que garante redundância e recursos de failover.

Qual é a diferença entre balanceamento de carga de DNS e balanceamento de carga tradicional?

O balanceamento de carga de DNS e o balanceamento de carga tradicional atendem a propósitos semelhantes, mas operam em camadas diferentes da pilha de rede e têm algumas diferenças importantes.

O balanceamento de carga de DNS opera no nível de DNS da aplicação de camada 7 e usa o User Datagram Protocol (UDP) na camada de Transporte do modelo TCP/IP para transportar dados, embora o UDP seja preferível ao TCP para DNS devido à sua velocidade e pacotes leves.

A implementação do balanceamento de carga de DNS é relativamente simples em comparação com outras soluções de balanceamento de carga e é especialmente benéfica para pequenas e médias empresas com restrições de orçamento.  Ele não exige configurações complexas ou hardware ou software de balanceador de carga dedicado, o que o torna acessível para organizações com recursos de TI limitados. O balanceamento de carga de DNS também pode ser configurado para direcionar usuários para servidores em diferentes regiões geográficas. Isso é especialmente útil para organizações com presença global, pois pode direcionar o tráfego para a instância de aplicativo mais próxima e/ou rotear o tráfego para conformidade com o GDPR.

Por outro lado, o balanceamento de carga tradicional opera na camada de transporte 4 ou na camada de aplicação 7. Os balanceadores de carga da Camada 4 atuam sobre dados encontrados em protocolos de camada de rede e transporte (IP, TCP, UDP). Os balanceadores de carga da Camada 7 distribuem solicitações com base em dados encontrados em protocolos da camada de aplicação, como HTTP. Esses balanceadores de carga geralmente são dispositivos dedicados que usam hardware ou software para distribuir solicitações de clientes entre um grupo de servidores ou instâncias de servidores.

Esses balanceadores de carga fornecem recursos mais avançados e controle mais preciso sobre a distribuição de tráfego. A distribuição de solicitações de clientes geralmente é controlada por um dispositivo ou serviço balanceador de carga dedicado, que pode tomar decisões dinâmicas com base no desempenho e outros fatores. Esses dispositivos ou serviços de balanceamento de carga também podem executar algoritmos mais avançados e incluir verificações de integridade para monitorar o status do servidor e remover ou redirecionar automaticamente o tráfego de servidores não íntegros para servidores íntegros. Isso proporciona maior disponibilidade e tolerância a falhas.

Qual é a diferença entre DNS Round Robin e balanceamento de carga avançado?

DNS Round Robin é uma forma básica de balanceamento de carga que depende do DNS para distribuir solicitações de clientes percorrendo uma lista de endereços IP associados a diferentes servidores. Cada solicitação do cliente é enviada automaticamente para o próximo endereço IP na lista. O DNS Round Robin é relativamente simples de configurar e gerenciar porque requer apenas a configuração de vários registros A associados a diferentes endereços IP. As alterações são feitas atualizando esses registros A. 

Infelizmente, essa implementação simples de balanceamento de carga de DNS tem problemas inerentes que limitam sua confiabilidade e eficiência. Mais significativamente, o DNS não verifica se há falhas ou erros no servidor ou na rede e, portanto, sempre retorna o mesmo conjunto de endereços IP para um domínio, mesmo que os servidores estejam inativos ou inacessíveis. Se um servidor ficar indisponível, o balanceamento de carga DNS Round Robin ainda poderá rotear o tráfego para ele até que o registro DNS seja atualizado manualmente.

Outro problema surge porque os endereços resolvidos geralmente são armazenados em cache, tanto pelos servidores DNS intermediários (chamados de resolvedores ) quanto pelos clientes, para melhorar o desempenho e reduzir a quantidade de tráfego DNS na rede. Cada endereço resolvido recebe um tempo de vida útil (chamado de time-to-live , ou TTL ), mas tempos de vida longos significam que os clientes podem não ficar sabendo das alterações no grupo de servidores em tempo hábil, e tempos de vida curtos melhoram a precisão, mas levam ao aumento do processamento e do tráfego de DNS que o armazenamento em cache deve mitigar em primeiro lugar.

Técnicas avançadas de balanceamento de carga, por outro lado, são mais ricas em recursos e geralmente incluem algoritmos sofisticados, verificações de integridade e recursos de gerenciamento de tráfego para distribuir o tráfego de forma eficiente e garantir alta disponibilidade, escalabilidade e desempenho otimizado. Esses mecanismos de distribuição incluem round-robin ponderado, menos conexões ou roteamento baseado em tempo de resposta para distribuição e gerenciamento de tráfego mais eficientes e dinâmicos, tornando-os adequados para ambientes complexos e de alta demanda. 

Por que o balanceamento de DNS é necessário?

O balanceamento de carga desempenha um papel crucial no gerenciamento e otimização do fluxo de tráfego em ambientes de rede modernos, pois ajuda a proporcionar uma experiência de usuário ágil e sem interrupções, ao mesmo tempo em que mantém a disponibilidade e a capacidade de resposta do sistema, mesmo sob cargas pesadas ou diante de falhas no servidor.

Como o balanceamento de carga de DNS atende às necessidades

O balanceamento de carga de DNS permite a distribuição do tráfego de rede entre vários servidores ou data centers, o que é especialmente importante para a entrega de conteúdo e o manuseio de altos volumes de tráfego, como em sites de comércio eletrônico, plataformas de mídia social e serviços de streaming online. Ele ajuda a garantir que nenhum servidor fique sobrecarregado ou com gargalos de tráfego enquanto outros permanecem subutilizados. Isso promove a utilização ideal dos recursos e ajuda a evitar sobrecarga do servidor.

O balanceamento de carga de DNS também ajuda a fornecer alta disponibilidade. Ao distribuir o tráfego de entrada entre vários servidores ou instâncias de servidor, ele reduz o risco de um único ponto de falha. Se um servidor ficar indisponível devido a falha de hardware, manutenção ou outros problemas, o balanceador de carga pode redirecionar o tráfego para servidores saudáveis, minimizando o tempo de inatividade do serviço. 

À medida que a demanda por um serviço ou aplicativo cresce, o balanceamento de carga permite o fácil dimensionamento de recursos pela adição horizontal de mais servidores ao pool. Essa escalabilidade é essencial para lidar com o aumento do tráfego e garantir que o sistema possa acomodar uma base crescente de usuários sem degradação do desempenho. Os balanceadores de carga podem considerar fatores como carga do servidor, tolerância a falhas e proximidade do cliente para garantir que os usuários tenham baixa latência e tempos de resposta rápidos.

Estratégias de balanceamento de carga de DNS

A escolha da estratégia de balanceamento de carga depende dos requisitos e restrições específicos da aplicação ou organização e pode depender de fatores como a arquitetura do banco de dados, a natureza da aplicação, a capacidade do servidor e as características da carga de trabalho.

Round Robin ponderado

Round-robin ponderado é uma estratégia de balanceamento de carga que atribui diferentes pesos ou prioridades a vários nós de servidor em um pool, influenciando a distribuição de solicitações de clientes recebidas. Essa estratégia é particularmente útil ao lidar com servidores que têm diferentes especificações de hardware ou capacidades de desempenho. Ao atribuir pesos, servidores mais poderosos lidam com uma parcela maior do tráfego.

Balanceamento de carga geográfica

Essa abordagem leva em consideração a proximidade geográfica dos clientes a vários locais de servidores e usa pesos para influenciar a distribuição das solicitações dos clientes. O balanceador de carga está ciente das localizações geográficas das solicitações do cliente e dos locais de servidores ou data centers disponíveis. Essas informações são então usadas para identificar o local do servidor mais próximo ou mais adequado para atender à solicitação. O balanceamento de carga geográfica é particularmente útil para organizações com uma base de usuários global e vários data centers ou locais de servidores. Ele pode garantir uma experiência de usuário consistente em diferentes regiões.

Balanceamento de carga dinâmico

O balanceamento de carga dinâmico envolve fazer ajustes em tempo real na distribuição do tráfego de rede com base no estado atual dos servidores ou da rede. Os balanceadores de carga dinâmicos monitoram a integridade e o desempenho dos servidores no pool, verificando a disponibilidade do servidor, os tempos de resposta, a utilização da CPU, o uso da memória e outras métricas. Com base nas informações coletadas, o balanceador de carga roteia dinamicamente as solicitações recebidas para o servidor mais bem equipado para lidar com a solicitação. O balanceamento de carga dinâmico é usado em cenários onde os padrões de tráfego são imprevisíveis, as cargas de tráfego flutuam com frequência ou há necessidade de fornecer um alto nível de otimização de desempenho. Ele é comumente usado em data centers, ambientes de computação em nuvem, redes de distribuição de conteúdo (CDNs) e aplicativos com cargas de trabalho que mudam rapidamente.

Implementação de balanceamento de carga de DNS

Como os balanceadores de carga DNS são ferramentas essenciais para gerenciar o tráfego em seu site ou aplicativo, é importante configurá-los e gerenciá-los corretamente. As práticas recomendadas a seguir podem ajudar a garantir que seu balanceador de carga esteja configurado corretamente e seja capaz de acomodar as demandas de tráfego de seus usuários e aplicativos.

Entenda os requisitos da sua aplicação

Comece considerando as necessidades específicas de seus aplicativos ou serviços, incluindo fatores como padrões de tráfego esperados, distribuição geográfica de usuários, sensibilidade à latência e necessidade de alta disponibilidade. Os balanceadores de carga são mais eficazes quando configurados de acordo com padrões de tráfego específicos, portanto, reserve um tempo para estudar o tráfego que chega ao seu site ou aplicativo e otimize sua configuração adequadamente.

Prepare sua infraestrutura para o futuro

A escalabilidade é uma consideração importante para preparar sua infraestrutura para o futuro. À medida que sua organização e base de usuários crescem, suas necessidades de balanceamento de carga de DNS provavelmente evoluirão. Certifique-se de que sua solução de balanceador de carga possa ser ampliada ou reduzida em resposta às demandas de tráfego; essa elasticidade é valiosa em ambientes de nuvem, onde os recursos podem ser provisionados dinamicamente com base na demanda.

Monitore seus servidores

Implementar verificações de integridade e monitorar continuamente o status dos seus servidores é essencial para obter o desempenho máximo do seu balanceador de carga. Monitore todos os recursos do servidor (utilização de memória, uso de CPU, etc.) regularmente para que você possa identificar rapidamente quaisquer problemas potenciais e resolvê-los.  Remova ou redirecione o tráfego de servidores não íntegros para manter alta disponibilidade.

Revise e otimize regularmente

Revise sua configuração de balanceamento de carga de DNS periodicamente e faça otimizações com base em mudanças nos padrões de tráfego, no desempenho do servidor e nos requisitos da aplicação.

Escolha o DNS Load Balancer correto

Selecione uma solução de balanceamento de carga de DNS que atenda às suas necessidades. Considere recursos como balanceamento de carga geográfica, roteamento ponderado, verificações de integridade, proteção de segurança para aplicativos da Web e APIs e facilidade de gerenciamento. Embora soluções de balanceamento de carga personalizadas e do tipo "faça você mesmo" possam oferecer maior controle e personalização, principalmente para organizações com requisitos muito específicos, elas também trazem responsabilidades de manutenção contínua, segurança e escalabilidade que não devem ser subestimadas. Serviços de balanceamento de carga de DNS de terceiros geralmente operam uma rede distribuída de servidores em vários locais geográficos. Esse alcance global permite que eles direcionem os usuários com eficiência para o servidor mais próximo, reduzindo a latência e melhorando a experiência do usuário. Serviços de terceiros também costumam oferecer uma variedade de algoritmos de distribuição de carga que permitem ajustar como o tráfego é distribuído com base em suas necessidades específicas e capacidades do servidor. As soluções de balanceamento de carga baseadas em serviços também são projetadas para lidar com uma ampla variedade de cargas de tráfego e podem ser ampliadas ou reduzidas conforme necessário.

Como a F5 pode ajudar

O balanceamento de carga de DNS é uma solução eficaz de distribuição de tráfego para pequenas e médias empresas ou organizações com recursos de TI limitados, pois não exige configurações complexas ou hardware ou software de balanceador de carga dedicado.

A F5 oferece uma variedade de produtos e soluções de balanceamento de carga. Isso inclui serviços de balanceador de carga DNS baseados em nuvem que simplificam as complexidades de implementação e gerenciamento e são totalmente configuráveis por meio de APIs, com proteções DDoS e WAF integradas e recursos de recuperação de desastres. O serviço oferece roteamento global baseado em localização para direcionar com eficiência o tráfego de aplicativos entre ambientes para alto desempenho e a melhor experiência do usuário. O sistema monitora as verificações de integridade do sistema para detectar instâncias de recursos com falha ou degradadas e redirecionar clientes para manter a disponibilidade do aplicativo e do serviço. O F5 Distributed Cloud DNS Load Balancer fornece dimensionamento automático global para acompanhar a demanda conforme os aplicativos aumentam, os padrões de tráfego mudam e o volume de solicitações dispara, mas com preços baseados em serviços públicos: Você paga somente pelos serviços que precisa e utiliza. 

Além disso, o F5 NGINX Plus e o F5 NGINX são as melhores soluções de balanceamento de carga usadas por sites de alto tráfego, como Dropbox, Netflix e Zynga. Mais de 350 milhões de sites no mundo todo contam com o NGINX Plus e o NGINX Open Source para entregar seu conteúdo de forma rápida, confiável e segura.

O NGINX Plus fornece uma variedade de algoritmos sofisticados de balanceamento de carga que são muito mais eficazes e precisos do que o balanceamento de carga DNS básico e, com todos eles, ele verifica o status do servidor para evitar o encaminhamento de solicitações para servidores inacessíveis. Ele também oferece suporte a uma forma de balanceamento de carga de DNS que resolve os problemas descritos anteriormente; consulte Configurando o balanceamento de carga HTTP usando DNS no Guia de administração do NGINX Plus. Por ser baseado em software, o NGINX Plus é executado em hardware comum e é significativamente mais barato do que a maioria das soluções baseadas em hardware concorrentes.