Politiques de Routage Route 53
Vue d'Ensemble
Route 53 offre plusieurs politiques de routage pour diriger le trafic selon différents critères.
┌─────────────────────────────────────────────────────────────┐
│ POLITIQUES DE ROUTAGE │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ SIMPLE │ │ Une seule destination │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ WEIGHTED │ │ Distribution par poids │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ LATENCY │ │ Plus faible latence │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ FAILOVER │ │ Basculement automatique │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ GEOLOCATION │ │ Selon la région utilisateur │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ GEOPROXIMITY │ │ Selon distance + biais │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ MULTIVALUE │ │ Multiple réponses + health │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
1. Simple Routing
Le routage le plus basique : une requête = une réponse.
┌─────────────────────────────────────────────────────────────┐
│ SIMPLE ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Utilisateur Route 53 │
│ │ │ │
│ │ "www.example.com?" │ │
│ ├─────────────────────────────►│ │
│ │ │ │
│ │ 192.0.2.44 │ │
│ │◄─────────────────────────────┤ │
│ │ │ │
│ │ (ou plusieurs IPs, ordre aléatoire) │
│ │ 192.0.2.44, 192.0.2.45 │
│ │ │ │
│ │
│ Caractéristiques : │
│ • Pas de health checks │
│ • Si plusieurs IPs, le client choisit │
│ • Le plus simple, mais pas de failover │
│ │
│ Cas d'usage : │
│ • Site simple avec une seule ressource │
│ • Développement/test │
│ │
└─────────────────────────────────────────────────────────────┘
2. Weighted Routing
Distribution du trafic selon des poids assignés.
┌─────────────────────────────────────────────────────────────┐
│ WEIGHTED ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Configuration : │
│ • Record 1 : 192.0.2.44 (poids: 70) │
│ • Record 2 : 192.0.2.45 (poids: 20) │
│ • Record 3 : 192.0.2.46 (poids: 10) │
│ │
│ Résultat : │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 100 requêtes │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │▓▓▓▓▓▓▓▓▓▓▓▓▓▓│░░░░░░│████│ │ │ │
│ │ │ 70% │ 20% │ 10%│ │ │ │
│ │ │ .44 │ .45 │ .46│ │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Cas d'usage : │
│ • A/B testing (90% version A, 10% version B) │
│ • Migration progressive (shift progressif) │
│ • Distribution de charge entre régions │
│ │
│ Note : Poids 0 = aucun trafic vers cette cible │
│ │
└─────────────────────────────────────────────────────────────┘
Configuration CLI
# Record 1 - Production (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 vers la région AWS avec la latence la plus faible.
┌─────────────────────────────────────────────────────────────┐
│ LATENCY-BASED ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Route 53 mesure la latence et dirige vers la région │
│ la plus rapide pour l'utilisateur. │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 🇨🇦 Utilisateur Canada │ │
│ │ │ │ │
│ │ │ Quelle région ? │ │
│ │ ▼ │ │
│ │ ┌─────────────┐ │ │
│ │ │ Route 53 │ │ │
│ │ │ │ │ │
│ │ │ Latence : │ │ │
│ │ │ us-east: 20ms ← Plus rapide ! │ │
│ │ │ eu-west: 80ms │ │
│ │ │ ap-south: 200ms │ │
│ │ └──────┬──────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ Réponse : ALB us-east-1 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Cas d'usage : │
│ • Application multi-région │
│ • Améliorer l'expérience utilisateur globalement │
│ • Réduire la latence pour tous les utilisateurs │
│ │
└─────────────────────────────────────────────────────────────┘
4. Failover Routing
Basculement automatique vers une ressource de secours.
┌─────────────────────────────────────────────────────────────┐
│ FAILOVER ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Configuration : │
│ • Primary : ALB production (avec health check) │
│ • Secondary : Site statique S3 (page de maintenance) │
│ │
│ ÉTAT NORMAL (Primary healthy) │
│ ───────────────────────────── │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Utilisateur ──────► Route 53 ──────► ALB Prod │ │
│ │ │ ✓ Healthy │ │
│ │ │ │ │
│ │ └──╳── S3 (ignoré) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ÉTAT FAILOVER (Primary unhealthy) │
│ ───────────────────────────────── │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Utilisateur ──────► Route 53 ──╳── ALB Prod │ │
│ │ │ ✗ Unhealthy │ │
│ │ │ │ │
│ │ └──────► S3 Maintenance │ │
│ │ "Site en │ │
│ │ maintenance" │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Cas d'usage : │
│ • Disaster Recovery │
│ • Page de maintenance automatique │
│ • Basculement vers région secondaire │
│ │
└─────────────────────────────────────────────────────────────┘
Health Checks
┌─────────────────────────────────────────────────────────────┐
│ HEALTH CHECKS ROUTE 53 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Types de Health Checks : │
│ │
│ 1. ENDPOINT │
│ ───────── │
│ Vérifie un endpoint HTTP/HTTPS/TCP │
│ • URL : https://example.com/health │
│ • Port : 443 │
│ • Intervalle : 30 secondes │
│ • Seuil : 3 échecs = unhealthy │
│ │
│ 2. CLOUDWATCH ALARM │
│ ───────────────── │
│ Basé sur une alarme CloudWatch │
│ • Si alarme en état ALARM → unhealthy │
│ • Utile pour métriques internes │
│ │
│ 3. CALCULATED │
│ ────────── │
│ Combine plusieurs health checks │
│ • OR : healthy si au moins 1 est healthy │
│ • AND : healthy si tous sont healthy │
│ │
│ Configuration : │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Protocol: HTTPS │ │
│ │ Host: www.example.com │ │
│ │ Path: /health │ │
│ │ Port: 443 │ │
│ │ Request Interval: 30 seconds │ │
│ │ Failure Threshold: 3 │ │
│ │ String Matching: "OK" (optionnel) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
5. Geolocation Routing
Routage basé sur la localisation géographique de l'utilisateur.
┌─────────────────────────────────────────────────────────────┐
│ GEOLOCATION ROUTING │
├─────────────────────────────────────────────────────────────┤
│ │
│ Le trafic est dirigé selon le pays/continent de │
│ l'utilisateur, PAS selon la latence. │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 🇫🇷 France → serveur-fr.example.com │ │
│ │ 🇩🇪 Allemagne → serveur-de.example.com │ │
│ │ 🇬🇧 UK → serveur-uk.example.com │ │
│ │ 🌍 Europe (autre) → serveur-eu.example.com │ │
│ │ 🌎 Default → serveur-us.example.com │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Cas d'usage : │
│ • Contenu localisé (langue, devise) │
│ • Restrictions légales (GDPR, contenu géo-restreint) │
│ • Conformité réglementaire │
│ • Servir du contenu spécifique par région │
│ │
│ ⚠️ Important : │
│ Toujours configurer un record "Default" pour les │
│ utilisateurs non mappés ! │
│ │
└─────────────────────────────────────────────────────────────┘
Comparaison des Politiques
| Politique | Critère | Health Check | Cas d'Usage |
|---|---|---|---|
| Simple | Aucun | ❌ Non | Sites simples |
| Weighted | Poids % | ✅ Oui | A/B testing, migration |
| Latency | Performance | ✅ Oui | Apps globales |
| Failover | Disponibilité | ✅ Requis | DR, maintenance |
| Geolocation | Pays/Continent | ✅ Oui | Contenu localisé |
| Geoproximity | Distance + biais | ✅ Oui | Traffic shaping |
| Multivalue | Multiple IPs | ✅ Oui | LB simple |
Résumé
| Politique | Quand l'utiliser |
|---|---|
| Simple | Un seul endpoint, pas besoin de failover |
| Weighted | Distribution contrôlée, A/B testing |
| Latency | Meilleure performance mondiale |
| Failover | Haute disponibilité, DR |
| Geolocation | Contenu par pays, conformité |
Prochaine section : Lab Failover