Wie kann eine Domäne zu einem ständig wechselnden Serverpool routen?

Wie kann eine Domäne zu einem ständig wechselnden Serverpool routen?

Ich bin sicher, dass dies eine einfache Lösung ist. Ich weiß nur nicht so recht, wie DNS funktioniert und ob das überhaupt mit diesem Problem zusammenhängt.

Wenn ich einen Webdienst auf Amazon EC2 betreibe, der über viele Instanzen verteilt ist, wie kann ich es so einrichten, dass mit einem einzigen Domänennamen auf den gesamten Serverpool zugegriffen werden kann, der sich von Zeit zu Zeit ändert?

Da die Instanzen in einer Sekunde vorhanden sein können, in der nächsten aber verschwunden sind (und umgekehrt), brauche ich eine Möglichkeit, zufällig ein aktives Mitglied des Clusters auszuwählen, an das weitergeleitet wird. Die Aktualisierungen müssten sofort erfolgen. Ist das überhaupt möglich, mit DNS-Caching und allem?

Antwort1

Hierzu gibt es mehrere Ansätze, von denen einige für Sie erreichbar sind.

In Ihrem Fall empfehle ich, einfach mehrere DNS-Einträge mit einer relativ kurzen TTL zu haben. Die Verteilung ist nicht optimal und Clients wählen möglicherweise nicht den Knoten mit der geringsten Latenz aus. Es ist jedoch äußerst einfach: Sie müssen lediglich DNS-Einträge hinzufügen können. Dies ist eine weit verbreitete und getestete Technik.

Wenn Sie einen Server aus dem Pool entfernen müssen, entfernen Sie einfach seine DNS-Einträge. Die meisten Clients werden ihn nach Ablauf der TTL nicht mehr verwenden. Dasselbe gilt für neue Server: Fügen Sie sie hinzu. Nach Ablauf der TTL werden die Clients sie verwenden.

Google beispielsweise verwendet dies als Teil seiner Ausgleichstechniken:

$ dig A google.com

;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             297     IN      A       74.125.77.99
google.com.             297     IN      A       74.125.77.104
google.com.             297     IN      A       74.125.77.147

Google erweitert dies, indem es Sie, sobald Sie die Website erreicht haben, auf eine Version umleitet, die in Ihrer Nähe gehostet wird (und in Ihrer Sprache vorliegt), basierend auf dem Land, in dem Sie sich vermutlich befinden. Aber das ist eine Ebene, die Sie oft nicht benötigen.

Antwort2

Die Updates müssten sofort erfolgen. Ist das überhaupt möglich, mit DNS-Caching und allem?

Nein, das ist mit DNS nicht möglich.DNS-Einträge werden mit einer Time To Live (TTL) bereitgestellt, die angibt, wie lange Caches den Eintrag verwenden dürfenohneÜberprüfung beim autoritativen DNS-Server. Und aus verschiedenen Gründen können DNS-TTLs nicht effektiv weniger als 10 Minuten betragen. DNS Round-Robining istnichtdie Lösung für den Lastenausgleich, zumindest nicht, wenn Sie Serviceverfügbarkeit benötigen. Siehe fx thisältere Frage von Jeff Atwood.

DudürfenverwendenDNS-Dienste von Drittanbietern, die DNS Round Robin mit proaktiver Überwachung kombinierender Server und automatischer Entfernung inaktiver Server aus dem DNS. Das ist keine gute Lösung, kann aber für weniger wichtige Sites gut genug sein und ist mit z. B. DNSMadeEasy oder EdgeDirector ganz einfach einzurichten.

Der Industriestandard für die Handhabung der Webserververfügbarkeit ist eineLayer 4- oder Layer 7-Load Balancervor den Webservern.

Webdienst auf Amazon EC2, verteilt auf viele Instanzen. Wie kann ich es so einrichten, dass mit einem einzigen Domänennamen auf den gesamten Serverpool zugegriffen werden kann?

Amazon bietet hierfür einen Plug'n'Play-Service an,genannt AmazonElastischer LastenausgleichIm Grunde handelt es sich dabei um einen verwalteten Dienst von Amazon, der vor Ihren EC2-Webservern einen Layer 7- (HTTP) oder Layer 4- (TCP) Load Balancer einrichtet.

Eine weitere gängige Option ist das Einrichten einer EC2-Instanz mit einem L7-Load Balancer wie nginx, HAProxy, Apsis Pound, Apache 2.2, Zeus Load Balancer oder etwas anderem (es gibt mehrere). Wenn Sie diesen Weg gehen, müssen Sie jedoch das Betriebssystem und die Lastausgleichssoftware selbst verwalten und überlegen, wie Sie die EC2-Load Balancer-Instanz selbst ausreichend hochverfügbar machen.

verwandte Informationen