Aller au contenu principal

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​

PolitiqueCritèreHealth CheckCas d'Usage
SimpleAucun❌ NonSites simples
WeightedPoids %✅ OuiA/B testing, migration
LatencyPerformance✅ OuiApps globales
FailoverDisponibilité✅ RequisDR, maintenance
GeolocationPays/Continent✅ OuiContenu localisé
GeoproximityDistance + biais✅ OuiTraffic shaping
MultivalueMultiple IPs✅ OuiLB simple

Résumé​

PolitiqueQuand l'utiliser
SimpleUn seul endpoint, pas besoin de failover
WeightedDistribution contrôlée, A/B testing
LatencyMeilleure performance mondiale
FailoverHaute disponibilité, DR
GeolocationContenu par pays, conformité

Prochaine section : Lab Failover