Wie konfiguriere ich Host-Based Routing auf AWS Application Load Balancer
In AWS ist ELB oder Elastic Load Balancing ein Konzept, bei dem die Server je nach Bedarf unserer Anwendung hinzugefügt oder freigegeben werden können. Der von einer Anwendung eingehende Datenverkehr wird auf mehrere Ziele verteilt. 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 (kürzlich eingeführt) und Classic Load Balancers. Diese Load Balancer haben unterschiedliche Konfigurationen, z.B.,
- Application 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.
- Netzwerk-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.
- 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.
- 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 Lernprogramm werden wir das pfadbasierte Routing für den Application Load Balancer auf AWS konfigurieren. Wir werden ein IAM-Benutzerkonto mit eingeschränkten Rechten für diese Aufgabe verwenden. Für dieses Experiment stehen uns die folgenden Ressourcen zur Verfügung:
- Zwei Availability Zones, die jeweils mindestens eine EC2-Instanz enthalten.
- Eine VPC hat mindestens ein öffentliches Subnetz in jeder der beiden oben genannten Availability Zones. Dieses öffentliche Subnetz wird für die Konfiguration des Load Balancers verwendet.
- Installiere einen Webserver auf jeder Instanz und erlaube den Zugriff auf Port 80 auf diesen Instanzen mit Hilfe der Sicherheitsgruppe.
Konfiguration der EC2-Instanzen
Für diesen Leitfaden haben wir zwei Amazon Linux EC2 Instanzen konfiguriert, auf denen Apache Httpd installiert ist. Auf einem Server haben wir ein „signin“-Verzeichnis und darin eine index.html-Datei mit dem Inhalt: „Welcome User? Melde dich an, um fortzufahren…“
Auf dem anderen Server haben wir ein „signup“-Verzeichnis und darin eine index.html-Datei mit folgendem Inhalt: „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 „Zielgruppen 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 3. 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“.
Die oben ausgewählte Instanz wird unter „Zielgruppen überprüfen“ angezeigt. Klicke nun auf „Zielgruppe erstellen“.
Klicke im nächsten Fenster erneut auf „Weiter“. Wiederhole das gleiche Verfahren 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), auf den er hören soll:
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“:
Hinzufügen von Host-basierten Weiterleitungsregeln
Schritt 1. Gehe wieder auf die Seite „Load Balancers“ und finde hier deinen Ziel-Load Balancer:
Schritt 2. 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 3. Klicke auf „Regeln anzeigen/bearbeiten“ in der Spalte „Regeln“ und dann auf das „+“-Symbol, gefolgt von „Regel einfügen“:
Schritt 4. Klicke in der Spalte ‚WENN(alle übereinstimmen)‘ auf den Dropdown-Pfeil ‚+ Bedingung hinzufügen‘, wähle ‚Host‘ als Regeltyp aus und gib deinen Host- oder Domänennamen (‚www.signin.tecofers.com‘ in unserem Fall) in das Textfeld ein, das der Bezeichnung ‚is‘ entspricht.
Schritt 5. 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 obigen Schritte 2 und 3 für die Zielgruppe „SignUp“ mit dem Host- oder Domänennamen („www.signup.tecofers.com“ in unserem Fall). Nachdem wir die Regeln gespeichert haben, haben wir zwei Regeln:
Die letzte Regel ist für die Standardaktion, wenn die beiden oben genannten Bedingungen nicht erfüllt sind.
Registrierung der Domain in Route 53
Um die Hosts/Domains für das hostbasierte Routing über das Internet zu registrieren, müssen wir den DNS-Namen der entsprechenden EC2-Instanzen mit ihrem Hostnamen/Domainnamen in Route 53 hinzufügen.
Schritt 1. Öffne das Dashboard von Route 53 in der Verwaltungskonsole und klicke auf „Gehostete Zone erstellen“:
Schritt 2. Auf der Seite zur Konfiguration der gehosteten Zone gibst du den Domainnamen ein, wählst als Typ „Public hosted zone“ und klickst auf „Create hosted zone“:
Schritt 3. Auf der neuen Seite klickst du auf „Eintrag erstellen“:
Schritt 4. Auf der neuen Seite klickst du auf das Label „Zum Assistenten wechseln“ und wählst die Option „Einfaches Routing“.
Schritt 5. Hier klickst du auf ‚Einfachen Datensatz definieren‘.
Schritt 6. Gib verschiedene Details für diesen Eintrag ein:
Domain: Subdomain, die deiner gehosteten Zone entspricht.
Eintragstyp: Wähle hier den Typ A.
Wert/Verkehr umleiten zu:
- Wähle „Alias zu Application and Classic Load Balancer“.
- Region auswählen, in der sich der Load Balancer befindet
- Wähle den Ziel-Load-Balancer.
Klicke abschließend auf „Einfachen Datensatz definieren“.
Der obige Datensatz wird nun wie hier gezeigt angezeigt:
Wiederhole die obigen Schritte für den anderen Host.
Überprüfen der Einrichtung…
Um zu überprüfen, ob alles wie erwartet funktioniert, öffne einen Webbrowser und füge den DNS des Load Balancers ein und hänge ihn an:
1) Hostname für das Ziel „Sign-up“.
2) Hostname für das Ziel „Sign-In
Fazit
Herzlichen Glückwunsch, wir haben endlich ein funktionierendes Szenario für hostbasiertes Routing im AWS Application Load Balancer konfiguriert.