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
| Metodo | Descricao |
|---|---|
| Cookie | Armazena o ID do servidor no cookie |
| Endereco IP | Fixa baseado no IP do cliente |
| Parametro de URL | Inclui 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
| Nome | Caracteristicas |
|---|---|
| Nginx | Alta performance, funcionalidade de proxy reverso |
| HAProxy | Alta disponibilidade, recursos abundantes |
| Envoy | Cloud native, suporte a service mesh |
Servicos em Nuvem
| Servico | Provedor |
|---|---|
| ALB/NLB | AWS |
| Cloud Load Balancing | Google Cloud |
| Azure Load Balancer | Microsoft 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