Wie erreiche ich pfadbasiertes Routing auf einem Application Load Balancer?

Lesedauer: 6 Minute
0

Ich führe mehrere Microservices hinter meinem Application Load Balancer aus. Ich möchte Anfragen anhand des URL-Pfads an bestimmte Zielgruppen weiterleiten.

Kurzbeschreibung

Mit einem Application Load Balancer können Sie einen Listener mit Regeln erstellen, der Anfragen anhand der URL an Zielgruppen weiterleitet. Diese Funktion ist für andere Load Balancer-Typen wie Classic Load Balancer, Network Load Balancer und Gateway Load Balancer nicht verfügbar. Die Pfadmusterregeln werden nur auf den Pfad der URL und nicht auf die Abfrageparameter der URL angewendet. Weitere Informationen zu Pfadmustern finden Sie unter Pfadbedingungen.

Gehen Sie wie folgt vor, um pfadbasiertes Routing auf Ihrem Application Load Balancer einzurichten:

  1. Erstellen Sie eine Zielgruppe.
  2. Konfigurieren Sie die Listener-Regeln.

Stellen Sie vor der Erstellung der Zielgruppen sicher, dass die folgenden Voraussetzungen erfüllt sind:

Behebung

Angenommen, Sie haben zwei Dienste, Service A und Service B, und Anwendungen werden auf diesen Diensten auf Port 80 ausgeführt. Dienst A führt beispielsweise eine Anwendung auf dem Pfad /svcA aus, und Dienst B führt eine Anwendung auf dem Pfad /svcB aus.

Erstellen Sie eine Zielgruppe

Nachdem Ihre Instanzen erstellt wurden, registrieren Sie diese Instances bei einer Zielgruppe. Basierend auf den im Load Balancer konfigurierten Listener-Regeln werden Anfragen über den Port und das Protokoll, das Sie für die Zielgruppe angegeben haben, an registrierte Ziele weitergeleitet. Sie können die Portinformationen jedoch überschreiben, wenn Sie Ziele einzeln registrieren. Weitere Informationen finden Sie unter Zielgruppe erstellen.

Nehmen wir beispielsweise an, Sie erstellen zwei Zielgruppen mit Protokoll als HTTP und Port als 80, für die jeweils eine Anwendung bereitgestellt wird. Sie registrieren beispielsweise die EC2-Instance, auf der Service A ausgeführt wird, bei target-group-A. Für diese Zielgruppe können Sie HealthCheckProtocol als HTTP und HealthCheckPath als /svcA festlegen.

Sie registrieren die EC2-Instance, auf der Service B ausgeführt wird, bei target-group-B. Für diese Zielgruppe können Sie HealthCheckProtocol als HTTP und HealthCheckPath als /svcB festlegen.

Sie können Ihren Zielgruppen jederzeit Ziele hinzufügen oder aus ihnen entfernen. Weitere Informationen findest du unter Ziele bei deiner Zielgruppe registrieren.

Nachdem Sie in einer Regel für einen Listener eine Zielgruppe angegeben haben, überwacht der Load Balancer kontinuierlich den Zustand aller bei der Zielgruppe registrierten Ziele, die sich in der für den Load Balancer aktivierten Availability Zone befinden. Der Load Balancer leitet Anfragen an die registrierten Ziele weiter, die fehlerfrei sind. Weitere Informationen finden Sie unter Zustandsprüfungen für Ihre Zielgruppen.

Listener-Regeln konfigurieren

Wenn Sie einen Listener für einen Application Load Balancer erstellen, können Sie zusätzlich zur Standardregel eine oder mehrere Regeln definieren. Eine Regel besteht aus einer Priorität, einer Aktion und einer oder mehreren Bedingungen. Sie können keine Bedingungen für die Standardregel definieren. Wenn die Bedingungen für keine der Standardregeln erfüllt sind, wird die Aktion für die Standardregel ausgeführt.

Weitere Informationen zur Regelpriorität finden Sie unter Regeln neu anordnen.

Weitere Informationen zu Regelaktionen finden Sie unter Regelaktionstypen.

Weitere Informationen zu Regelbedingungen finden Sie unter Regelbedingungstypen.

Um pfadbasiertes Routing auf einem Application Load Balancer zu implementieren, müssen Sie Listener-Regeln konfigurieren. Sie müssen für jedes Pfadmuster, auf dessen Grundlage Sie Ihre Anfragen weiterleiten möchten, eine Regel konfigurieren.

Zum Beispiel:

Listener-Regel 1: Wenn Ihr Anfrage-URL-Pfad die Zeichenfolge /svcA enthält, leiten Sie die Anfrage an target-group-A weiter. Dies liegt daran, dass target-group-A den Dienst A enthält, der eine Anwendung auf dem angegebenen Pfad ausführt.

Listener-Regel 2: Wenn Ihr Anfrage-URL-Pfad die Zeichenfolge /svcB enthält, leiten Sie diese Anfrage an target-group-B weiter. Dies liegt daran, dass target-group-B den Dienst B enthält, der eine Anwendung auf dem angegebenen Pfad ausführt.

Informationen zum Erstellen eines neuen HTTP-Listeners finden Sie unter Erstellen eines HTTP-Listeners.

Informationen zum Erstellen eines neuen HTTPS-Listeners finden Sie unter Erstellen eines HTTPS-Listeners.

Gehen Sie wie folgt vor, um die Listener-Regeln mit Bedingungen und Aktionen zu aktualisieren:

  1. Öffnen Sie die Amazon EC2-Konsole.
  2. Wählen Sie im Navigationsbereich unter Load Balancing die Option Load Balancers aus.
  3. Wählen Sie den Load Balancer und dann Listeners aus.
  4. Um den Listener zu aktualisieren, wählen Sie Regeln anzeigen/bearbeiten.
  5. Wählen Sie in der Menüleiste das Symbol Regeln hinzufügen (das Pluszeichen). Dadurch werden an den Stellen, an denen Sie eine Regel in der Prioritätsreihenfolge einfügen können, Symbole zum Einfügen von Regeln hinzugefügt.
  6. Wählen Sie eines der Symbole „Regel einfügen“, die im vorherigen Schritt hinzugefügt wurden.
  7. Um eine pfadbasierte Regel für /svcA hinzuzufügen, wählen Sie Bedingung hinzufügen, Pfad und geben Sie dann das Pfadmuster /svcA ein. Um die Bedingung zu speichern, wählen Sie das Häkchensymbol.
  8. Um eine Vorwärtsaktion hinzuzufügen, wählen Sie Aktion hinzufügen, Weiterleiten an und wählen Sie dann die Zielgruppe target-group-A aus.
  9. Wählen Sie Speichern.

Wiederholen Sie die vorherigen Schritte für den Pfad /svcB mit den folgenden Änderungen:

  • Geben Sie für Schritt 6 das Pfadmuster /svcB ein.
  • Wählen Sie für Schritt 7 die Zielgruppe target-group-B.

Weitere Informationen finden Sie unter Listener-Regeln für Ihren Application Load Balancer.

**Hinweis:**Pfadbasierte Routing-Regeln suchen nach einer exakten Übereinstimmung. In diesem Beispiel verwendet pfadbasiertes Routing die Pfaddefinitionen /svcA und /svcB. Wenn Ihre Anwendung verlangt, dass Anfragen weiter über diese Pfade weitergeleitet werden, z. B. /svcA/doc oder /svcB/doc, fügen Sie einen Platzhalter hinzu, wenn Sie die Bedingung für die pfadbasierte Routing-Regel schreiben. Verwenden Sie Pfadmuster ähnlich wie /svcA* oder /svcB* um sicherzustellen, dass alle Dokumente auf diesen Pfaden beim Weiterleiten von Anfragen berücksichtigt werden.

Pfadbasiertes Routing testen

Um dieses Routing zu testen, kopieren Sie den DNS-Namen Ihres Application Load Balancers in einen Webbrowser und fügen Sie den URL-Pfad /svcA oder /svcB hinzu. Wenn der Application Load Balancer-Listener die Anfrage empfängt, leitet der Listener diese Anfrage basierend auf der Pfadbedingung an die entsprechende Zielgruppe weiter.

Angenommen, der DNS-Name Ihres Application Load Balancers lautet alb-demo-1234567890.us-west-2.elb.amazonaws.com:

  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcA muss Service A zurückgeben.
  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcB muss Service B zurückgeben.

Mit pfadbasiertem Routing ermöglicht Ihnen Ihr Application Load Balancer, mithilfe von Listener-Regeln und Zielgruppen mehrere Microservices hinter einem einzigen Load Balancer zu hosten. Daher können Sie komplexe Regeln einrichten, um Kundenanfragen an Ihre Anwendungen weiterzuleiten. Zusätzlich zu pfadbasierten Regeln können Sie Anfragen auch auf der Grundlage von Host-Headern, User-Agent-Headern und Abfrageparameterwerten an bestimmte Anwendungen weiterleiten. Weitere Informationen finden Sie unter Erweitertes Anforderungsrouting für AWS Application Load Balancers.


Verwandte Informationen

Wie behebe und korrigiere ich fehlgeschlagene Zustandsprüfungen für Application Load Balancers?

Beheben Sie Probleme mit Ihren Application Load Balancers