Como Funciona o Balanceamento de Carga - Estabilizando Servicos com Distribuicao de Carga

14 min leitura | 2025.12.18

O que e Balanceamento de Carga

Balanceamento de carga (Load Balancing) e uma tecnica que distribui o trafego entre varios servidores para melhorar a disponibilidade e o desempenho geral do sistema.

Por que e necessario: E essencial para lidar com grandes volumes de requisicoes que um unico servidor nao consegue processar e para manter o servico funcionando mesmo durante falhas de servidor.

Configuracao Basica do Balanceador de Carga

flowchart TB
    LB["Balanceador de Carga"]
    LB --> S1["Server 1"]
    LB --> S2["Server 2"]
    LB --> S3["Server 3"]

Os clientes acessam o endereco IP do balanceador de carga, e o balanceador distribui as requisicoes para os servidores apropriados.

Balanceamento de Carga L4 e L7

Balanceamento de Carga L4 (Camada de Transporte)

Realiza a distribuicao de carga no nivel TCP/UDP.

  • Funcionamento: Distribuicao baseada em endereco IP e numero de porta
  • Vantagem: Rapido, baixo overhead
  • Desvantagem: Nao consegue ver o conteudo HTTP

Balanceamento de Carga L7 (Camada de Aplicacao)

Realiza a distribuicao de carga no nivel HTTP.

  • Funcionamento: Distribuicao baseada em URL, headers, cookies, etc.
  • Vantagem: Roteamento flexivel
  • Desvantagem: Maior carga de processamento
Exemplo de Balanceamento de Carga L7:
/api/*      → Cluster de servidores de API
/static/*   → Servidores de arquivos estaticos
/admin/*    → Servidores de painel administrativo

Principais Algoritmos de Distribuicao de Carga

Round Robin

Distribui as requisicoes para cada servidor em ordem.

Requisicao 1 → Server A
Requisicao 2 → Server B
Requisicao 3 → Server C
Requisicao 4 → Server A (repete)

Adequado para: Quando a capacidade dos servidores e uniforme

Round Robin Ponderado (Weighted Round Robin)

Ajusta a proporcao de distribuicao de acordo com a capacidade do servidor.

Server A (weight: 3) → 3 requisicoes
Server B (weight: 2) → 2 requisicoes
Server C (weight: 1) → 1 requisicao

Menos Conexoes (Least Connections)

Distribui para o servidor com menor numero de conexoes atuais.

Server A: 10 conexoes ativas
Server B: 5 conexoes ativas  ← Proxima requisicao vai aqui
Server C: 8 conexoes ativas

Adequado para: Quando ha variacao no tempo de processamento

Hash de IP (IP Hash)

Determina o servidor baseado no hash do endereco IP do cliente.

hash(192.168.1.100) % 3 = 1 → Server B
hash(192.168.1.101) % 3 = 0 → Server A

Adequado para: Quando e necessario manter a sessao

Health Check

O balanceador de carga verifica periodicamente o estado dos servidores e exclui automaticamente servidores com falha.

Health Check Ativo

Balanceador de Carga → GET /health → Cada servidor
                          ↓
              200 OK → Normal (incluido na distribuicao)
              5xx/Timeout → Anormal (excluido)

Health Check Passivo

Monitora o sucesso/falha das requisicoes reais.

5 falhas consecutivas → Servidor excluido
Apos 30 segundos → Tenta distribuir novamente

Manutencao de Sessao (Sticky Session)

Mecanismo que continua enviando requisicoes do mesmo usuario para o mesmo servidor.

Metodos de Implementacao

MetodoDescricao
CookieArmazena o ID do servidor no cookie
Endereco IPFixa baseado no IP do cliente
Parametro de URLInclui o ID de sessao na URL

Pontos de Atencao

Sticky sessions podem causar desbalanceamento de carga. Se possivel, gerencie as informacoes de sessao em um armazenamento externo (como Redis) e busque um design stateless.

Balanceadores de Carga Populares

Software

NomeCaracteristicas
NginxAlta performance, funcionalidade de proxy reverso
HAProxyAlta disponibilidade, recursos abundantes
EnvoyCloud native, suporte a service mesh

Servicos em Nuvem

ServicoProvedor
ALB/NLBAWS
Cloud Load BalancingGoogle Cloud
Azure Load BalancerMicrosoft Azure

Configuracao de Alta Disponibilidade

A redundancia do proprio balanceador de carga tambem e importante.

flowchart TB
    VIP["IP Virtual<br/>(VIP/Floating IP)"]
    VIP --> Active["LB (Ativo)"]
    Standby["LB (Standby)"] -->|Monitoramento| Active
    Active --> Servers["Cluster de Servidores"]

Na configuracao Active-Standby, quando o balanceador de carga ativo falha, o standby assume automaticamente.

Resumo

O balanceamento de carga e uma tecnologia essencial para servicos web modernos. Atraves da selecao adequada de algoritmos, configuracao de health checks e arquitetura de alta disponibilidade, e possivel alcancar uma operacao de servico estavel.

← Voltar para a lista