Service-Load Balancing - Amazon Elastic Container Service

Service-Load Balancing

Ihr Amazon-ECS-Service kann optional zur Verwendung von Elastic Load Balancing konfiguriert werden, um Datenverkehr gleichmäßig auf die Aufgaben in Ihrem Service zu verteilen.

Anmerkung

Wenn Sie Aufgabensätze verwenden, müssen alle Aufgaben im Satz so konfiguriert sein, dass sie entweder Elastic Load Balancing verwenden oder Elastic Load Balancing nicht verwenden.

Amazon-ECS-Services, die auf Amazon-EC2-Instances gehostet werden, unterstützen die Load Balancer-Typen Application Load Balancer, Network Load Balancer und Classic Load Balancer. Amazon-ECS-Services, die auf AWS Fargate gehostet werden, unterstützen nur Application Load Balancer und Network Load Balancer. Application Load Balancer werden zum Weiterleiten von HTTP/HTTPS-Datenverkehr (oder Layer 7) verwendet. Network Load Balancer werden zum Weiterleiten von TCP- oder UDP-Datenverkehr (oder Layer 4) verwendet. Classic Load Balancers werden verwendet, um TCP-Datenverkehr zu leiten. Weitere Informationen finden Sie unter Load Balancer-Typen.

Application Load Balancers bieten verschiedene Funktionen an, die sie besonders attraktiv für die Verwendung mit Amazon-ECS-Services machen:

  • Jeder Service kann den Datenverkehr von mehreren Load Balancern abwickeln und mehrere Ports mit Lastenausgleich verfügbar machen, indem er mehrere Zielgruppen festlegt.

  • Sie werden von Aufgaben unterstützt, die auf Fargate und EC2-Instances gehostet werden.

  • Application Load Balancers ermöglichen es, dass Container die dynamische Host-Port-Zuweisung verwenden (so dass mehrere Aufgaben von demselben Service pro Container-Instance erlaubt sind).

  • Application Load Balancers unterstützen pfadbasierte Routing- und Prioritätsregeln (sodass mehrere Services denselben Listener-Port auf einem einzelnen Application Load Balancer verwenden können).

Wir empfehlen, dass Sie für Ihre Amazon-ECS-Services Application Load Balancers verwenden, damit Sie diese neuesten Funktionen nutzen können, außer wenn Ihr Service eine Funktion benötigt, die nur mit Network Load Balancers oder Classic Load Balancers verfügbar ist. Weitere Informationen über Elastic Load Balancing und die Unterschiede zwischen den Load Balancer-Typen finden Sie unter Benutzerhandbuch für Elastic Load Balancing.

Mit Ihrem Load Balancer zahlen Sie nur für das, was Sie auch tatsächlich nutzen. Weitere Informationen finden Sie unter Elastic Load Balancing Pricing.

Überlegungen zum Service-Load-Balancing

Beachten Sie Folgendes, wenn Sie Service Load Balancing verwenden.

Überlegungen zum Application Load Balancer und zum Network Load Balancer

Die folgenden Überlegungen gelten speziell für Amazon-ECS-Services, die Application Load Balancer oder Network Load Balancer verwenden:

  • Amazon ECS erfordert die service-verknüpfte IAM-Rolle, die die Berechtigungen bietet, die erforderlich sind, um Ziele bei Ihrem Load Balancer zu registrieren und abzumelden, wenn Aufgaben erstellt und gestoppt werden. Weitere Informationen finden Sie unter Serviceverknüpfte Rolle für Amazon ECS.

  • Für Services, die einen Application Load Balancer oder einen Network Load Balancer verwenden, können Sie nicht mehr als fünf Zielgruppen an einen Service anfügen.

  • Für Services mit Aufgaben, die den Netzwerkmodus awsvpc verwenden, müssen Sie beimrstellen einer Zielgruppe für Ihren Service ip als Zieltyp auswählen, nicht instance. Das liegt daran, dass Aufgaben, die den Netzwerkmodus awsvpc verwenden, mit einer Elastic-Network-Schnittstelle verknüpft sind, und nicht mit einer Amazon-EC2-Instance.

  • Wenn Ihr Service, der einen Application Load Balancer verwendet, Zugriff auf mehrere lastverteilte Ports benötigt, z. B. Port 80 und Port 443 für einen HTTP/HTTPS-Service, können Sie zwei Listener konfigurieren. Ein Listener ist für HTTPS verantwortlich, sodass die Anforderung an den Service weitergeleitet wird, und ein anderer Listener für die Umleitung von HTTP-Anforderungen an den entsprechenden HTTPS-Port. Weitere Informationen finden Sie Erstellen eines Listeners für Ihren Application Load Balancer im Benutzerhandbuch für Application Load Balancers.

  • Die Subnetzkonfiguration Ihres Load Balancers muss alle Availability Zones enthalten, in denen sich Ihre Container-Instances befinden.

  • Nachdem Sie einen Service erstellt haben, sind ARN der Zielgruppe oder der Name des Load Balancers, der Name des Containers und der Container-Port in der Servicedefinition nicht mehr änderbar. Sie können die Load Balancer-Konfiguration eines vorhandenen Diensts nicht hinzufügen, entfernen oder ändern. Wenn Sie die Aufgabendefinition für den Service aktualisieren, müssen der Containername und der Container-Port, die bei der Erstellung des Services angegeben wurden, in der Aufgabendefinition bleiben.

  • Wenn die Aufgabe eines Services die Zustandsprüfungskriterien des Load Balancers nicht besteht, wird die Aufgabe gestoopt und neu gestartet. Dieser Vorgang wird fortgesetzt, bis Ihr Service die Anzahl der gewünschten ausgeführten Aufgaben erreicht.

  • Wenn Sie Network Load Balancer verwenden, die mit IP-Adressen als Ziele konfiguriert sind, gelten Anforderungen als von der privaten IP-Adresse von Network Load Balancer. Dies bedeutet, dass Services hinter einem Network Load Balancer effektiv für die Welt offen sind, sobald Sie eingehende Anforderungen und Zustandsprüfungen in der Sicherheitsgruppe des Ziels zulassen.

  • Die Verwendung eines Network Load Balancers zum Weiterleiten von UDP-Datenverkehr an Ihre Amazon-ECS-Aufgaben auf Fargate erfordert die Verwendung der Plattformversion 1.4.0 (Linux) oder 1.0.0 (Windows).

  • Minimieren Sie Fehler in Ihren Client-Anwendungen, indem Sie StopTimeout in der Aufgabendefinition länger als die Verzögerung für die Abmeldung der Zielgruppe festlegen, die länger sein sollte als Ihre Client-Verbindungs-Zeitbeschränkung. Weitere Informationen zur empfohlenen Clientkonfiguration finden Sie hier in der Entwicklerbibliothek.

    Außerdem schließt das Zielgruppenattribut des Network Load Balancers für die Verbindungsbeendigung alle verbleibenden Verbindungen nach der Abmeldezeit. Dies kann dazu führen, dass Clients unerwünschte Fehlermeldungen anzeigen, wenn der Client sie nicht behandelt.

  • Informationen zu Problemen mit Services, für die ein Load Balancer aktiviert ist, finden Sie unter Fehlerbehebung bei Service-Load Balancers.

Überlegungen zum Classic Load Balancer

Die folgenden Überlegungen gelten speziell für Amazon-ECS-Services, die Classic Load Balancer verwenden:

  • Services mit Aufgaben, die den Netzwerkmodus awsvpc verwenden, z. B. solche mit dem Starttyp Fargate, unterstützen keine Classic Load Balancers.

  • Alle in einer einzelnen Aufgabendefinition gestarteten Container werden immer auf derselben Container-Instance platziert. Bei Classic Load Balancers können Sie mehrere Container (in derselben Aufgabendefinition) hinter denselben Load Balancer setzen, indem Sie mehrere Host-Ports in der Servicedefinition definieren und diese Listener-Ports zum Load Balancer hinzufügen. Wenn z. B. eine Aufgabendefinition darin besteht, dass das OpenSearch-Service den Port 3030 auf der Container-Instance verwendet, während Logstash- und OpenSearch-Dashboards Port 4040 auf der Container-Instance benutzen, kann dieselbe Lastenverteilung den Datenverkehr durch zwei Listener an das OpenSearch-Service und OpenSearch-Dashboards weiterleiten. Weitere Informationen finden Sie unter Listeners für Ihren Classic Load Balancer im Benutzerhandbuch für Classic Load Balancers.

    Wichtig

    Wir empfehlen, nicht mehrere Services mit demselben Classic Load Balancer zu verbinden. Da ganze Container-Instances bei Classic Load Balancers und nicht mit Host- und Port-Kombinationen registriert und abgemeldet werden, kann diese Konfiguration zu Problemen führen, wenn eine Aufgabe von einem Service beendet wird. In diesem Szenario kann eine Aufgabe von einem Service dazu führen, dass die gesamte Container-Instance bei dem Classic Load Balancer abgemeldet wird, während eine andere Aufgabe von einem anderen Service auf derselben Container-Instance sie noch verwendet. Wenn Sie mehrere Services mit einem einzelnen Load Balancer verbinden möchten, empfehlen wir die Verwendung eines Application Load Balancer.

  • Die Verwendung von Kapazitätsanbietern wird nicht unterstützt, wenn Sie Classic Load Balancer für Ihre Services verwenden.