Wie kann ich Probleme mit meiner gewichteten Routing-Richtlinie in Route 53 beheben?

Lesedauer: 7 Minute
0

Ich erhalte unerwartete Ergebnisse, wenn ich die DNS-Auflösung für eine gewichtete Routing-Richtlinie in Amazon Route 53 teste.

Kurzbeschreibung

Angenommen, Sie haben einen Textdatensatz (TXT) mit dem Namen „weighted.awsexampledomain.com“ erstellt. Der Datensatz hat eine Gültigkeitsdauer (TTL) von 300 Sekunden und die Gewichtungen sind folgendermaßen konfiguriert:

NameTypTTLWerteGewichtStatus der Zustandsprüfung
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 0“Gewicht=0Zustandsprüfung im Zusammenhang
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 20“Gewicht=20Zustandsprüfung im Zusammenhang
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 50“Gewicht=50Zustandsprüfung im Zusammenhang
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 70“Gewicht=70Zustandsprüfung im Zusammenhang

Auf diese Konfiguration wird in den folgenden Beispielen verwiesen.

Behebung

**Hinweis:**Wenn Sie beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Testen der gewichteten Routing-Richtlinie, um das Problem zu identifizieren

Senden Sie mehrere (über 10.000) Abfragen, um Ihre gewichtete Routing-Richtlinie zu testen. Testen Sie die DNS-Auflösung von mehreren Standorten aus oder fragen Sie direkt die autoritativen Nameserver ab, um die Richtlinie zu verstehen. Verwenden Sie die folgenden Skripts, um mehrere DNS-Abfragen für Ihren Domainnamen zu senden.

Senden Sie DNS-Abfragen mit dem rekursiven Resolver:

#!/bin/bash
for i in {1..10000}
do
domain=$(dig <domain-name> <type> @RecursiveResolver_IP +short)
echo -e  "$domain" >> RecursiveResolver_results.txt
done

Senden Sie DNS-Abfragen direkt an die autoritativen Nameserver:

#!/bin/bash
for i in {1..10000}
do
domain=$(dig <domain-name> <type> @AuthoritativeNameserver_IP +short)
echo -e  "$domain" >> AuthoritativeNameServer_results.txt
done

Beispielausgabe mit awk tool in der 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"

Verwenden Sie Ihre Testergebnisse, um Ihr spezifisches Problem zu beheben.

Ausgabe: Die Endpunktressourcen der gewichteten Datensätze erhalten nicht die erwartete Trafficrate.

Route 53 leitet Traffic auf der Grundlage der dem Datensatz zugewiesenen Gewichtung als Anteil des Gesamtgewichts aller Datensätze an Ressourcen weiter. Zwischengeschaltete DNS-Resolver speichern die DNS-Antworten für die Dauer des Datensatz-TTL im Cache. Aufgrund der zwischengespeicherten Antwort werden Clients für die Dauer nur an bestimmte Endpunkte weitergeleitet.

Beispiel

Sie fragen den Caching-DNS-Resolver 192.168.1.2 ab:

$ 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"

Beachten Sie, dass die vorherigen Ergebnisse aufgrund des Cache am rekursiven DNS-Resolver nicht den Erwartungen entsprechen.

Ausgabe: Einige gewichtete Datensätze werden nicht zurückgegeben.

Beispiel

Einige Zustandsprüfungen schlagen fehl:

NameTypTTLWerteGewichtStatus der Zustandsprüfung
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 0“Gewicht=0Zustandsprüfung erfolgreich
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 20“Gewicht=20Zustandsprüfung erfolgreich
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 50“Gewicht=50Zustandsprüfung fehlgeschlagen
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 70“Gewicht=70Zustandsprüfung erfolgreich
$ 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"

In diesem Beispiel wird „Datensatz mit Gewicht 50“ von Route 53 nicht zurückgegeben, da die Zustandsprüfung fehlschlägt.

Ausgabe: Alle gewichteten Datensätze sind fehlerhaft.

Auch wenn keiner der Datensätze in einer Gruppe von Datensätzen fehlerfrei ist, muss Route 53 dennoch eine Antwort auf die DNS-Abfragen geben. Es gibt jedoch keine Grundlage dafür, einen Datensatz einem anderen vorzuziehen. In diesem Fall betrachtet Route 53 alle Datensätze in der Gruppe als fehlerfrei. Ein Datensatz wird basierend auf der Routing-Richtlinie und den Werten ausgewählt, die Sie für jeden Datensatz angeben.

Beispiel

NameTypTTLWerteGewichtStatus der Zustandsprüfung
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 0“Gewicht=0Zustandsprüfung fehlgeschlagen
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 20“Gewicht=20Zustandsprüfung fehlgeschlagen
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 50“Gewicht=50Zustandsprüfung fehlgeschlagen
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 70“Gewicht=70Zustandsprüfung fehlgeschlagen
$ 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"

In diesem Beispiel betrachtete Route 53 alle Datensätze als fehlerfrei (Fail Open). Route 53 beantwortete die DNS-Anfragen auf der Grundlage der konfigurierten Proportionen. „Datensatz mit Gewicht 0“ wird nicht zurückgegeben, da sein Gewicht „Null“ ist.

Hinweis: Wenn Sie für einige Datensätze andere Gewichtungen als Null und für andere keine Gewichtungen festlegen, funktionieren Zustandsprüfungen genauso, als ob alle Datensätze Gewichtungen ungleich Null hätten. Es gibt jedoch Ausnahmen:

  • Route 53 berücksichtigt zunächst nur die intakten gewichteten Datensätze ungleich Null, falls vorhanden.
  • Wenn alle Datensätze ungleich Null fehlerhaft sind, berücksichtigt Route 53 die fehlerfreien, mit Null gewichteten Datensätze.

Beispiel

NameTypTTLWerteGewichtStatus der Zustandsprüfung
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 0“Gewicht=0Bestandene Zustandsprüfung
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 20“Gewicht=20Bestandene Zustandsprüfung
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 50“Gewicht=50Zustandsprüfung fehlgeschlagen
weighted.awsexampledomain.com.TXT300„Datensatz mit Gewicht 70“Gewicht=70Zustandsprüfung fehlgeschlagen
$ 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"

In diesem Beispiel berücksichtigt Route 53 den Datensatz mit der Gewichtung 0 nicht. Sofern nicht alle gewichteten Datensätze fehlerhaft sind, gibt Route 53 die mit Null gewichteten Datensätze nicht zurück.

Wenn Sie für alle Datensätze in einer Gruppe die gleiche Gewichtung festlegen, wird der Datenverkehr mit der gleichen Wahrscheinlichkeit an alle intakten Ressourcen weitergeleitet. Wenn Sie für alle Datensätze in einer Gruppe die Gewichtung „Null“ festlegen, wird der Datenverkehr mit der gleichen Wahrscheinlichkeit an alle intakten Ressourcen weitergeleitet.

Ähnliche Informationen

Auswahl einer Routing-Richtlinie

So wählt Amazon Route 53 Datensätze aus, wenn die Zustandsprüfung konfiguriert ist

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren