2016-07-05 20 views
0

Ich habe einige Hosts, die auf Nachfrage in EC2 kommen und wenn sie den Dienst, der sie startet, erstellt einen A-Datensatz in Route53 unter einer vorhandenen Zone.Ursache von DNS Ein Datensatz Verzögerungen

Die A-Datensätze haben die Form: randomid.example.com. Es ist also kein Update oder Änderung eines bestehenden Name/IP-Paares, es ist ein komplett neuer Eintrag. Es sollte keine Laufzeitverzögerung geben.

Was ich sehe, ist, dass, nachdem der Eintrag hinzugefügt und für Nachschlagen mit DNS auf einem der Amazon-Server verfügbar ist, kann mein eigener Client-PC den Namen für wie 5-10 Minuten nicht auflösen. Sie pingen es an, und ich würde erwarten, eine IP dafür zu sehen. Aber ich bekomme einfach "keinen solchen Gastgeber".

Wenn ich meinen Nameservereintrag /etc/resolv.conf von meinem lokalen Nameserver in 8.8.8.8 (google dns) ändere, wird es aufgelöst. Ich wechsle zurück und es löst sich nicht auf. Dies scheint mit Route53 nichts zu tun zu haben, da Google antwortet.

Was würde das verursachen? Sollte nicht mein lokaler Resolver die relevanten Nameserver und eventuell den Nameserver für example.com abfragen, der eine Antwort für randomid.example.com erhalten soll?

+0

Was lässt Sie denken, dass neue Einträge keine Verzögerung haben? – Peterdk

+0

@Peterdk - Es ist ein brandneuer Eintrag. Sie geben keine neue IP-Adresse an einen vorhandenen A-Eintrag in der Welt weiter, wo sie möglicherweise zwischengespeichert wird. Daher würde ein Resolver eine vollständige Suche durchführen, zuerst auf .com und dann auf .example.com, um die IP zurück zum Client zu erhalten. Aber ich bin mir nicht sicher, warum es nicht von meinem lokalen DNS-Nameserver und dem Nameserver meines ISP gelöst wird. – Matt

+0

hmm, vielleicht hängt es mit Anycast zusammen. Route53 benutzt das. Es ist also eine andere Art von Ausbreitungsverzögerung. – Matt

Antwort

1

Es sollte keine Laufzeitverzögerung geben.

Ja, sollte es sein.

Alle DNS-Konfiguration hat eine "Propagation Delay". ¹

Im Fall von neuen Datensatz, eine Suche nach einem Host-Namen vor der Aufzeichnung ist von den autoritativen Nameservern zu negativen Caching tatsächlich zur Verfügung: wenn ein Resolver eines nicht vorhandenen Datensatz sucht, die NXDOMAIN Antwort ist zwischengespeichert durch den Resolver für eine Zeitspanne, und diese Antwort wird für die nachfolgende Anforderung zurückgegeben, bis die Standard-TTL abläuft und die Antwort aus dem Cache des Resolvers entfernt wird.

Negatives Caching ist nützlich, da es die Antwortzeit für negative Antworten reduziert. Es verringert auch die Anzahl der Nachrichten, die zwischen Resolvern und Nameservern gesendet werden müssen, und damit den gesamten Netzwerkverkehr.

https://tools.ietf.org/html/rfc2308

Wenn Sie verwenden den neuen Datensatz abzufragen, werden Sie die TTL sehen auf 0 heruntergezählt Sobald das geschieht, starten Sie die erwartete Antwort zu sehen. Unter Linux ist das watch Dienstprogramm dafür praktisch, wie in watch -n 1 'dig example.com'.

Der Timer sollte von der minimalen TTL eingestellt werden, was SOA Rekord in Ihrem Hosting-Zone zu finden ist:

Die minimale Lebenszeit (TTL). Dieser Wert gibt an, wie lange ein NXDOMAIN-Ergebnis, das angibt, dass eine Domäne nicht existiert, von einem DNS-Resolver zwischengespeichert werden sollte. Das Cachen dieses negativen Ergebnisses wird als negatives Caching bezeichnet. Die Dauer des negativen Zwischenspeicherns ist der kleinere Wert der TTL des SOA-Eintrags oder der Wert des minimalen TTL-Felds. Die Standard-Mindest-TTL für Amazon Route 53-SOA-Datensätze beträgt 900 Sekunden.

http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/SOA-NSrecords.html

Es ist die Quelle Ihrer 5-10 Minuten. Es ist tatsächlich ein schlimmster Fall von 15 Minuten (900 Sekunden).

Durch das Reduzieren dieses Timers verringert sich die Zeit, die gut verhaltende Resolver die Tatsache cachen, dass der Datensatz (noch) nicht existiert.

"Großartig", protestieren Sie, "aber ich habe den Hostnamen nicht abgefragt, bevor er existiert. Was nun?"

Wahrscheinlich haben Sie das getan, weil Route 53 Aufzeichnungen nicht sofort sichtbar macht. Es gibt eine kurze Verzögerung zwischen dem Zeitpunkt, zu dem eine Änderung an einer gehosteten Zone vorgenommen wird, und dem Zeitpunkt, an dem Route 53 mit der Rückgabe der Datensätze beginnt.

Die Route 53 API unterstützen die GetChange Aktion, die nicht INSYNC bis den ritativen Server für Ihre Hosting-Zone zurückkehrt die erwartete Antwort für die Änderung (und natürlich zurückgeben sollte diese verwendet „Änderung“ in dem Sinne, dass beide „insert "und" update "sind eine" Änderung ").

Sie können dies auch ermitteln, indem Sie direkt einen der Server abfragen, die speziell Ihrer gehosteten Zone zugewiesen sind (wie unter anderem in der Konsole zu sehen).

$ dig @ns-xxxx.awsdns-yy.com example.com 

Weil Sie einen autoritativen Server direkt abfragen, werden Sie das Ergebnis der Änderung sobald sie vom Server zur Verfügung hat, weil es keine Resolver auf dem Weg ist, die Antworten zwischengespeichert werden.


¹ Für die Zwecke dieser Antwort, ich bin die Tatsache zu beschönigen, was gemeinhin als „Ausbreitungsverzögerung“ in DNS bezeichnet wird, ist eigentlich ein nichts dergleichen - es ist eigentlich ein TTL-basierte Cache-Eviction-Verzögerung für vorhandene Datensätze.