Saltar al contenido principal

Políticas de Enrutamiento Route 53

Visión General​

Route 53 ofrece varias políticas de enrutamiento para dirigir el tráfico según diferentes criterios.

┌─────────────────────────────────────────────────────────────┐
│ POLÍTICAS DE ENRUTAMIENTO │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ SIMPLE │ │ Un solo destino │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ WEIGHTED │ │ Distribución por peso │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ LATENCY │ │ Menor latencia │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ FAILOVER │ │ Conmutación automática │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ GEOLOCATION │ │ Según la región del usuario │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ GEOPROXIMITY │ │ Según distancia + sesgo │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ MULTIVALUE │ │ Múltiples respuestas + health│ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

1. Simple Routing​

El enrutamiento más básico: una solicitud = una respuesta.

┌─────────────────────────────────────────────────────────────┐
│ SIMPLE ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Usuario Route 53 │
│ │ │ │
│ │ "www.example.com?" │ │
│ ├─────────────────────────────►│ │
│ │ │ │
│ │ 192.0.2.44 │ │
│ │◄─────────────────────────────┤ │
│ │ │ │
│ │ (o varias IPs, orden aleatorio) │
│ │ 192.0.2.44, 192.0.2.45 │
│ │ │ │
│ │
│ Características: │
│ • Sin health checks │
│ • Si hay varias IPs, el cliente elige │
│ • El más simple, pero sin failover │
│ │
│ Casos de uso: │
│ • Sitio simple con un solo recurso │
│ • Desarrollo/pruebas │
│ │
└─────────────────────────────────────────────────────────────┘

2. Weighted Routing​

Distribución del tráfico según los pesos asignados.

┌─────────────────────────────────────────────────────────────┐
│ WEIGHTED ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Configuración: │
│ • 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 solicitudes │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │▓▓▓▓▓▓▓▓▓▓▓▓▓▓│░░░░░░│████│ │ │ │
│ │ │ 70% │ 20% │ 10%│ │ │ │
│ │ │ .44 │ .45 │ .46│ │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Casos de uso: │
│ • A/B testing (90% versión A, 10% versión B) │
│ • Migración progresiva (cambio progresivo) │
│ • Distribución de carga entre regiones │
│ │
│ Nota: Peso 0 = ningún tráfico hacia ese destino │
│ │
└─────────────────────────────────────────────────────────────┘

Configuración CLI​

# Record 1 - Producción (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​

Dirige hacia la región de AWS con la menor latencia.

┌─────────────────────────────────────────────────────────────┐
│ LATENCY-BASED ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Route 53 mide la latencia y dirige hacia la región │
│ más rápida para el usuario. │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 🇨🇦 Usuario Canadá │ │
│ │ │ │ │
│ │ │ ¿Qué región? │ │
│ │ ▼ │ │
│ │ ┌─────────────┐ │ │
│ │ │ Route 53 │ │ │
│ │ │ │ │ │
│ │ │ Latencia: │ │ │
│ │ │ us-east: 20ms ← ¡Más rápido! │ │
│ │ │ eu-west: 80ms │ │
│ │ │ ap-south: 200ms │ │
│ │ └──────┬──────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ Respuesta: ALB us-east-1 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Casos de uso: │
│ • Aplicación multi-región │
│ • Mejorar la experiencia del usuario globalmente │
│ • Reducir la latencia para todos los usuarios │
│ │
└─────────────────────────────────────────────────────────────┘

4. Failover Routing​

Conmutación automática hacia un recurso de respaldo.

┌─────────────────────────────────────────────────────────────┐
│ FAILOVER ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Configuración: │
│ • Primario: ALB producción (con health check) │
│ • Secundario: Sitio estático S3 (página de mantenimiento) │
│ │
│ ESTADO NORMAL (Primario saludable) │
│ ───────────────────────────── │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Usuario ──────► Route 53 ──────► ALB Prod │ │
│ │ │ ✓ Healthy │ │
│ │ │ │ │
│ │ └──╳── S3 (ignorado) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ESTADO FAILOVER (Primario no saludable) │
│ ───────────────────────────────── │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Usuario ──────► Route 53 ──╳── ALB Prod │ │
│ │ │ ✗ Unhealthy │ │
│ │ │ │ │
│ │ └──────► S3 Maintenance │ │
│ │ "Sitio en │ │
│ │ mantenimiento" │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Casos de uso: │
│ • Disaster Recovery │
│ • Página de mantenimiento automática │
│ • Conmutación a región secundaria │
│ │
└─────────────────────────────────────────────────────────────┘

Health Checks​

┌─────────────────────────────────────────────────────────────┐
│ HEALTH CHECKS ROUTE 53 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Tipos de Health Checks: │
│ │
│ 1. ENDPOINT │
│ ───────── │
│ Verifica un endpoint HTTP/HTTPS/TCP │
│ • URL : https://example.com/health │
│ • Puerto : 443 │
│ • Intervalo : 30 segundos │
│ • Umbral : 3 fallos = unhealthy │
│ │
│ 2. CLOUDWATCH ALARM │
│ ───────────────── │
│ Basado en una alarma CloudWatch │
│ • Si la alarma está en estado ALARM → unhealthy │
│ • Útil para métricas internas │
│ │
│ 3. CALCULATED │
│ ────────── │
│ Combina varios health checks │
│ • OR : healthy si al menos 1 es healthy │
│ • AND : healthy si todos son healthy │
│ │
│ Configuración: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Protocol: HTTPS │ │
│ │ Host: www.example.com │ │
│ │ Path: /health │ │
│ │ Port: 443 │ │
│ │ Request Interval: 30 seconds │ │
│ │ Failure Threshold: 3 │ │
│ │ String Matching: "OK" (opcional) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

5. Geolocation Routing​

Enrutamiento basado en la ubicación geográfica del usuario.

┌─────────────────────────────────────────────────────────────┐
│ GEOLOCATION ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ El tráfico se dirige según el país/continente del │
│ usuario, NO según la latencia. │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 🇫🇷 Francia → servidor-fr.example.com │ │
│ │ 🇩🇪 Alemania → servidor-de.example.com │ │
│ │ 🇬🇧 UK → servidor-uk.example.com │ │
│ │ 🌍 Europa (otro) → servidor-eu.example.com │ │
│ │ 🌎 Default → servidor-us.example.com │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Casos de uso: │
│ • Contenido localizado (idioma, moneda) │
│ • Restricciones legales (GDPR, contenido geo-restringido) │
│ • Cumplimiento normativo │
│ • Servir contenido específico por región │
│ │
│ ⚠️ Importante: │
│ ¡Siempre configure un record "Default" para los │
│ usuarios no mapeados! │
│ │
└─────────────────────────────────────────────────────────────┘

Comparación de Políticas​

PolíticaCriterioHealth CheckCasos de Uso
SimpleNinguno❌ NoSitios simples
WeightedPeso %✅ SíA/B testing, migración
LatencyRendimiento✅ SíApps globales
FailoverDisponibilidad✅ RequeridoDR, mantenimiento
GeolocationPaís/Continente✅ SíContenido localizado
GeoproximityDistancia + sesgo✅ SíTraffic shaping
MultivalueMúltiples IPs✅ SíLB simple

Resumen​

PolíticaCuándo usarla
SimpleUn solo endpoint, no necesita failover
WeightedDistribución controlada, A/B testing
LatencyMejor rendimiento global
FailoverAlta disponibilidad, DR
GeolocationContenido por país, cumplimiento

Próxima sección: Lab Failover