Wie man pfadbasiertes Routing in einem AWS Application Load Balancer konfiguriert
In AWS existiert mit ELB und Elastic Load Balancing ein Konzept, bei dem die Server je nach Bedarf unserer Anwendung hinzugefügt oder freigegeben werden können und der eingehende Datenverkehr einer Anwendung auf mehrere Ziele verteilt wird. Diese Ziele können EC2-Instanzen, Container und IP-Adressen in einer oder mehreren Availability Zones sein. Unterstützte Typen von AWS Elastic Load Balancers sind Application Load Balancers (ALB), Network Load Balancers (NLB), Gateway Load Balancers (seit kurzem) und Classic Load Balancers. Diese Load Balancer haben unterschiedliche Konfigurationen, z.B.,
1. Anwendungs-Load-Balancer: Er verteilt den eingehenden Anwendungsverkehr automatisch zwischen zwei oder mehr EC2-Instanzen. Wir können Routing-Regeln entsprechend dem Inhalt der Anfrage definieren (inhaltsbasiertes Routing). Es handelt sich um einen Layer 7 Load Balancer.
2. Netzwerk-Lastverteiler (Network Load Balancer): NLB nutzt IP-Protokolldaten (TCP und UDP), um Verbindungen zu AWS-Ressourcen wie EC2, Microservices und Containern zu leiten. Es handelt sich um einen Load Balancer der Schicht 4.
3. Gateway Load Balancer: Diese werden mit virtuellen Appliances von Drittanbietern wie NextGen Firewalls (NGFW), IPS, IDS usw. verwendet, die auf EC2-Instanzen laufen. Er funktioniert, indem er ein einziges Gateway für den Datenverkehr von mehreren virtuellen Appliances platziert und diese virtuellen Appliances je nach Bedarf hoch- oder herunterskaliert. Das ist gut für die Stabilität des Netzwerks. Es handelt sich um einen Layer 3 (Gateway) plus Layer 4 (Load Balancing) Load Balancer.
4. Klassischer Load Balancer: CLB ist ein Legacy Load Balancer von AWS, der für den Lastausgleich über mehrere EC2-Instanzen hinweg eingesetzt wird. Er wird für Anwendungen empfohlen, die innerhalb des EC2-Classic-Netzwerks entwickelt wurden. Es handelt sich um einen Layer 4/7 Load Balancer. AWS empfiehlt, diesen Load Balancer zu vermeiden.
Überblick über diesen Leitfaden
In diesem Tutorial werden wir das pfadbasierte Routing für einen Application Load Balancer auf AWS konfigurieren. Wir werden ein IAM-Benutzerkonto für diese Aufgabe verwenden. Wir haben die folgenden Ressourcen für diese Einrichtung:
1. Zwei Availability Zones, die jeweils mindestens eine EC2-Instanz enthalten.
2. Eine VPC mit mindestens einem öffentlichen Subnetz in jeder der beiden oben genannten Availability Zones. Dieses öffentliche Subnetz wird für die Konfiguration des Load Balancers verwendet.
3. Installiere einen Webserver auf jeder Instanz und erlaube den Zugriff auf Port 80 auf diesen Instanzen mithilfe der Sicherheitsgruppe.
Konfiguration der EC2-Instanzen
Für diese Anleitung haben wir zwei Amazon Linux EC2-Instanzen mit einem Apache Httpd-Webserver konfiguriert, der auf beiden Instanzen installiert ist. Auf einem Server haben wir ein „signin“-Verzeichnis, das eine index.html-Datei mit folgendem Inhalt enthält: „Welcome User? Melde dich an, um fortzufahren…“
Auf dem anderen Server haben wir ein „signup“-Verzeichnis, das eine index.html-Datei mit folgendem Inhalt enthält: „New User? Melde dich zuerst an…“
Die Verzeichnisse „signin“ und „signup“ befinden sich beide im Stammverzeichnis(/var/www/html)
Konfigurieren der Zielgruppe
Schritt 1. Um die Anfrage weiterzuleiten, erstellen wir zunächst zwei Zielgruppen, eine für jeden Server. Öffne die EC2-Konsole und wähle auf der linken Seite „Zielgruppen“ aus (unter Lastverteilung).
Schritt 2. Auf der neuen Seite klickst du auf die Schaltfläche „Zielgruppe erstellen“:
Schritt 3. Wir befinden uns nun auf der Seite „Gruppendetails festlegen“. Unter „Grundkonfiguration“ machst du Folgendes:
- Wähle einen Zieltyp: Wähle hier „Instanzen“.
- Zielgruppenname: Gib einen passenden Namen für die Zielgruppe ein (in unserem Fall „Sign-In“).
- Protokoll: HTTP
- Anschluss: 80
- VPC: Wähle hier deinen VPC-Namen aus.
- Protokollversion: Behalte die Standardeinstellung bei (HTTP1).
Unter den Einstellungen „Gesundheitsprüfungen
- Protokoll der Gesundheitsprüfung: HTTP
- Pfad für den Gesundheitscheck: „Pfad, den du verwenden möchtest“ (in unserem Fall „/signin“)
- Behalte die „Erweiterten Einstellungen für die Gesundheitsprüfung“ als Standard bei. Füge Tags hinzu, wenn du sie brauchst (optional). Klicke auf „Weiter“, um fortzufahren.
Registrierung von EC2-Instanzen bei den Zielgruppen
Schritt 1. Füge nun eine der EC2-Instanzen zu den oben genannten Zielgruppen hinzu. Wähle eine Instanz aus und klicke dann auf die Schaltfläche „Als unten stehend einschließen“.
Schritt 2. Die oben ausgewählte Instanz wird unter „Ziele überprüfen“ angezeigt. Klicke jetzt auf „Zielgruppe erstellen“.
Schritt 3. Klicke im nächsten Fenster erneut auf „Weiter“. Wiederhole den Vorgang nun für eine weitere Zielgruppe und nenne sie „Sign-Up“. Verwende eine andere Instanz (in einer anderen Availability Zone) mit dieser Zielgruppe und verwende einen anderen Pfad für den Health Check (in unserem Fall „/signup“):
Erstellen des Application Load Balancers
Schritt 1. Gehe in der EC2-Konsole zu Load Balancers, klicke auf die Schaltfläche Create Load Balancer und wähle dann auf der neuen Seite „Application Load Balancer“ aus:
Schritt 2. Gib deinem Load Balancer einen passenden Namen (hier „My_Path_ALB“). Behalte das Schema auf Standard („Internet-facing“) und wähle als IP-Adresstyp IPv4.
Schritt 3. Wähle im Abschnitt Netzwerkzuordnung die Ziel-VPC aus und wähle im Abschnitt Zuordnungen die beiden Availability Zones aus, die deine Ziele enthalten und in die der Load Balancer den Datenverkehr leiten soll.
Schritt 4. Konfiguriere die Sicherheitsgruppen für den Load Balancer und erlaube deinem Zielport (in unserem Fall Port 80) zu lauschen:
Schritt 5: Wähle einen Listener (in unserem Fall HTTP) und gib einen Port ein, der abgehört werden soll, oder entscheide dich für den Standardport 80 für HTTP-Anfragen. Wähle unter „Standardaktion“ das Ziel „Anmeldung“ für die Spalte „Weiterleiten an“:
Schritt 6. Optionale Schritte können übersprungen werden. Überprüfe nun die Zusammenfassung und klicke auf die Schaltfläche „Load Balancer erstellen“:
Schritt 7. Gehe nun wieder auf die Seite „Load Balancers“ und finde hier deinen Ziel-Load Balancer:
Hinzufügen von pfadbasierten Weiterleitungsregeln
Schritt 1. Sobald der ALB-Status auf Aktiv wechselt, können wir mit den Weiterleitungsregeln fortfahren. Klicke auf den Namen des Load Balancers und gehe dann auf die Registerkarte Listeners.
Schritt 2. Klicke auf „Regeln anzeigen/bearbeiten“ in der Spalte „Regeln“ und dann auf das „+“-Symbol, gefolgt von „Regel einfügen“:
Schritt 3. Klicke in der Spalte ‚WENN(alle übereinstimmen)‘ auf den Dropdown-Pfeil ‚+ Bedingung hinzufügen‘, wähle ‚Pfad‘ als Regeltyp aus und trage ‚/signin*‘ in das Textfeld ein, das der Bezeichnung ‚is‘ entspricht.
Schritt 4. Klicke in der Spalte „Dann“ auf den Dropdown-Pfeil „+Aktion hinzufügen“ und wähle „Weiterleiten an“ als Aktion. Wähle hier die Zielgruppe „Sign-In“ aus.
Wiederhole die Schritte 2 und 3 für die Zielgruppe „SignUp“ mit dem Pfad „/signup*“. Nachdem wir die Regeln gespeichert haben, haben wir zwei Regeln:
Überprüfen der Einrichtung…
Um zu überprüfen, ob alles wie erwartet funktioniert, öffne einen Webbrowser und füge die DNS des Load Balancers ein und hänge sie an:
1) Pfad der Zielgruppe ‚Sign-Up‘: ‚/signup‘
2) Pfad der Zielgruppe ‚Sign-In‘: ‚/signin‘
Fazit
Herzlichen Glückwunsch, wir haben endlich ein funktionierendes Szenario für pfadbasiertes Routing im AWS Application Load Balancer konfiguriert.