O balanceamento de carga é o processo de distribuição de tráfego entre vários servidores para melhorar a performance e a confiabilidade de um serviço ou aplicativo.
Após ler este artigo, você será capaz de:
Conteúdo relacionado
Algorítimos de balanceamento de Carga
Balanceamento de Carga baseado em DNS
Failover do servidor
Balanceamento de Carga de nuvem híbrida e multinuvem
Balanceamento de Carga na nuvem (LBaaS)
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
Balanceamento de carga é a prática de distribuir cargas de trabalho computacionais entre dois ou mais computadores. Na internet, o balanceamento de carga é frequentemente empregado para dividir o tráfego de rede entre vários servidores. Isso reduz a sobrecarga em cada servidor e torna os servidores mais eficientes, acelerando a performance e reduzindo a latência. O balanceamento de carga é essencial para que a maioria dos aplicativos da internet funcione corretamente.
Imagine uma fila nos caixas de um supermercado com 8 caixas, sendo que apenas um deles está aberto. Todos os clientes devem entrar na mesma fila e, portanto, levará muito tempo para que um cliente termine de pagar por suas compras. Agora imagine que a loja, em vez disso, abra todos os 8 caixas. Neste caso, o tempo de espera para os clientes será cerca de 8 vezes menor (dependendo de fatores como a quantidade de produtos que cada cliente comprar).
O balanceamento de carga realiza essencialmente a mesma coisa. Ao dividir as solicitações dos usuários entre vários servidores, o tempo de espera do usuário fica muito reduzido. Isto resulta em uma melhor experiência do usuário — os clientes do supermercado, no exemplo acima, provavelmente procurariam um supermercado mais eficiente se eles sempre experimentassem longos tempos de espera.
O balanceamento de carga é tratado por uma ferramenta ou aplicativo chamado balanceador de carga. Um balanceador de carga pode ser baseado em hardware ou baseado em software. Os balanceadores de carga de hardware requerem a instalação de um dispositivo de balanceamento de carga dedicado; balanceadores de carga baseados em software podem ser executados em um servidor, em uma máquina virtual ou em nuvem. Redes de distribuição de conteúdo (CDN) geralmente incluem recursos de balanceamento de carga.
Quando chega uma solicitação de um usuário, o balanceador de carga atribui a solicitação a um determinado servidor e esse processo se repete para cada solicitação. Os balanceadores de carga determinam qual servidor deve tratar cada solicitação com base em vários algoritmos diferentes. Esses algoritmos se dividem em duas categorias principais: estáticos e dinâmicos.
Os algoritmos de balanceamento de carga estático distribuem cargas de trabalho sem levar em consideração o estado atual do sistema. Um balanceador de carga estático não saberá quais servidores estão com performance lenta e quais servidores não estão sendo usados o suficiente. Em vez disso, ele atribui cargas de trabalho com base em um plano predeterminado. O balanceamento de carga estático é rápido de configurar, mas pode resultar em ineficiências.
Voltando à analogia acima, imagine se supermercado com 8 caixas abertos tem um funcionário cujo trabalho é direcionar os clientes para as filas. Imagine que esse funcionário simplesmente vá em ordem, atribuindo o primeiro cliente ao caixa 1, o segundo cliente ao caixa 2 e assim por diante, sem olhar para trás para ver a rapidez com que as filas estão se movendo. Se todos os 8 caixas tiverem um desempenho eficiente, esse sistema funcionará bem — mas se um ou mais caixas estiverem atrasados, algumas filas podem ficar muito mais longas do que outras, resultando em experiências ruins para o cliente. O balanceamento de carga estático apresenta o mesmo risco: às vezes, os servidores individuais ainda podem ficar sobrecarregados.
DNS round-robin e balanceamento de carga aleatório do lado do cliente são duas formas comuns de balanceamento de carga estático.
Os algoritmos de balanceamento de carga dinâmico levam em consideração a disponibilidade, carga de trabalho e integridade atuais de cada servidor. Eles podem transferir o tráfego de servidores sobrecarregados ou com baixa performance para servidores subutilizados, mantendo a distribuição uniforme e eficiente. No entanto, o balanceamento de carga dinâmico é mais difícil de configurar. Vários fatores diferentes influenciam a disponibilidade do servidor: a integridade e a capacidade geral de cada servidor, o tamanho das tarefas que estão sendo distribuídas e assim por diante.
Suponha que o funcionário do supermercado que separa os clientes nas filas do caixa use uma abordagem mais dinâmica: o funcionário observa as filas cuidadosamente, vê quais estão se movendo mais rápido, observa quantos produtos cada cliente está comprando e designa os clientes de acordo. Isso pode garantir uma experiência mais eficiente para todos os clientes, mas também sobrecarrega mais o funcionário de triagem de filas.
Existem vários tipos de algoritmos de balanceamento de carga dinâmico, incluindo conexão mínima, conexão mínima ponderada, balanceamento de carga baseado em recursos e baseado em geolocalização.
Conforme discutido acima, o balanceamento de carga é frequentemente usado com aplicativos web. Os balanceadores de carga baseados em software e em nuvem ajudam a distribuir o tráfego da internet uniformemente entre os servidores que hospedam o aplicativo. Alguns produtos de balanceamento de carga na nuvem podem equilibrar as cargas de tráfego da internet entre servidores espalhados pelo mundo, um processo conhecido como balanceamento de carga global de servidores (GSLB)
O balanceamento de carga também é comumente usado em grandes redes localizadas, como aquelas em um data center ou um grande complexo de escritórios. Tradicionalmente, isso exigia o uso de dispositivos de hardware, como um controlador de entrega de aplicativos (ADC) ou um dispositivo de balanceamento de carga dedicado. Os balanceadores de carga baseados em software também são usados para essa finalidade.
Os balanceadores de carga dinâmicos devem estar cientes da integridade do servidor: seu status atual, sua performance etc. Os balanceadores de carga dinâmicos monitoram os servidores realizando verificações regulares de integridade do servidor. Se um servidor ou grupo de servidores estiver com performance lenta, o balanceador de carga distribuirá menos tráfego para ele. Se um servidor ou grupo de servidores falhar completamente, o balanceador de carga redirecionará o tráfego para outro grupo de servidores, um processo conhecido como "failover".
O failover ocorre quando um determinado servidor não está funcionando e um balanceador de carga distribui seus processos normais para um servidor secundário ou grupo de servidores. O failover do servidor é crucial para a confiabilidade: se não houver backup, uma falha no servidor pode derrubar um site ou aplicativo. É importante que o failover ocorra rapidamente para evitar uma lacuna no serviço.
Saiba mais sobre os diferentes aspectos do balanceamento de carga: