Um balanceador de carga permite a distribuição dinâmica do tráfego de rede entre recursos (no local ou na nuvem) para dar suporte a um aplicativo.

Um balanceador de carga é uma solução que atua como um proxy de tráfego e distribui o tráfego de rede ou de aplicativos entre pontos de extremidade em vários servidores. Balanceadores de carga são usados para distribuir capacidade durante horários de pico de tráfego e para aumentar a confiabilidade dos aplicativos. Eles melhoram o desempenho geral dos aplicativos diminuindo a carga sobre serviços ou nuvens individuais e distribuem a demanda entre diferentes superfícies de computação para ajudar a manter as sessões de aplicativos e redes. 

Os aplicativos modernos precisam processar milhões de sessões simultaneamente e retornar o texto, vídeos, imagens e outros dados corretos para cada usuário de maneira rápida e confiável. Para lidar com volumes tão altos de tráfego, a maioria dos aplicativos tem muitos servidores de recursos com dados duplicados entre eles.

O balanceamento de carga distribui o tráfego de rede dinamicamente por uma rede de recursos que dão suporte a um aplicativo . Um balanceador de carga é o dispositivo ou serviço que fica entre o usuário e o grupo de servidores e atua como um facilitador invisível, garantindo que todos os servidores de recursos sejam usados igualmente. Um balanceador de carga ajuda a aumentar a confiabilidade e a disponibilidade, mesmo em momentos de alto uso e demanda, e garante mais tempo de atividade e uma melhor experiência do usuário.

Em alguns casos, é essencial que todas as solicitações de um cliente sejam enviadas ao mesmo servidor durante toda a sessão, por exemplo, quando um cliente coloca itens em um carrinho de compras e depois conclui a compra. Manter a conexão entre cliente e servidor é conhecido como persistência de sessão . Sem persistência de sessão, as informações precisam ser sincronizadas entre servidores e potencialmente buscadas diversas vezes, criando ineficiências de desempenho.

Benefícios do balanceamento de carga

Usuários e clientes dependem da capacidade quase em tempo real de encontrar informações e realizar transações. Tempo de espera ou respostas não confiáveis e inconsistentes — mesmo durante picos de demanda e horários de uso — podem afastar um cliente para sempre. E picos altos na necessidade de computação podem causar estragos em um servidor interno ou sistema de servidor se a demanda de entrada — ou “carga” — for muito alta para ser facilmente acomodada. 

As vantagens de usar um balanceador de carga incluem:

  • Disponibilidade do aplicativo: Usuários internos e externos precisam poder confiar na disponibilidade do aplicativo. Se um aplicativo ou função estiver inativo, lento ou congelado, um tempo precioso será perdido e uma possível fonte de atrito será introduzida, o que pode levar o cliente a procurar um concorrente.
  • Escalabilidade do aplicativo: Imagine que você administra uma empresa de venda de ingressos e os ingressos para uma apresentação popular são anunciados como disponíveis em uma determinada data e hora. Pode haver milhares ou até mais pessoas tentando acessar seu site para comprar ingressos. Sem um balanceador de carga, seu site ficaria limitado ao que seu servidor único/primeiro pudesse acomodar, o que provavelmente não seria muito com tanta demanda. Em vez disso, você pode se planejar para esse grande pico de tráfego tendo um balanceador de carga para direcionar solicitações e tráfego para outras superfícies de computação disponíveis. E isso significa que mais clientes podem obter os ingressos desejados.
  • Segurança da aplicação: O balanceamento de carga também permite que as organizações dimensionem suas soluções de segurança. Uma das principais maneiras é distribuir o tráfego entre vários sistemas de back-end, o que ajuda a minimizar a superfície de ataque e dificulta o esgotamento de recursos e a saturação de links. Os balanceadores de carga também podem redirecionar o tráfego para outros sistemas se um sistema estiver vulnerável ou comprometido. Além disso, os balanceadores de carga podem oferecer uma camada extra de proteção contra ataques DDoS, redirecionando o tráfego entre servidores caso um servidor específico se torne vulnerável.
  • Desempenho do aplicativo: Ao fazer tudo isso, um balanceador de carga melhora o desempenho do aplicativo. Ao aumentar a segurança, otimizar o tempo de atividade e permitir a escalabilidade durante picos de demanda, os balanceadores de carga mantêm seus aplicativos funcionando conforme o planejado e da maneira que você e seus clientes desejam.

Algoritmos de balanceamento de carga

Existem dois tipos de algoritmos de balanceamento de carga em termos de como eles operam: estático e dinâmico. O balanceamento de carga estático mede a carga de entrada em um servidor usando algoritmos que têm informações de capacidade de desempenho sobre os servidores existentes na rede distribuída. O balanceamento de carga dinâmico pode identificar dinamicamente a quantidade de carga que precisa ser eliminada durante o tempo de execução e qual sistema deve suportar a carga.  Ele é projetado para sistemas com alta flutuação na carga de entrada. 

A seguir estão alguns dos tipos comuns de algoritmos de balanceamento de carga.

  • Rodada de todos: Este algoritmo envia tráfego para uma lista de servidores em rotação usando o Sistema de Nomes de Domínio (DNS) . (Observação: O balanceamento de carga de DNS também pode ser uma solução dinâmica.)
  • Limite: Este algoritmo distribui tarefas com base em um valor limite definido pelo administrador.
  • Aleatório com duas escolhas: O algoritmo “power of two” seleciona dois servidores aleatoriamente e envia a solicitação para aquele que for selecionado, aplicando então o algoritmo de Menos Conexões ou o algoritmo de Menos Tempo, se assim configurado.
  • Menos conexões: Uma nova solicitação é enviada ao servidor com o menor número de conexões atuais com clientes. A capacidade de computação relativa de cada servidor é considerada para determinar qual deles tem menos conexões ou qual está usando a menor quantidade de largura de banda ou recursos.
  • Menor tempo: Neste algoritmo, uma solicitação é enviada ao servidor selecionado por uma fórmula que combina o tempo de resposta mais rápido e o menor número de conexões ativas. 
  • Hash de URL: Este algoritmo gera um valor de hash com base na URL presente nas solicitações do cliente. As solicitações são encaminhadas aos servidores com base no valor de hash. O balanceador de carga armazena em cache o valor com hash da URL, de modo que solicitações subsequentes que usam a mesma URL resultam em um acerto de cache e são encaminhadas para o mesmo servidor.
  • Hash do IP de origem: Este algoritmo usa os endereços IP de origem e destino do cliente para gerar uma chave de hash exclusiva para vincular o cliente a um servidor específico. Como a chave pode ser regenerada se a sessão for desconectada, isso permite que as solicitações de reconexão sejam redirecionadas para o mesmo servidor usado anteriormente.
  • Hash consistente: Este algoritmo mapeia clientes e servidores em uma estrutura de anel, com cada servidor atribuído a vários pontos no anel com base em sua capacidade. Quando uma solicitação de cliente chega, ela é convertida em hash para um ponto no anel e então roteada dinamicamente no sentido horário para o próximo servidor disponível.

Como funciona o balanceamento de carga?

O balanceamento de carga funciona respondendo estaticamente ou dinamicamente a uma solicitação do usuário e distribuindo essa solicitação para um dos servidores de back-end capazes de atender à solicitação. Se um dos servidores cair, o balanceador de carga redireciona o tráfego para os servidores online restantes.

Exemplos de balanceamento de carga

Um exemplo de balanceamento de carga estático: Uma empresa hospeda um site com conteúdo em grande parte estático. Esse cenário seria ideal para um balanceador de carga estático porque as necessidades de tráfego são previsíveis e consistentes. A empresa pode usar dois (ou mais) servidores web idênticos pelos quais o balanceador de carga estático pode distribuir o tráfego.

Um exemplo de balanceamento de carga dinâmico: Uma empresa vivencia picos, quedas e picos de tráfego. Algumas são previsíveis e outras não. Essas organizações se beneficiariam do balanceamento de carga dinâmico . Essas empresas podem incluir um varejista de comércio eletrônico anunciando horários e datas da Black Friday; uma empresa de saúde que acaba de anunciar que pode agendar consultas on-line para uma vacina sazonal; uma agência governamental de desemprego que exige que os beneficiários do seguro-desemprego registrem um pedido semanal em um determinado dia da semana; uma organização de assistência que pode precisar responder rapidamente on-line a um desastre natural. Alguns desses picos e surtos de tráfego e demanda podem ser planejados, mas outros não. Nesses cenários, um algoritmo de balanceamento de carga dinâmico ajudará a garantir o acesso a aplicativos e recursos quando clientes e usuários mais precisarem deles.

Diferentes tipos de balanceadores de carga

Diferentes tipos de balanceadores de carga com diferentes recursos residem na arquitetura chamada modelo Open System Interconnection (OSI) . Neste modelo há sete camadas. Os firewalls de rede estão nos níveis de um a três (L1-fiação física, L2-link de dados e L3-rede). Enquanto isso, o balanceamento de carga acontece nas camadas quatro a sete (L4-transporte, L5-sessão, L6-apresentação e L7-aplicação). Os balanceadores de carga são geralmente usados na Camada 4 e na Camada 7

  • Os balanceadores de carga da Camada 4 direcionam o tráfego com base em dados de protocolos de camada de rede e transporte (IP, TCP, FTP, UDP). O balanceamento de carga na camada IP se refere a uma implantação em que o endereço IP do balanceador de carga é aquele anunciado aos clientes para um site e, portanto, registrado como o endereço de destino. Quando o balanceador de carga recebe a solicitação, ele altera o endereço IP de destino registrado para o do servidor de conteúdo escolhido.
  • Os balanceadores de carga da Camada 7 distribuem solicitações com base em dados encontrados em protocolos da camada de aplicação, como cabeçalhos HTTP, cookies, identificador uniforme de recursos, ID de sessão SSL e dados de formulário HTML. Eles também permitem decisões de roteamento com base em dados dentro da própria mensagem do aplicativo, como o valor de um parâmetro específico. A camada 7 adiciona alternância de conteúdo ao balanceamento de carga.

Balanceadores de carga baseados em nuvem

Balanceadores de carga baseados em nuvem não são apenas controladores de tráfego para picos de tráfego e para otimizar o uso do servidor. Os balanceadores de carga nativos da nuvem também podem fornecer análises preditivas para ajudar você a visualizar gargalos de tráfego antes que eles aconteçam. Isso, por sua vez, fornece insights acionáveis para ajudar qualquer empresa a otimizar suas soluções de TI.

Balanceamento de carga de aplicativos: À medida que as empresas dependem cada vez mais do desempenho e da disponibilidade dos aplicativos, o balanceamento de carga dos aplicativos pode ajudá-las a dimensionar, otimizar as operações e economizar dinheiro.

Balanceamento de carga do servidor global: Com usuários e clientes ao redor do mundo, as empresas podem melhorar sua disponibilidade de carga com balanceamento de carga de servidor global , que envia os usuários para o ponto de extremidade mais próximo deles. 

Balanceamento de carga de DNS: A prática de configurar um domínio no Sistema de Nomes de Domínio (DNS) para que as solicitações do usuário ao domínio sejam distribuídas entre um grupo de máquinas servidoras é chamada de balanceamento de carga de DNS .

Balanceamento de carga de rede: Controladores de entrega de aplicativos (ADCs), dispositivos físicos ou virtuais que funcionam como proxies para servidores físicos, gerenciam funções de aplicativos ou de rede e dependem de uma solução de balanceamento de carga de rede para suportá-los. Os ADCs também usam outras técnicas, incluindo cache, compactação e descarregamento de processamento SSL, para melhorar o desempenho de aplicativos da web. Na configuração usual, o ADC fica na frente de um grupo de servidores web e de aplicativos e media solicitações e respostas entre eles e seus clientes, fazendo com que o grupo pareça efetivamente um único servidor virtual para o usuário final.

Balanceamento de carga HTTP(S): A técnica para distribuir tráfego entre vários grupos de servidores web ou de aplicativos para otimizar a utilização de recursos é chamada de balanceamento de carga HTTP(S)

Balanceamento de carga interno: Um balanceador de carga interno é atribuído a uma sub-rede privada e não tem um IP público. Ele normalmente funciona dentro de um farm de servidores.

Diâmetro: Um balanceador de carga de diâmetro distribui o tráfego de sinalização entre vários servidores em uma rede. Uma das maneiras mais econômicas de fazer isso é dimensionar o plano de controle de diâmetro em vez da camada de transporte de dados. (O balanceamento de carga de diâmetro também pode ser estático ou dinâmico.)

Tecnologia de Balanceador de Carga

Existem outros tipos de soluções de balanceador de carga, que podem ser usadas sozinhas ou em uma rede com balanceadores de carga nativos da nuvem. Aqui estão alguns tipos notáveis.

Balanceador de carga de hardware: Um balanceador de carga de hardware é um dispositivo físico com um sistema operacional especializado que pode ser programado para distribuir tráfego da web entre vários servidores de aplicativos, geralmente no local. 

Balanceador de carga de software: Um balanceador de carga de software opera como um balanceador de carga físico, mas é executado em programas de software . O software mantém os aplicativos disponíveis em todos os tipos de demandas de tráfego, usando balanceamento de carga estático e dinâmico para eliminar pontos únicos de falha.

Balanceador de carga virtual: Um tipo de balanceador de carga que combina balanceadores de carga de hardware e software é um balanceador de carga virtual. Ele usa um software controlador de entrega de aplicativos que ajuda a distribuir a carga de tráfego de rede entre servidores de backend de hardware.

Como o F5 pode ajudar

  • Encontrar o balanceador de carga certo para as necessidades da sua organização é essencial para manter seus sistemas disponíveis e otimizados, seus dados acessíveis e seus usuários e clientes satisfeitos.
  • A F5 pode atender às necessidades específicas de balanceador de carga da sua organização, desde uma solução estática até uma solução global integrada que combina os pontos fortes de hardware, software e balanceadores de carga baseados em nuvem. A F5 tem um algoritmo ou solução de balanceamento de carga para as necessidades específicas do seu negócio.
  • F5 NGINX Plus e 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. Como um controlador de entrega de aplicativos e balanceador de carga baseado em software, o NGINX Plus é significativamente mais barato do que soluções de hardware com recursos semelhantes. Ele combina serviço web, balanceamento de carga, cache, entrega de mídia e muito mais, tornando-o uma escolha ideal para controlar a entrega de seus aplicativos.
  • Os serviços de aplicativos BIG-IP fornecem uma solução integrada para gerenciar, dimensionar e otimizar seus serviços de aplicativos digitais. E o BIG-IP Local Traffic Manager (LTM) inclui balanceamento de carga estático e dinâmico para eliminar pontos únicos de falha. O F5 BIG-IP DNS aplica o balanceamento de carga entre aplicativos globalmente, garantindo que seus aplicativos estejam ativos e respondendo às necessidades dos seus clientes. 
  • O F5 Distributed Cloud DNS Load Balancer oferece uma solução simples de balanceamento de carga com recuperação de desastres confiável, para que suas equipes de desenvolvimento possam se concentrar em ajudar sua empresa a inovar.
  • O F5 Distributed Cloud App Connect ajuda a habilitar o balanceamento de carga conectando com segurança seus aplicativos e serviços em qualquer tipo de ambiente, incluindo o edge.
  • A F5 oferece um conjunto abrangente de soluções de balanceamento de carga para manter seus aplicativos, tráfego, dados e superfície de computação otimizados.