Pular para o conteúdo principal

Políticas de Roteamento Route 53

Visão Geral​

O Route 53 oferece várias políticas de roteamento para direcionar o tráfego de acordo com diferentes critérios.

┌─────────────────────────────────────────────────────────────┐
│ POLÍTICAS DE ROTEAMENTO │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ SIMPLE │ │ Um único destino │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ WEIGHTED │ │ Distribuição por peso │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ LATENCY │ │ Menor latência │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ FAILOVER │ │ Failover automático │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ GEOLOCATION │ │ De acordo com a região do │ │
│ │ │ │ usuário │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ GEOPROXIMITY │ │ Por distância + viés │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ MULTIVALUE │ │ Múltiplas respostas + health│ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

1. Simple Routing​

O roteamento mais básico: uma requisição = uma resposta.

┌─────────────────────────────────────────────────────────────┐
│ SIMPLE ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Usuário Route 53 │
│ │ │ │
│ │ "www.example.com?" │ │
│ ├─────────────────────────────►│ │
│ │ │ │
│ │ 192.0.2.44 │ │
│ │◄─────────────────────────────┤ │
│ │ │ │
│ │ (ou vários IPs, ordem aleatória) │
│ │ 192.0.2.44, 192.0.2.45 │
│ │ │ │
│ │
│ Características: │
│ • Sem health checks │
│ • Se vários IPs, o cliente escolhe │
│ • O mais simples, mas sem failover │
│ │
│ Casos de uso: │
│ • Site simples com um único recurso │
│ • Desenvolvimento/teste │
│ │
└─────────────────────────────────────────────────────────────┘

2. Weighted Routing​

Distribuição do tráfego conforme pesos atribuídos.

┌─────────────────────────────────────────────────────────────┐
│ WEIGHTED ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Configuração: │
│ • Record 1 : 192.0.2.44 (peso: 70) │
│ • Record 2 : 192.0.2.45 (peso: 20) │
│ • Record 3 : 192.0.2.46 (peso: 10) │
│ │
│ Resultado: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 100 requisições │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │▓▓▓▓▓▓▓▓▓▓▓▓▓▓│░░░░░░│████│ │ │ │
│ │ │ 70% │ 20% │ 10%│ │ │ │
│ │ │ .44 │ .45 │ .46│ │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Casos de uso: │
│ • A/B testing (90% versão A, 10% versão B) │
│ • Migração progressiva (shift progressivo) │
│ • Distribuição de carga entre regiões │
│ │
│ Nota: Peso 0 = nenhum tráfego para este destino │
│ │
└─────────────────────────────────────────────────────────────┘

Configuração CLI​

# Record 1 - Produção (70%)
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "www.example.com",
"Type": "A",
"SetIdentifier": "production",
"Weight": 70,
"TTL": 60,
"ResourceRecords": [{"Value": "192.0.2.44"}]
}
}]
}'

# Record 2 - Canary (10%)
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "www.example.com",
"Type": "A",
"SetIdentifier": "canary",
"Weight": 10,
"TTL": 60,
"ResourceRecords": [{"Value": "192.0.2.45"}]
}
}]
}'

3. Latency-Based Routing​

Direciona para a região AWS com a menor latência.

┌─────────────────────────────────────────────────────────────┐
│ LATENCY-BASED ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ O Route 53 mede a latência e direciona para a região │
│ mais rápida para o usuário. │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 🇨🇦 Usuário Canadá │ │
│ │ │ │ │
│ │ │ Qual região? │ │
│ │ ▼ │ │
│ │ ┌─────────────┐ │ │
│ │ │ Route 53 │ │ │
│ │ │ │ │ │
│ │ │ Latência: │ │ │
│ │ │ us-east: 20ms ← Mais rápido! │ │
│ │ │ eu-west: 80ms │ │
│ │ │ ap-south: 200ms │ │
│ │ └──────┬──────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ Resposta: ALB us-east-1 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Casos de uso: │
│ • Aplicação multi-região │
│ • Melhorar a experiência do usuário globalmente │
│ • Reduzir a latência para todos os usuários │
│ │
└─────────────────────────────────────────────────────────────┘

4. Failover Routing​

Failover automático para um recurso de backup.

┌─────────────────────────────────────────────────────────────┐
│ FAILOVER ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Configuração: │
│ • Primário: ALB produção (com health check) │
│ • Secundário: Site estático S3 (página de manutenção) │
│ │
│ ESTADO NORMAL (Primário saudável) │
│ ───────────────────────────── │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Usuário ──────► Route 53 ──────► ALB Prod │ │
│ │ │ ✓ Healthy │ │
│ │ │ │ │
│ │ └──╳── S3 (ignorado) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ESTADO FAILOVER (Primário unhealthy) │
│ ───────────────────────────────── │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Usuário ──────► Route 53 ──╳── ALB Prod │ │
│ │ │ ✗ Unhealthy │ │
│ │ │ │ │
│ │ └──────► S3 Manutenção │ │
│ │ "Site em │ │
│ │ manutenção" │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Casos de uso: │
│ • Disaster Recovery │
│ • Página de manutenção automática │
│ • Failover para região secundária │
│ │
└─────────────────────────────────────────────────────────────┘

Health Checks​

┌─────────────────────────────────────────────────────────────┐
│ HEALTH CHECKS ROUTE 53 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Tipos de Health Checks: │
│ │
│ 1. ENDPOINT │
│ ───────── │
│ Verifica um endpoint HTTP/HTTPS/TCP │
│ • URL : https://example.com/health │
│ • Porta : 443 │
│ • Intervalo : 30 segundos │
│ • Limite : 3 falhas = unhealthy │
│ │
│ 2. CLOUDWATCH ALARM │
│ ───────────────── │
│ Baseado em um alarme CloudWatch │
│ • Se alarme em estado ALARM → unhealthy │
│ • Útil para métricas internas │
│ │
│ 3. CALCULATED │
│ ────────── │
│ Combina vários health checks │
│ • OR : healthy se pelo menos 1 está healthy │
│ • AND : healthy se todos estão healthy │
│ │
│ Configuração: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Protocol: HTTPS │ │
│ │ Host: www.example.com │ │
│ │ Path: /health │ │
│ │ Port: 443 │ │
│ │ Request Interval: 30 seconds │ │
│ │ Failure Threshold: 3 │ │
│ │ String Matching: "OK" (opcional) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

5. Geolocation Routing​

Roteamento baseado na localização geográfica do usuário.

┌─────────────────────────────────────────────────────────────┐
│ GEOLOCATION ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ O tráfego é direcionado conforme o país/continente │
│ do usuário, NÃO pela latência. │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 🇫🇷 França → servidor-fr.example.com │ │
│ │ 🇩🇪 Alemanha → servidor-de.example.com │ │
│ │ 🇬🇧 UK → servidor-uk.example.com │ │
│ │ 🌍 Europa (outros) → servidor-eu.example.com │ │
│ │ 🌎 Default → servidor-us.example.com │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Casos de uso: │
│ • Conteúdo localizado (idioma, moeda) │
│ • Restrições legais (GDPR, conteúdo georrestrito) │
│ • Conformidade regulatória │
│ • Servir conteúdo específico por região │
│ │
│ ⚠️ Importante: │
│ Sempre configure um record "Default" para usuários │
│ não mapeados! │
│ │
└─────────────────────────────────────────────────────────────┘

Comparação das Políticas​

PolíticaCritérioHealth CheckCasos de Uso
SimpleNenhum❌ NãoSites simples
WeightedPeso %✅ SimA/B testing, migração
LatencyPerformance✅ SimApps globais
FailoverDisponibilidade✅ RequeridoDR, manutenção
GeolocationPaís/Continente✅ SimConteúdo localizado
GeoproximityDistância + viés✅ SimTraffic shaping
MultivalueMúltiplos IPs✅ SimLB simples

Resumo​

PolíticaQuando usar
SimpleUm único endpoint, sem necessidade de failover
WeightedDistribuição controlada, A/B testing
LatencyMelhor performance global
FailoverAlta disponibilidade, DR
GeolocationConteúdo por país, conformidade

Próxima seção: Lab Failover