2010-12-20 4 views
3

Derzeit konfiguriere ich einen Server-Pool mit AWS. Es ist ein einfaches Setup mit zwei Datenbankservern, einem skalierbaren Server-Array und zwei Load-Balancern. Bei jeder Maschine steht ein Failover bereit und es sollte alles ziemlich robust sein.DNS Round Robin sehr langsame Anforderungen im Failover-Szenario

Die Load Balancer sollten Failover durch Round Robin DNS möglich sein. In einem Happy-Day-Szenario werden also beide Maschinen getroffen und verteilen den Datenverkehr über das Array. Wenn eine dieser Maschinen nicht verfügbar ist, sollte Round Robin DNS in Verbindung mit einer erneuten Client-Browser-Überprüfung dafür sorgen, dass Browser ihren Zielhost auf die Maschine verschieben, die noch aktiv ist, sobald sie eine Zeitüberschreitung erreicht haben. Dies ist nicht etwas, das ich gefunden habe, aber scheint eine sehr gute Lösung zu sein.

Das Problem, das ich erfahre, ist wie folgt. Die Verschiebung geschieht tatsächlich, aber nicht nur einmal für die fehlgeschlagene Anfrage, sondern für jede weitere Anfrage vom selben Browser. Eine einfache Seitenanforderung dauert also 21 Sekunden, danach dauert das Laden aller Bilder 21 Sekunden. Die gesamte folgende Seitenanforderung dauert auch so lange. So funktioniert das Failover aber ist zur selben Zeit völlig nutzlos.

Ausgabe von einem Graben:
; < < >> DiG 9.6.1-P2 < < >> beispiel.com
;; globale Optionen: + cmd
;; Antwort erhalten:
;; - >> HEADER < < - Opcode: QUERY, Status: NOERROR, ID: 45224
;; Flaggen: qr rd ra; ANFRAGE: 1, ANTWORT: 2, AUTORITÄT: 0, ZUSÄTZLICH: 0

;; FRAGE SECTION:
; beispiel.com. IN A

;; ANTWORT-ABSCHNITT:
www.example.com. 86400 IN A 1.2.3.4
www.beispiel.de. 86400 IN A 1.2.3.4

;; Abfragezeit: 31 ms
;; SERVER: 172.16.0.23 # 53 (172.16.0.23)
;; WANN: Mo Dez 20 12:21:25 2010
;; MSG GRÖSSE rcvd: 67

Vielen Dank im Voraus!

Maarten Hoekstra
Kingsquare Information Services

Antwort

4

Wenn der DNS-Server eine Liste von IP-Adressen an den Client gibt, wird diese Liste bestellt (möglicherweise in einer rotierenden Art, dh nachfolgende DNS könnte sie in einer anderen Reihenfolge zurückgeben). Es ist wahrscheinlich, dass der Browser die DNS-Antwort zwischenspeichert, d. H. Die Liste, die er ursprünglich erhalten hat. Es wird dann nicht angenommen, dass eine fehlgeschlagene Verbindung bedeutet, dass der Server inaktiv ist, aber die Liste in der gleichen Reihenfolge jedes Mal erneut versuchen wird.

So Round-Robin-DNS ist für den Lastausgleich bestenfalls; Es ist nicht sehr gut geeignet, Fehlertoleranz zu unterstützen.

+0

Das unterscheidet sich tatsächlich von meinem vorherigen Verständnis des clientseitigen Verhaltens von DNS Round Robin. Es passt perfekt zu den Symptomen, was bedeuten würde, die IP von DNS zusammen mit der Reparatur der Maschine zu entfernen wäre die einzige Lösung. Nicht wirklich angenehme Neuigkeiten, aber trotzdem danke! –

0

Es gibt einen Grund, warum wir dieses als "Load Balancing des armen Mannes." Es funktioniert, aber Sie sind die Gnade des Resolvers, und die Auszeiten abhängig davon, welche IP zuerst von Ihrem DNS-Server zurückgegeben wird. Sie können etwas wie dnsmadeeasy.com und ihre DNS Failover betrachten (es gibt andere, die dies tun, aber dnsmadeeasy ist die, die ich kenne). Grundsätzlich überwachen sie App-Verfügbarkeit und können schnell die DNS-Änderungen in Bezug auf den Anwendungsstatus flux.

+0

Ton gut, aber leider bin ich an einen DNS-Anbieter gebunden, der dies nicht bietet. –

+0

gut bietet Ihr DNS-Provider die Möglichkeit, echte niedrige TTLS und haben eine API? Sie können die Datensätze hinzufügen/entfernen. Ich bin überrascht, dass AWS nicht etwas hat, das gepoolten Maschinen erlauben würde, eine IP zu teilen. Viel Glück ... – Doon