Comment puis-je résoudre les problèmes liés à ma politique de routage pondéré dans Route 53 ?
J'obtiens des résultats inattendus lorsque je teste la résolution DNS pour une politique de routage pondérée dans Amazon Route 53.
Brève description
Supposons que vous ayez créé un enregistrement texte (TXT) portant le nom « weighted.awsexampledomain.com ». La durée de vie (TTL) de l'enregistrement est de 300 secondes et ses pondérations sont configurées comme suit :
Nom | Type | TTL | Valeurs | Poids | Statut de surveillance de l’état |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 0 » | Poids=0 | Surveillance de l’état associé |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 20 » | Poids=20 | Surveillance de l’état associé |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 50 » | Poids=50 | Surveillance de l’état associé |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 70 » | Poids=70 | Surveillance de l’état associé |
Cette configuration est référencée dans les exemples suivants.
Résolution
**Remarque :**Si vous recevez des erreurs lors de l'exécution des commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version la plus récente de l'interface de ligne de commande AWS.
Testez votre politique de routage pondéré pour identifier le problème
Envoyez plusieurs requêtes (plus de 10 000) pour tester votre politique de routage pondéré. Testez la résolution DNS à partir de plusieurs emplacements ou interrogez directement les serveurs de noms faisant autorité pour comprendre la politique. Utilisez les scripts suivants pour envoyer plusieurs requêtes DNS pour votre nom de domaine.
Envoyez des requêtes DNS à l'aide du résolveur récursif :
#!/bin/bash for i in {1..10000} do domain=$(dig <domain-name> <type> @RecursiveResolver_IP +short) echo -e "$domain" >> RecursiveResolver_results.txt done
Envoyez des requêtes DNS directement aux serveurs de noms officiels :
#!/bin/bash for i in {1..10000} do domain=$(dig <domain-name> <type> @AuthoritativeNameserver_IP +short) echo -e "$domain" >> AuthoritativeNameServer_results.txt done
Exemple de sortie utilisant l'outil awk de l'AWS CLI :
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @172.16.173.64 +short); echo -e "$domain" >> RecursiveResolver_results.txt; done $ awk ' " " ' RecursiveResolver_results.txt | sort | uniq -c 1344 "Record with Weight 20" 3780 "Record with Weight 50" 4876 "Record with Weight 70"
Utilisez les résultats de vos tests pour résoudre votre problème spécifique
Problème : Les ressources des points de terminaison des enregistrements pondérés ne reçoivent pas le ratio de trafic attendu.
Route 53 envoie le trafic vers les ressources en fonction du poids attribué à l'enregistrement par rapport au poids total de tous les enregistrements. Les résolveurs DNS intermédiaires mettent en cache les réponses DNS pendant toute la durée de l'enregistrement TTL. Les clients ne sont dirigés que vers des points de terminaison spécifiques pendant la durée en raison de la réponse mise en cache.
Exemple
Vous interrogez sur le résolveur DNS de mise en cache 192.168.1.2 :
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @192.168.1.2 +short); echo -e "$domain" >> CachingResolver_results.txt; done $ awk ' " " ' CachingResolver_results.txt | sort | uniq -c 3561 "Record with Weight 20" 1256 "Record with Weight 50" 5183 "Record with Weight 70"
Notez que les résultats précédents ne sont pas ceux attendus en raison du cache du résolveur DNS récursif.
Problème : Certains enregistrements pondérés ne sont pas renvoyés.
- Si vous associez des contrôles de surveillance de l’état à un ensemble d'enregistrements de ressources, Route 53 ne répond avec l'enregistrement que si le contrôle de surveillance de l’état associé est réussi. Pour plus d'informations, consultez Comment Amazon Route 53 détermine si un contrôle de surveillance de l’état est sain.
- Si un REER inscrit dans une police n'est pas assorti d'un contrôle de surveillance de l’état, il est toujours considéré comme sain. Il est également inclus dans les réponses possibles aux requêtes DNS. Les enregistrements qui échouent aux contrôles de surveillance de l’état ne sont pas renvoyés. Vérifiez la configuration du contrôle de surveillance de l’état et assurez-vous qu'elle est signalée comme saine.
- Si vous utilisez « Évaluer l'état de la cible » alors que l'enregistrement des ressources est défini, Route 53 s'appuie sur le contrôle de surveillance de l’état indiqué par la ressource finale. Pour plus d'informations, consultez Pourquoi mon enregistrement d'alias pointe-t-il vers un Application Load Balancer marqué comme non sain lorsque j'utilise « Évaluer l'état de la cible » ?
Exemple
Certaines surveillances de l’état échouent :
Nom | Type | TTL | Valeurs | Poids | Statut de surveillance de l’état |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 0 » | Poids=0 | Surveillance de l’état réussi |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 20 » | Poids=20 | Surveillance de l’état réussi |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 50 » | Poids=50 | Échec de la surveillance de l’état |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 70 » | Poids=70 | Surveillance de l’état réussi |
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @192.168.1.2 +short); echo -e "$domain" >> HealthCheck_results.txt; done $ awk ' " " ' HealthCheck_results.txt | sort | uniq -c 3602 "Record with Weight 20" 6398 "Record with Weight 70"
Dans cet exemple, le « Enregistrer avec un poids de 50 » n'est pas renvoyé par Route 53 car sa surveillance de l’état échoue.
Problème : Tous les enregistrements pondérés ne sont pas sains.
Même si aucun des enregistrements d'un groupe d'enregistrements n'est sain, Route 53 doit tout de même fournir une réponse aux requêtes DNS. Cependant, il n'y a aucune raison de choisir un enregistrement plutôt qu'un autre. Dans ce cas, Route 53 considère que tous les enregistrements du groupe sont sains. Un enregistrement est sélectionné en fonction de la politique de routage et des valeurs que vous spécifiez pour chaque enregistrement.
Exemple
Nom | Type | TTL | Valeurs | Poids | Statut de surveillance de l’état |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 0 » | Poids=0 | Échec de la surveillance de l’état |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 20 » | Poids=20 | Échec de la surveillance de l’état |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 50 » | Poids=50 | Échec de la surveillance de l’état |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 70 » | Poids=70 | Échec de la surveillance de l’état |
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @205.251.194.16 +short); echo -e "$domain" >> All_UnHealthy_results.txt; done $ awk ' " " ' All_UnHealthy_results.txt | sort | uniq -c 1446 "Record with Weight 20" 3554 "Record with Weight 50" 5000 "Record with Weight 70"
Dans cet exemple, Route 53 a considéré que tous les enregistrements étaient sains (échec d'ouverture). Route 53 a répondu aux demandes DNS en fonction des proportions configurées. « Enregistrer avec un poids de 0 » n'est pas renvoyé car son poids est nul.
Remarque : Si vous définissez des poids différents de zéro pour certains enregistrements et des poids nuls pour d'autres, les surveillances de l’état fonctionnent de la même manière que lorsque tous les enregistrements ont des poids différents de zéro. Il existe toutefois quelques exceptions :
- Route 53 ne prend initialement en compte que les enregistrements sains pondérés non nuls, le cas échéant.
- Si tous les enregistrements non nuls ne sont pas sains, Route 53 considère les enregistrements sains à pondération nulle.
Exemple
Nom | Type | TTL | Valeurs | Poids | Statut de surveillance de l’état |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 0 » | Poids=0 | Surveillance de l’état adopté |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 20 » | Poids=20 | Surveillance de l’état adopté |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 50 » | Poids=50 | Échec de la surveillance de l’état |
weighted.awsexampledomain.com. | TXT | 300 | « Enregistrer avec un poids de 70 » | Poids=70 | Échec de la surveillance de l’état |
$ for i in {1..10000}; do domain=$(dig weighted.awsexampledomain.com. TXT @192.168.1.2 +short); echo -e "$domain" >> HealthCheck_results.txt; done $ awk ' " " ' HealthCheck_results.txt | sort | uniq -c 10000 "Record with Weight 20"
Dans cet exemple, Route 53 ne prend pas en compte l'enregistrement dont le poids est 0. À moins que tous les enregistrements pondérés ne soient non sains, Route 53 ne renvoie pas les enregistrements à pondération nulle.
Si vous définissez un poids égal pour tous les enregistrements d'un groupe, le trafic est acheminé vers toutes les ressources saines avec une probabilité égale. Si vous définissez le « Poids » sur zéro pour tous les enregistrements d'un groupe, le trafic est acheminé vers toutes les ressources saines avec une probabilité égale.
Informations connexes
Contenus pertinents
- demandé il y a un anlg...
- demandé il y a un anlg...
- demandé il y a 4 moislg...
- demandé il y a 4 moislg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a un an