Wie kann ich Probleme mit meiner gewichteten Routing-Richtlinie in Route 53 beheben?
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:
Name | Typ | TTL | Werte | Gewicht | Status der Zustandsprüfung |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 0“ | Gewicht=0 | Zustandsprüfung im Zusammenhang |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 20“ | Gewicht=20 | Zustandsprüfung im Zusammenhang |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 50“ | Gewicht=50 | Zustandsprüfung im Zusammenhang |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 70“ | Gewicht=70 | Zustandsprü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.
- Wenn Sie Zustandsprüfungen einem Ressourcendatensatz zuordnen, antwortet Route 53 nur dann mit dem Datensatz, wenn die zugehörige Zustandsprüfung erfolgreich ist. Weitere Informationen finden Sie unter So ermittelt Amazon Route 53, ob eine Zustandsprüfung fehlerfrei ist.
- Wenn einem RRSet in einer Richtlinie keine Zustandsprüfung beigefügt ist, wird sie immer als fehlerfrei angesehen. Sie ist auch in den möglichen Antworten auf DNS-Abfragen enthalten. Datensätze, die die Zustandsprüfungen nicht bestehen, werden nicht zurückgegeben. Überprüfen Sie die Konfiguration der Zustandsprüfung und stellen Sie sicher, dass sie als fehlerfrei gemeldet wurde.
- Wenn Sie „Evaluate Target Health“ mit dem Ressourcendatensatz verwenden, stützt sich Route 53 auf die von der Endressource gemeldete Zustandsprüfung. Weitere Informationen finden Sie unter Warum ist mein Aliaseintrag, der auf einen Application Load Balancer verweist, als fehlerhaft markiert, wenn ich „Evaluate Target Health“ verwende?
Beispiel
Einige Zustandsprüfungen schlagen fehl:
Name | Typ | TTL | Werte | Gewicht | Status der Zustandsprüfung |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 0“ | Gewicht=0 | Zustandsprüfung erfolgreich |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 20“ | Gewicht=20 | Zustandsprüfung erfolgreich |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 50“ | Gewicht=50 | Zustandsprüfung fehlgeschlagen |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 70“ | Gewicht=70 | Zustandsprü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
Name | Typ | TTL | Werte | Gewicht | Status der Zustandsprüfung |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 0“ | Gewicht=0 | Zustandsprüfung fehlgeschlagen |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 20“ | Gewicht=20 | Zustandsprüfung fehlgeschlagen |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 50“ | Gewicht=50 | Zustandsprüfung fehlgeschlagen |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 70“ | Gewicht=70 | Zustandsprü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
Name | Typ | TTL | Werte | Gewicht | Status der Zustandsprüfung |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 0“ | Gewicht=0 | Bestandene Zustandsprüfung |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 20“ | Gewicht=20 | Bestandene Zustandsprüfung |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 50“ | Gewicht=50 | Zustandsprüfung fehlgeschlagen |
weighted.awsexampledomain.com. | TXT | 300 | „Datensatz mit Gewicht 70“ | Gewicht=70 | Zustandsprü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
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren