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ítica | Criterio | Health Check | Casos de Uso |
|---|---|---|---|
| Simple | Ninguno | ❌ No | Sitios simples |
| Weighted | Peso % | ✅ Sí | A/B testing, migración |
| Latency | Rendimiento | ✅ Sí | Apps globales |
| Failover | Disponibilidad | ✅ Requerido | DR, mantenimiento |
| Geolocation | País/Continente | ✅ Sí | Contenido localizado |
| Geoproximity | Distancia + sesgo | ✅ Sí | Traffic shaping |
| Multivalue | Múltiples IPs | ✅ Sí | LB simple |
Resumen
| Política | Cuándo usarla |
|---|---|
| Simple | Un solo endpoint, no necesita failover |
| Weighted | Distribución controlada, A/B testing |
| Latency | Mejor rendimiento global |
| Failover | Alta disponibilidad, DR |
| Geolocation | Contenido por país, cumplimiento |
Próxima sección: Lab Failover