Bewährte Methoden für den Empfang eingehender Verbindungen zu Amazon ECS aus dem Internet - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bewährte Methoden für den Empfang eingehender Verbindungen zu Amazon ECS aus dem Internet

Wenn Sie einen öffentlichen Dienst betreiben, müssen Sie eingehenden Datenverkehr aus dem Internet akzeptieren. Ihre öffentliche Website muss beispielsweise eingehende HTTP Anfragen von Browsern akzeptieren. In diesem Fall müssen auch andere Hosts im Internet eine eingehende Verbindung zum Host Ihrer Anwendung herstellen.

Ein Ansatz zur Lösung dieses Problems besteht darin, Ihre Container auf Hosts zu starten, die sich in einem öffentlichen Subnetz mit einer öffentlichen IP-Adresse befinden. Wir empfehlen dies jedoch nicht für umfangreiche Anwendungen. Für diese ist eine skalierbare Eingabeschicht, die sich zwischen dem Internet und Ihrer Anwendung befindet, ein besserer Ansatz. Für diesen Ansatz können Sie jeden der in diesem Abschnitt aufgeführten AWS Dienste als Eingabe verwenden.

Application Load Balancer

Ein Application Load Balancer funktioniert auf der Anwendungsebene. Es ist die siebte Schicht des Open Systems Interconnection (OSI) -Modells. Dadurch eignet sich ein Application Load Balancer für öffentliche HTTP Dienste. Wenn Sie eine Website oder eine haben HTTP RESTAPI, dann ist ein Application Load Balancer ein geeigneter Load Balancer für diesen Workload. Weitere Informationen finden Sie unter Was ist ein Application Load Balancer? im Benutzerhandbuch für Application Load Balancers.

Diagramm, das die Architektur eines Netzwerks mit einem Application Load Balancer zeigt.

Mit dieser Architektur erstellen Sie einen Application Load Balancer in einem öffentlichen Subnetz, sodass er über eine öffentliche IP-Adresse verfügt und eingehende Verbindungen aus dem Internet empfangen kann. Wenn der Application Load Balancer eine eingehende Verbindung, genauer gesagt eine HTTP Anfrage, empfängt, öffnet er über seine private IP-Adresse eine Verbindung zu der Anwendung. Anschließend leitet er die Anfrage über die interne Verbindung weiter.

Ein Application Load Balancer bietet die folgenden Vorteile.

  • SSL/TLSKündigung — Ein Application Load Balancer kann sichere HTTPS Kommunikation und Zertifikate für die Kommunikation mit Clients aufrechterhalten. Er kann die SSL Verbindung optional auf Load Balancer-Ebene beenden, sodass Sie sich nicht um Zertifikate in Ihrer eigenen Anwendung kümmern müssen.

  • Erweitertes Routing — Ein Application Load Balancer kann mehrere DNS Hostnamen haben. Es verfügt auch über erweiterte Routing-Funktionen, mit denen eingehende HTTP Anfragen auf der Grundlage von Metriken wie dem Hostnamen oder dem Pfad der Anfrage an verschiedene Ziele gesendet werden können. Das bedeutet, dass Sie einen einzelnen Application Load Balancer als Eingabe für viele verschiedene interne Dienste oder sogar Microservices auf verschiedenen Pfaden eines verwenden können. REST API

  • RPCg-Unterstützung und Websockets — Ein Application Load Balancer kann mehr als nur bewältigen. HTTP Mit /2-Unterstützung kann er auch einen Lastenausgleich für G RPC - und Websocket-basierte Dienste durchführenHTTP.

  • Sicherheit — Ein Application Load Balancer schützt Ihre Anwendung vor bösartigem Datenverkehr. Er umfasst Funktionen wie HTTP De-Synchronisierungsmaßnahmen und ist in die AWS Web Application Firewall ()AWS WAF integriert. AWS WAF kann außerdem bösartigen Datenverkehr herausfiltern, der Angriffsmuster wie SQL Injection oder Cross-Site Scripting enthalten könnte.

Network Load Balancer

Ein Network Load Balancer funktioniert auf der vierten Ebene des Open Systems Interconnection (OSI) -Modells. Es eignet sich für HTTP Nichtprotokolle oder Szenarien, in denen end-to-end Verschlüsselung erforderlich ist, verfügt aber nicht über dieselben HTTP spezifischen Funktionen wie ein Application Load Balancer. Daher eignet sich ein Network Load Balancer am besten für Anwendungen, die ihn nicht verwendenHTTP. Weitere Informationen finden Sie unter Was ist ein Network Load Balancer? im Benutzerhandbuch für Network Load Balancers.

Diagramm, das die Architektur eines Netzwerks mit einem Network Load Balancer zeigt.

Wenn ein Network Load Balancer als Eingabe verwendet wird, funktioniert er ähnlich wie ein Application Load Balancer. Das liegt daran, dass er in einem öffentlichen Subnetz erstellt wurde und über eine öffentliche IP-Adresse verfügt, auf die über das Internet zugegriffen werden kann. Der Network Load Balancer öffnet dann eine Verbindung zur privaten IP-Adresse des Hosts, auf dem Ihr Container läuft, und sendet die Pakete von der öffentlichen Seite an die private Seite.

Funktionen des Network Load Balancer

Da der Network Load Balancer auf einer niedrigeren Ebene des Netzwerkstapels arbeitet, verfügt er nicht über dieselben Funktionen wie Application Load Balancer. Er verfügt jedoch über die folgenden wichtigen Funktionen.

  • End-to-end Verschlüsselung — Da ein Network Load Balancer auf der vierten Ebene des OSI Modells arbeitet, liest er den Inhalt von Paketen nicht. Dadurch eignet er sich für den Lastenausgleich von Kommunikationen, die end-to-end verschlüsselt werden müssen.

  • TLSVerschlüsselung — Zusätzlich zur end-to-end Verschlüsselung kann der Network Load Balancer auch TLS Verbindungen beenden. Auf diese Weise müssen Ihre Backend-Anwendungen keine eigenen implementieren. TLS

  • UDPUnterstützung — Da ein Network Load Balancer auf der vierten Ebene des OSI Modells arbeitet, eignet er sich für HTTP Nicht-Workloads und andere Protokolle als. TCP

Verbindungen schließen

Da der Network Load Balancer das Anwendungsprotokoll auf den höheren Ebenen des OSI Modells nicht beobachtet, kann er in diesen Protokollen keine Abschlussnachrichten an die Clients senden. Im Gegensatz zum Application Load Balancer müssen diese Verbindungen von der Anwendung geschlossen werden. Sie können den Network Load Balancer auch so konfigurieren, dass er die Verbindungen der vierten Ebene schließt, wenn eine Aufgabe gestoppt oder ersetzt wird. Informationen zur Einstellung des Verbindungsabbruchs für Network Load Balancer Balancer-Zielgruppen finden Sie in der Network Load Balancer Balancer-Dokumentation.

Wenn der Network Load Balancer Verbindungen auf der vierten Ebene schließt, kann dies dazu führen, dass Clients unerwünschte Fehlermeldungen anzeigen, wenn der Client sie nicht verarbeitet. Weitere Informationen zur empfohlenen Clientkonfiguration finden Sie hier in der Entwicklerbibliothek.

Die Methoden zum Schließen von Verbindungen variieren je nach Anwendung. Eine Möglichkeit besteht jedoch darin, sicherzustellen, dass die Verzögerung bei der Deregistrierung des Network Load Balancer Balancer-Ziels länger ist als das Verbindungstimeout des Clients. Der Client würde zuerst das Timeout überschreiten und über den Network Load Balancer die Verbindung zur nächsten Aufgabe wieder herstellen, während die alte Aufgabe langsam alle Clients leert. Weitere Informationen zur Verzögerung der Network Load Balancer Balancer-Zielabmeldung finden Sie in der Network Load Balancer Balancer-Dokumentation.

APIAmazon-Gateway HTTP API

Amazon API Gateway eignet sich für HTTP Anwendungen mit plötzlichen oder niedrigen Anforderungsvolumina. Weitere Informationen finden Sie unter Was ist Amazon API Gateway? im APIGateway Developer Guide.

Diagramm, das die Architektur eines Netzwerks zeigt, API das Gateway verwendet.

Das Preismodell für Application Load Balancer und Network Load Balancer beinhaltet einen Stundenpreis, damit die Load Balancer jederzeit für die Annahme eingehender Verbindungen verfügbar sind. Im Gegensatz dazu berechnet API Gateway für jede Anfrage separat. Dies hat zur Folge, dass keine Gebühren anfallen, wenn keine Anfragen eingehen. Bei hoher Verkehrsbelastung kann ein Application Load Balancer oder Network Load Balancer ein größeres Anforderungsvolumen zu einem günstigeren Preis pro Anfrage als Gateway verarbeiten. API Wenn Sie jedoch insgesamt nur eine geringe Anzahl von Anfragen oder Zeiten mit geringem Datenverkehr haben, sollte der Gesamtpreis für die Nutzung des API Gateways kostengünstiger sein als die Zahlung einer Stundengebühr für die Wartung eines Load Balancers, der nicht ausgelastet ist. Das API Gateway kann auch API Antworten zwischenspeichern, was zu niedrigeren Backend-Anforderungsraten führen kann.

APIGateway-Funktionen, die einen VPC Link verwenden, über den der AWS verwaltete Dienst mithilfe seiner privaten IP-Adresse eine Verbindung zu Hosts innerhalb Ihres VPC privaten Subnetzes herstellen kann. Es kann diese privaten IP-Adressen anhand von AWS Cloud Map Service Discovery-Datensätzen erkennen, die von Amazon ECS Service Discovery verwaltet werden.

APIGateway unterstützt die folgenden Funktionen.

  • Der API Gateway-Betrieb ähnelt einem Load Balancer, verfügt jedoch über zusätzliche Verwaltungsfunktionen API

  • Das API Gateway bietet zusätzliche Funktionen in den Bereichen Client-Autorisierung, Nutzungsstufen und Änderung von Anforderungen/Antworten. Weitere Informationen finden Sie unter Amazon API Gateway-Funktionen.

  • Das API Gateway kann Edge-, regionale und private API Gateway-Endpunkte unterstützen. Edge-Endpunkte sind über eine verwaltete CloudFront Distribution verfügbar. Sowohl regionale als auch private Endpunkte befinden sich lokal in einer Region.

  • SSL/Kündigung TLS

  • Routing verschiedener HTTP Pfade zu verschiedenen Backend-Microservices

Neben den oben genannten Funktionen unterstützt API Gateway auch die Verwendung benutzerdefinierter Lambda-Autorisierer, mit denen Sie sich vor unbefugter Nutzung API schützen können. Weitere Informationen finden Sie unter Feldnotizen: Serverless Container-based APIs mit Amazon ECS und Amazon Gateway. API