GH GambleHub

Balanceamento de carga e failover

Balanceamento de carga e failover

1) Objetivos e termos

O balanceamento distribui o tráfego entre instâncias/zonas/regiões para desempenho e estabilidade.
Failover - Alteração controlada por falha.
RTO/RPO: destino de recuperação e perda de dados válida.
SLO: meta de disponibilidade/latência; serve como «porta» para o feelback automático e para o revezamento.

2) Camadas de equilíbrio

2. 1 L4 (TCP/UDP)

Vantagens: desempenho, simplicidade, TLS passthrough. Contras: nenhuma compreensão da rota/cookie.
Exemplos de NLB/GLB, HAProxy/Envoy L4, IPVS.

2. 2 L7 (HTTP/gRPC)

Vantagens: rotação por caminho/headers, peso canário, sticky. Contras: mais caro em CPU/latência.
Exemplos: NGINX/HAProxy/Envoy/Cloud ALB/API Gateway.

2. 3 Nível global

DNS/GSLB: health-checks + geo/ponderado.
Anycast/BGP: um IP no mundo, o ponto mais próximo do anúncio.
CDN/Edge: kesh/feelover no perímetro.

3) Algoritmos de distribuição

Round-robin/weighted - básico.
Least connections/latency - para consultas «pesadas».
Consent hasing - Adesividade de chave (user/tenant) sem sessão de centro.
Hash-based locality - para o dinheiro e serviços estateful.

4) Sessões e adesão (sticky)

Cookie-sticky: L7 LB instala os cookies para retornar à instância.
Src-IP sticky: em L4, pior com NAT/CGNAT.
Consent hashing: Melhor para cabos horizontais/bate-papo.
Aim: Se possível, faça o serviço de stateless, caso contrário, retire o estado (sessões no Redis/DB) para facilitar o failover.

5) Confiabilidade: health-checks e saída de rotação

Ativos checks: HTTP 200/caminhos de negócios profundos (por exemplo, '/healthz/withdraw 'com dependências).
Passive (outlier detation): ejecção de backends a 5xx/temporizações.
Warm-up: a inclusão suave de novas instâncias (slow-start).
Graceful drain: remover do pool → aguardar a conclusão das solicitações.

NGINX (exemplo):
nginx upstream api {
zone api 64k;
least_conn;
server app-1:8080 max_fails=2 fail_timeout=10s;
server app-2:8080 max_fails=2 fail_timeout=10s;
keepalive 512;
}
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_next_upstream_tries 2;
Envoy outlier detation (fatia):
yaml outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50

6) Gerenciamento de falhas: timeout/retry/circuito-breaking

Timeouts: mais curto do que o tempo de espera do cliente; definir por-rota.
Retrees: 1-2 com jitter e idumpotência; a proibição de retrações para POST sem chaves de idempotação.
Circuito breaker: limitar solicitações/erros simultâneos; Recuperação semiaberta.
Budgets: limites de retrações/fusão de burstas para não criar self-DDOS.

7) Kubernetes-pattern

ClusterIP/NodePort/LoadBalancer/Ingress são primitivos básicos.
Readiness/Liveness: Tráfego apenas para pousos prontos.
PodDisruptionBudget: Não permitir a queda simultânea das frases N.
HPA/VPA: zoom em KPU/RED métricas, ligação com LB.
ServiceTopology/Topology Aware Hants: localidade por zona.
Serviço type=LoadBalancer (zonal): Pelo menos 2 réplicas em cada AZ.

Um exemplo de readiness para uma rota crítica:
yaml readinessProbe:
httpGet: { path: /healthz/dependencies, port: 8080 }
periodSeconds: 5 failureThreshold: 2

8) Tráfego cruzado e cruzado regional

Multi-AZ (dentro da região): Distribua uniformemente (zonal LB), armazenando réplicas sincronizadas.

Multi-region:
  • Ativo-ativo: ambas as regiões servem o tráfego; mais difícil: precisa de replicação de dados, coerência e rotação geográfica.
  • Ative-Passive: A região principal serve, a reserva é «quente/quente/frio». Mais fácil, mais rápido, mas acima do RPO.
Estratégia GSLB:
  • Geo-DNS (região mais próxima).
  • Weighted DNS (canários/redistribuição).
  • Latency-based (Medidas PTT).
  • Failover = por sinais de saúde/disponibilidade (protes de vários pontos vantage).

9) Dados e failover

Cash/state: se possível, regional local; para o Ativo-Ativo - CRDT/hashs consistentes.

BD:
  • Replicação sincronizada = RPO baixo, latência superior.
  • Asincrona = latência inferior, mas RPO> 0.
  • Filas: espelhamento/topics multiclaster; Deduplicação de eventos.
  • Projete a idempotidade das operações e mecânica replay.

10) Perímetro: DNS/Anycast/BGP/CDN

DNS: TTL curto (30-60s) + health-checks fora da sua rede.
Anycast: vários RR's com um IP - o mais próximo recebe o tráfego, o feedback no nível de rotação.
CDN/Edge: dinheiro e «gateway» para proteção, estática/mídia são atendidos em queda de origin; origin-shield + пер-POP health.

11) Amostras de configuração

HAProxy L7:
haproxy defaults timeout connect 2s timeout client 15s timeout server 15s retries 2 option redispatch

backend api balance leastconn option httpchk GET /healthz/dependencies http-check expect status 200 server app1 app-1:8080 check inter 5s fall 2 rise 2 slowstart 3000 server app2 app-2:8080 check inter 5s fall 2 rise 2 slowstart 3000
NGINX sticky по cookie:
nginx upstream api {
hash $cookie_session_id consistent;
server app-1:8080;
server app-2:8080;
}
Envoy retry/timeout (route):
yaml route:
timeout: 2s retry_policy:
retry_on: 5xx,connect-failure,reset num_retries: 1 per_try_timeout: 500ms

12) Failover automático: sinais e gates

Ts-SLI: 5xx-rate, p95/p99, saturação, handschacks TLS, TCP resets.
Negócios SLI: êxito de depósitos/pagamentos, sem erros de pagamento PSP.
Gates: Ao ultrapassar as liminares, desativar a área/instância, elevar o peso do pool estável, mudar o GSLB.
Runbook: instrução passo a passo de mudança e retorno (rollback).

13) Testes e inspeções (chaos & game-days)

Testes Chaos: desativação de AZ/regiões, degradação de BD/dinheiro, simulação de packet-loss.
Game-day: um feedback de treinamento com equipes on-call.
Diagnóstico: traçado de perímetro a backends, mapeamento de anotações de lançamento e métricas.

14) Segurança e complacência

mTLS entre LB↔servisy, WAF/Rate limits no perímetro.
Zonas de falha/segmentação: isolamento blast-radius.
Políticas: proibição de pontos de rejeição solitários (SPOF), requisitos de «mínimo N réplica/AZ».

15) Anti-pattern

Uma LB/uma área para todo o tráfego de prod (SPOF).
Falta verificação profunda '/healthz '(verde - mas BD/fila não está disponível).
Retrai sem idempotidade → captação de transações/pagamentos.
Sticky per IP com NAT em massa → desequilíbrio.
Um feedback DNS com TTL alto (horário anterior à mudança).
Não há graceful drain quando o pod é um penhasco de solicitação.

16) Folha de cheque de implementação (0-45 dias)

0-10 dias

Separar as instâncias de ≥2 AZ; incluir readiness/liveness, health-check.
Ajustar L7-timeouts/retries (1 tentativa), outlier detation.
Incluir graceful drain e slow-start.

11 a 25 dias

Digite GSLB (geo/weighted) ou Anycast para o perímetro.
Peso canário/políticas de rotas; sticky via cookie/consent hash.
Gate SLO para o feeling automático (p95/5xx + business SLI).

26-45 dias

DR. regional: Ativo-ativo ou Ativo-Passive com teste de tradução.
Dias chaos com desligamento de AZ/regiões, relatórios RTO/RPO.
Runbook automatizado 'i (script intervalo/shift/rollback).

17) Métricas de maturidade

A cobertura Multi-AZ ≥ 99% das vias críticas.
O DNS/GSLB/Anycast foi implementado para endpoint públicos.
MTTR ao cair um AZ <5 minutos (p95).
RPO para dados críticos ≤ destino (por exemplo, ≤ 30 segundos).
Game-days trimestrais e um feelover bem-sucedido.

18) Conclusão

Balanceamento confiável e failover são as estratégias L7 locais (timeouts/retries/CB, health-check), adesividade e hasteamento adequados, resistência de área cruzada e GSLB/DNS/Anycast no perímetro. Adicione gates SLO, idempotidade, graceful drain e testes chaos regulares - e qualquer perda de nó, área ou mesmo região será um evento gerenciado com RTO/RPO previsível.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.