Verwenden von Amazon Load Balancers zum Weiterleiten von Datenverkehr an private Server außerhalb von Amazon

7

Ich möchte Amazon Elastic Load Balancing (ELB) verwenden, um Ausfallzeiten bei einem Serverausfall zu reduzieren. Grundsätzlich möchte ich die relevanten DNS-Einträge nicht ändern und auf die DNS-Weitergabe auf der ganzen Welt warten. Ich möchte lediglich den Datenverkehr auf einen anderen Computer umleiten, der meine App bedient.

Fast alle meine Server sind jedoch keine EC2-Instanzen, sondern VPS- oder dedizierte Server eines Unternehmens, das nichts mit Amazon zu tun hat.

Ist es möglich, eine Kombination von Amazon-Diensten (insbesondere ELB) zu verwenden, mit der ich einen Domainnamen auf einen elastischen Load Balancer verweisen und Anforderungen an 1-2 Server außerhalb des Amazon-Netzwerks weiterleiten kann?

Wenn sich die IP des Balancers ändert, funktioniert dies offensichtlich nicht (kann dann keinen Root-Domain-Namen darauf verweisen). Könnten Sie dem Balancer jedoch eine elastische IP zuweisen und dann Ihren Domainnamen darauf verweisen + ihn so konfigurieren, dass Anforderungen an Non-Amazon-PrivateServer1 und Non-Amazon-PrivateServer2 weitergeleitet werden?

Emanuil Tolev
quelle
1
Beachten Sie, dass Sie einem Elastic Load Balancer auch keine elastische IP zuweisen können, wie ich es in meiner Frage vorgeschlagen habe. AWS hat dies seit Jahren nicht mehr zugelassen und zum Zeitpunkt der Veröffentlichung dieses Kommentars ist dies immer noch nicht möglich.
Emanuil Tolev

Antworten:

7

ELB sendet nur Datenverkehr an EC2-Instanzen.

Sie könnten ein paar Nginx EC2-Instanzen hinter einem ELB-Proxy-Verkehr zu Ihren realen Servern haben, oder Sie könnten einfach den einfachen Weg gehen und Ihre DNS-TTL auf etwa 10 Minuten reduzieren, damit Änderungen schneller wiedergegeben werden.

ceejayoz
quelle
5

Zum 31. August 2017 unterstützen die Application Load Balancer zusätzlich zu den Instanz-IDs IP-Adressen als Ziele :

Wir freuen uns, Ihnen mitteilen zu können, dass Application Load Balancers jetzt Datenverkehr an AWS-Ressourcen verteilen können, indem sie zusätzlich zu den Instanz-IDs ihre IP-Adressen als Ziele verwenden. Sie können den Lastausgleich auch auf Ressourcen außerhalb der VPC durchführen, die den Lastausgleich hosten, indem Sie deren IP-Adressen als Ziele verwenden. Dies umfasst Ressourcen in Peered VPCs, EC2-Classic und lokalen Standorten, die über AWS Direct Connect oder eine VPN-Verbindung erreichbar sind. Der Lastenausgleich zwischen AWS und lokalen Ressourcen mit demselben Lastenausgleich erleichtert Ihnen die Migration in die Cloud, den Burst in die Cloud oder das Failover in die Cloud.

mrg2k8
quelle
4
Wenn ich das richtig lese, erlauben sie immer noch keine willkürlichen IPs außerhalb von Amazon.
Ceejayoz
Ja, das erlauben sie leider nicht.
Machisuji
4

Warum nicht Route53 mit Gesundheitsprüfungen verwenden?

Zuerst erstellen Sie eine IP-basierte Integritätsprüfung für jeden Ihrer Server. Diese Überprüfungen können einfach sein und nur den HTTP 200-Status für eine bestimmte Anforderung überwachen. oder Sie können erweiterte Überprüfungen erstellen, die nach einer bestimmten Zeichenfolge im Anforderungsergebnis suchen.

Wenn dies noch nicht geschehen ist, erstellen Sie als Nächstes eine gehostete Zone für die Domäne, die Sie in Route53 verwenden. und versorgen Sie den Registrar Ihrer Domain mit den Route53 zugewiesenen DNS-Servern.

Sobald dies erledigt ist, erstellen Sie für jeden Server, für den Sie Anforderungen ausgleichen möchten, einen Datensatz (innerhalb der gerade erstellten gehosteten Zone), indem Sie beispielsweise "Gewichtet", eine kurze TTL (60 oder niedriger) eingeben und "Mit Integritätsprüfung verknüpfen" auswählen : YES 'und wählen Sie die oben erstellte Integritätsprüfung aus, die dem spezifischen Server / der IP entspricht, für die Sie den Datensatz erstellen. Wiederholen Sie dies erneut für jeden Server / jede IP.

Am Ende stehen mehrere Datensatzgruppen mit jeweils 1 IP-Adresse zur Verfügung, die alle derselben Domäne in Route53 zugeordnet sind. Auf DNS-Anforderungen gibt Route53 nun einen von ihnen zurück, basierend auf dem ihnen zugewiesenen Gewicht UND basierend auf dem aktuellen Status jeder Integritätsprüfung. Wenn eine Integritätsprüfung fehlschlägt, wird diese bestimmte IP weggelassen.

Sie können dies auch mit anderen Route53-Datensatztypen tun. Zum Beispiel haben Sie mit 'Failover' 1 oder mehrere primäre IPs und 1 oder mehrere sekundäre IPs. Route53 gibt immer eine der primären IPs zurück, es sei denn, die Integritätsprüfungen für diese schlagen fehl, und wechselt dann zu einer der sekundären.

In Route53 gibt es komplexere Datensatztypen, die auch mit Integritätsprüfungen kombiniert werden können: Latenz, Geolocation, Multivalue. Alles sehr gut erklärt in den AWS-Dokumenten.

Arthur
quelle
ttl 60 Sekunden oder weniger beeinträchtigen die Leistung.
Jay Shah
@ JayShah kannst du das näher erläutern? Ich habe Tonnen von Datensätzen nach 60 Sekunden konfiguriert (dies ist sogar einer der Standardwerte, die AWS anbietet) und bin mir keiner Leistungsprobleme bewusst
Arthur
Ja, DNS wird von Browsern und anderen Clients nur 60 Sekunden lang zwischengespeichert. Daher wird die DNS-Suche alle 60 Sekunden durchgeführt - was zu einer Verzögerung führt.
Jay Shah
1
@ JayShah, das ist der beabsichtigte Effekt, kein Leistungsproblem. Die durchschnittliche DNS-Suche mit Route53 beträgt 10 ms oder weniger und ist im gesamten Anforderungszeitraum vernachlässigbar. Der Rest kostet nur die Leistung der AWS Route53-Server, dafür bezahlen Sie sie.
Arthur
1
@EmanuilTolev In Bezug auf die DNS-TTL-Konformität würde ich Ihnen empfehlen, einige Tests in Ihrem anwendungsspezifischen Setup durchzuführen, falls Sie dies noch nicht kürzlich getan haben. Insgesamt ist die TTL-Konformität in einem viel besseren Zustand als vor einigen Jahren.
Arthur