
Load balancer e alta disponibilidade explicados do zero
Objetivos desta aula
- Entender por que uma única instância é um ponto único de falha
- Conhecer algoritmos de balanceamento
- Configurar upstream com várias instâncias no Nginx
- Usar health checks para retirar instâncias doentes
Se sua aplicação roda em um único servidor e ele cai, todos os clientes ficam sem serviço. Isso é um ponto único de falha (SPOF). Alta disponibilidade significa ter réplicas para que a falha de uma não derrube tudo.
Um load balancer (balanceador de carga) fica na frente das réplicas e distribui as requisições entre elas. Para o cliente, existe um único endereço; por trás, várias instâncias trabalham.
Algoritmos comuns: round robin (uma de cada vez, em sequência), least connections (manda para quem está menos ocupado) e ip hash (o mesmo cliente vai sempre para a mesma instância).
Os health checks são essenciais: o balanceador testa periodicamente cada instância (ex.: GET /health). Se falhar, ela é retirada do rodízio até se recuperar.
Existem balanceadores de camada 4 (TCP, olham só IP e porta, muito rápidos) e de camada 7 (HTTP, conseguem rotear por caminho, domínio e cabeçalhos).
Na nuvem você usa serviços gerenciados (AWS ALB/NLB, Google Cloud Load Balancing). No Kubernetes, o Service e o Ingress fazem esse papel.
Para funcionar bem, a aplicação precisa ser stateless: nenhuma informação de sessão guardada só na memória de uma instância. Sessões vão para Redis ou banco.
Distribua réplicas em zonas de disponibilidade diferentes: se um datacenter inteiro falhar, as outras zonas continuam atendendo.
Na prática
Nginx balanceando três instâncias
nginx
upstream api_backend {
least_conn; # manda para a menos ocupada
server 10.0.1.11:3000 max_fails=3 fail_timeout=30s;
server 10.0.1.12:3000 max_fails=3 fail_timeout=30s;
server 10.0.1.13:3000 backup; # só entra se as outras caírem
}
server {
listen 80;
location / {
proxy_pass http://api_backend;
proxy_next_upstream error timeout http_502;
}
}Por que isso importa
Clientes esperam serviços sempre no ar; balanceamento e réplicas são a base de qualquer SLA sério.
Erro comum
Guardar sessão na memória da instância: o usuário é deslogado quando o balanceador o manda para outra réplica.
Dica de produção
Faça o /health verificar dependências críticas de forma leve e rápida, sem sobrecarregar o banco.
Pergunta de entrevista
Qual a diferença entre um load balancer de camada 4 e de camada 7?
Glossário
- SPOF
- Ponto único de falha: se cair, tudo cai.
- Round robin
- Distribuição em rodízio sequencial.
- Health check
- Teste periódico de saúde de uma instância.
- Stateless
- Aplicação que não guarda estado local entre requisições.
Conexão com o CloudShop
A API do CloudShop roda com três réplicas atrás de um balanceador com health check em /health.
Quiz da aula
1. O que é um SPOF?
2. Qual algoritmo envia para a instância menos ocupada?
3. Por que a app deve ser stateless?
Minhas anotações
Salvo automaticamente neste navegador.
