O que é balanceamento de carga?
O balanceamento de carga é o método de distribuir o tráfego de rede igualmente em um grupo de recursos que oferecem suporte a uma aplicação. As aplicações modernas devem processar milhões de usuários 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 das aplicações tem muitos servidores de recursos com dados duplicados entre eles. Um balanceador de carga é um dispositivo 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.
Quais são os benefícios do balanceamento de carga?
O balanceamento de carga direciona e controla o tráfego da Internet entre os servidores de aplicações e seus visitantes ou clientes. Como resultado, ele melhora a disponibilidade, a escalabilidade, a segurança e a performance de uma aplicação.
Disponibilidade das aplicações
A falha ou a manutenção do servidor podem aumentar o tempo de inatividade da aplicação, tornando sua aplicação indisponível para os visitantes. Os balanceadores de carga aumentam a tolerância a falhas de seus sistemas detectando automaticamente os problemas do servidor e redirecionando o tráfego do cliente para os servidores disponíveis. Você pode usar o balanceamento de carga para facilitar essas tarefas:
- Execute manutenção ou upgrades do servidor de aplicações sem tempo de inatividade da aplicação
- Fornecer recuperação automática de desastres para locais de backup
- Execute verificações de integridade e evite problemas que possam causar tempo de inatividade
Escalabilidade de aplicações
Você pode usar balanceadores de carga para direcionar o tráfego de rede de forma inteligente entre vários servidores. Suas aplicações podem lidar com milhares de solicitações de clientes porque o balanceamento de carga faz o seguinte:
- Evita gargalos de tráfego em qualquer servidor
- Prevê o tráfego de aplicações para que você possa adicionar ou remover servidores diferentes, se necessário
- Adiciona redundância ao seu sistema para que você possa dimensionar com confiança
Segurança de aplicativo
Os balanceadores de carga vêm com recursos de segurança integrados para adicionar outra camada de segurança às suas aplicações da Internet. Eles são uma ferramenta útil para lidar com ataques distribuídos de negação de serviço, nos quais os invasores inundam um servidor de aplicações com milhões de solicitações simultâneas que causam falha no servidor. Os balanceadores de carga também podem fazer o seguinte:
- Monitore o tráfego e bloqueie o conteúdo
- Redirecionar automaticamente o tráfego de ataque para vários servidores de backend para minimizar o impacto
- Roteie o tráfego por meio de um grupo de firewalls de rede para obter segurança adicional
performance da aplicação
Os balanceadores de carga melhoram a performance da aplicação aumentando o tempo de resposta e reduzindo a latência da rede. Eles executam várias tarefas críticas, como as seguintes:
- Distribua a carga uniformemente entre os servidores para melhorar a performance da aplicação
- Redirecione as solicitações do cliente para um servidor geograficamente mais próximo para reduzir a latência
- Garanta a confiabilidade e a performance dos recursos de computação física e virtual
O que são algoritmos de balanceamento de carga?
Um algoritmo de balanceamento de carga é o conjunto de regras que um balanceador de carga segue para determinar o melhor servidor para cada uma das diferentes solicitações do cliente. Os algoritmos de balanceamento de carga se enquadram em duas categorias principais.
Balanceamento de carga estático
Os algoritmos de balanceamento de carga estática seguem regras fixas e são independentes do estado atual do servidor. Veja a seguir exemplos de balanceamento de carga estática.
Método Round-robin
Os servidores têm endereços IP que informam ao cliente para onde enviar solicitações. O endereço IP é um número longo que é difícil de lembrar. Para facilitar, um sistema de nomes de domínio mapeia nomes de sites para servidores. Quando você insere aws.amazon.com em seu navegador, a solicitação primeiro vai para o nosso servidor de nomes, que retorna nosso endereço IP ao seu navegador.
No método round-robin, um servidor de nomes autoritativo faz o balanceamento de carga em vez de hardware ou software especializado. O servidor de nomes retorna os endereços IP de diferentes servidores no farm de servidores, turno por turno ou usando o método round-robin.
Método round-robin ponderado
No balanceamento de carga round-robin ponderado, você pode atribuir pesos diferentes a cada servidor com base em sua prioridade ou capacidade. Servidores com pesos mais altos receberão mais tráfego de entrada de aplicações do servidor de nomes.
Método de hash IP
No método de hash IP, o balanceador de carga executa um cálculo matemático, chamado hash, no endereço IP do cliente. Ele converte o endereço IP do cliente em um número, que é então mapeado para servidores individuais.
Balanceamento dinâmico de carga
Os algoritmos de balanceamento de carga dinâmico examinam o estado atual dos servidores antes de distribuir o tráfego. A seguir estão alguns exemplos de algoritmos de balanceamento de carga dinâmico.
Método de conexão mínima
Uma conexão é um canal de comunicação aberto entre um cliente e um servidor. Quando o cliente envia a primeira solicitação ao servidor, ele autentica e estabelece uma conexão ativa entre si. No método de conexão mínima, o balanceador de carga verifica quais servidores têm menos conexões ativas e envia tráfego para esses servidores. Esse método pressupõe que todas as conexões exigem o mesmo poder de processamento para todos os servidores.
Método de conexão mínima ponderada
Algoritmos de conexão com menor peso assumem que alguns servidores podem lidar com conexões mais ativas do que outros. Portanto, você pode atribuir pesos ou capacidades diferentes a cada servidor, e o balanceador de carga envia as novas solicitações de cliente para o servidor com menos conexões por capacidade.
Método de menor tempo de resposta
O tempo de resposta é o tempo total que o servidor leva para processar as solicitações recebidas e enviar uma resposta. O método de menor tempo de resposta combina o tempo de resposta do servidor e as conexões ativas para determinar o melhor servidor. Os balanceadores de carga usam esse algoritmo para garantir um serviço mais rápido para todos os usuários.
Método baseado em recursos
No método baseado em recursos, os balanceadores de carga distribuem o tráfego analisando a carga atual do servidor. Um software especializado chamado agente é executado em cada servidor e calcula o uso de recursos do servidor, como sua capacidade de computação e memória. Em seguida, o balanceador de carga verifica se há recursos livres suficientes no agente antes de distribuir o tráfego para esse servidor.
Como funciona o balanceamento de carga?
As empresas geralmente têm suas aplicações em execução em vários servidores. Esse arranjo de servidores é chamado de farm de servidores. As solicitações do usuário para a aplicação vão primeiro para o balanceador de carga. Em seguida, o balanceador de carga roteia cada solicitação para um único servidor no farm de servidores mais adequado para lidar com a solicitação.
O balanceamento de carga é como o trabalho feito por um gerente em um restaurante. Considere um restaurante com cinco garçons. Se os clientes pudessem escolher seus garçons, um ou dois garçons poderiam ficar sobrecarregados com o trabalho enquanto os outros estão ociosos. Para evitar esse cenário, o gerente do restaurante atribui clientes aos garçons específicos que são mais adequados para atendê-los.
Quais são os tipos de balanceamento de carga?
Podemos classificar o balanceamento de carga em três categorias principais, dependendo do que o balanceador de carga verifica na solicitação do cliente para redirecionar o tráfego.
Balanceamento de carga de aplicações
Aplicações modernas complexas têm vários farms de servidores com vários servidores dedicados a uma única função da aplicação. Os Application Load Balancers examinam o conteúdo da solicitação, como cabeçalhos HTTP ou IDs de sessão SSL, para redirecionar o tráfego.
Por exemplo, uma aplicação de comércio eletrônico tem um diretório de produtos, carrinho de compras e funções de checkout. O Application Load Balancer envia solicitações de produtos de navegação para servidores que contêm imagens e vídeos, mas não precisam manter conexões abertas. Em comparação, ele envia solicitações de carrinho de compras para servidores que podem manter muitas conexões de clientes e salvar dados do carrinho por um longo tempo.
Balanceamento de carga de rede
Os Network Load Balancers examinam endereços IP e outras informações de rede para redirecionar o tráfego de maneira ideal. Eles rastreiam a origem do tráfego da aplicação e podem atribuir um endereço IP estático a vários servidores. Os Network Load Balancers usam os algoritmos de balanceamento de carga estático e dinâmico descritos anteriormente para equilibrar a carga do servidor.
Balanceamento de carga global do servidor
O balanceamento de carga global do servidor ocorre em vários servidores distribuídos geograficamente. Por exemplo, as empresas podem ter servidores em vários datacenters, em diferentes países e em provedores de nuvem terceirizados em todo o mundo. Nesse caso, os balanceadores de carga locais gerenciam a carga da aplicação dentro de uma região ou zona. Eles tentam redirecionar o tráfego para um destino de servidor geograficamente mais próximo do cliente. Eles podem redirecionar o tráfego para servidores fora da zona geográfica do cliente somente em caso de falha do servidor.
Balanceamento de carga de DNS
No balanceamento de carga DNS, você configura seu domínio para rotear solicitações de rede em um grupo de recursos no seu domínio. Um domínio pode corresponder a um site, um sistema de correio, um servidor de impressão ou outro serviço acessível pela Internet. O balanceamento de carga DNS é útil para manter a disponibilidade da aplicação e equilibrar o tráfego de rede em um grupo de recursos distribuído globalmente.
Quais são os tipos de tecnologia de balanceamento de carga?
Os balanceadores de carga são de dois tipos: balanceador de carga de hardware e balanceador de carga de software.
Balanceadores de carga de hardware
Um balanceador de carga baseado em hardware é um dispositivo de hardware que pode processar e redirecionar com segurança gigabytes de tráfego para centenas de servidores diferentes. Você pode armazená-lo em seus datacenters e usar a virtualização para criar vários balanceadores de carga digitais ou virtuais que você pode gerenciar centralmente.
Balanceadores de carga de software
Os balanceadores de carga baseados em software são aplicações que executam todas as funções de balanceamento de carga. Você pode instalá-los em qualquer servidor ou acessá-los como um serviço de terceiros totalmente gerenciado.
Comparação de balanceadores de hardware com balanceadores de carga de software
Os balanceadores de carga de hardware exigem um investimento inicial, configuração e manutenção contínua. Você também pode não os usar em plena capacidade, especialmente se você comprar um apenas para lidar com picos de tráfego em horários de pico. Se o volume de tráfego aumentar repentinamente além de sua capacidade atual, isso afetará os usuários até que você possa comprar e configurar outro balanceador de carga.
Por outro lado, os balanceadores de carga baseados em software são muito mais flexíveis. A escala deles pode ser aumentada ou reduzida verticalmente com facilidade e são mais compatíveis com ambientes modernos de computação em nuvem. Eles também custam menos para configurar, gerenciar e usar ao longo do tempo.
Como a AWS pode ajudar com o balanceamento de carga?
O Elastic Load Balancing (ELB) é um serviço de balanceamento de carga totalmente gerenciado que distribui automaticamente o tráfego de entrada de aplicações para vários destinos e dispositivos virtuais na AWS e em recursos on-premises. Use-o para dimensionar aplicações modernas sem configurações complexas ou gateways de API. Você pode usar o ELB para configurar quatro tipos diferentes de balanceadores de carga de software.
-
Um Application Load Balancer roteia o tráfego para solicitações baseadas em HTTP.
-
Um Network Load Balancer roteia o tráfego com base em endereços IP. É ideal para balancear solicitações baseadas em TCP e UDP (User Datagram Protocol).
-
Um balanceador de carga de gateway roteia o tráfego para dispositivos virtuais de terceiros. É ideal para incorporar um dispositivo de terceiros, como um firewall de rede, em seu tráfego de rede de forma escalável e fácil de gerenciar.
-
Um Classic Load Balancer roteia o tráfego para aplicações na rede clássica do Amazon EC2, uma rede única e plana que você compartilha com outros clientes.
Você pode selecionar o balanceador de carga com base em seus requisitos. Por exemplo, a Terminix, uma marca global de controle de pragas, usa o Gateway Load Balancer para lidar com 300% mais throughput. A Second Spectrum, uma empresa que fornece tecnologia de rastreamento orientada por inteligência artificial para transmissões esportivas, usa o AWS Load Balancer Controller para reduzir os custos de hospedagem em 90%. A Code.org, uma organização sem fins lucrativos dedicada a expandir o acesso à ciência da computação nas escolas, usa o Application Load Balancer para lidar com um aumento de 400% no tráfego de forma eficiente durante eventos de codificação on-line.
Comece a usar o balanceamento de carga criando uma conta da AWS hoje mesmo!
Próximas etapas do balanceamento de carga com a AWS
Obtenha acesso instantâneo ao nível gratuito da AWS.