Comment puis-je résoudre les problèmes liés à ma politique de routage pondéré dans Route 53 ?

Lecture de 9 minute(s)
0

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 :

NomTypeTTLValeursPoidsStatut de surveillance de l’état
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 0 »Poids=0Surveillance de l’état associé
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 20 »Poids=20Surveillance de l’état associé
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 50 »Poids=50Surveillance de l’état associé
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 70 »Poids=70Surveillance 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.

Exemple

Certaines surveillances de l’état échouent :

NomTypeTTLValeursPoidsStatut de surveillance de l’état
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 0 »Poids=0Surveillance de l’état réussi
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 20 »Poids=20Surveillance de l’état réussi
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 50 »Poids=50Échec de la surveillance de l’état
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 70 »Poids=70Surveillance 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

NomTypeTTLValeursPoidsStatut de surveillance de l’état
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 0 »Poids=0Échec de la surveillance de l’état
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 20 »Poids=20Échec de la surveillance de l’état
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 50 »Poids=50Échec de la surveillance de l’état
weighted.awsexampledomain.com.TXT300« 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

NomTypeTTLValeursPoidsStatut de surveillance de l’état
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 0 »Poids=0Surveillance de l’état adopté
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 20 »Poids=20Surveillance de l’état adopté
weighted.awsexampledomain.com.TXT300« Enregistrer avec un poids de 50 »Poids=50Échec de la surveillance de l’état
weighted.awsexampledomain.com.TXT300« 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

Choix d'une politique de routage

Comment Amazon Route 53 choisit les enregistrements lors de la configuration du contrôle de surveillance de l’état de santé

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an