Hallo zusammen! Heute startet der Kurs , weshalb wir ein passendes Webinar zum Thema ELB durchgeführt haben. Wir haben die verschiedenen Arten von Load Balancern betrachtet und mehrere EC2-Instanzen mit Load Balancer erstellt. Außerdem haben wir weitere Anwendungsbeispiele untersucht.

, werden Sie:
- wissen, was AWS Load Balancing ist;
- die Arten von Elastic Load Balancer und deren Komponenten verstehen;
- AWS ELB in Ihrer Praxis anwenden.
Warum sollte man diese Kenntnisse haben:
- nützlich, wenn Sie Zertifizierungsprüfungen für AWS ablegen möchten;
- eine einfache Möglichkeit zur Lastverteilung zwischen Servern;
- eine einfache Möglichkeit, Lambda in Ihren Service (ALB) zu integrieren.
Die offene Lektion wurde gehalten von , Systemingenieur bei einem Marketingunternehmen für Webentwicklung und -support.
Einführung
Was ein Elastic Load Balancer ist, kann man in der folgenden Abbildung sehen, die ein einfaches Beispiel darstellt:

Der Load Balancer nimmt Anfragen entgegen und verteilt diese auf die Instanzen. Wir haben eine separate Instanz, Lambda-Funktionen und eine AutoScaling-Gruppe (Servergruppe).
Arten von AWS ELB
1. Lassen Sie uns die Haupttypen betrachten:
Classic Load Balancer. Der erste Load Balancer von AWS, der auf der 4. und 7. Schicht des OSI-Modells funktioniert und HTTP, HTTPS, TCP sowie SSL unterstützt. Er bietet eine grundlegende Lastverteilung zwischen mehreren Amazon EC2-Instanzen und arbeitet sowohl auf Verbindungs- als auch auf Anfrageebene. Lassen Sie uns ihn öffnen (in Grau hervorgehoben):

Dieser Balancer gilt als veraltet und sollte nur in bestimmten Fällen verwendet werden. Beispielsweise für Anwendungen, die im EC2-Classic-Netzwerk erstellt wurden. Grundsätzlich steht es uns frei, ihn zu erstellen:

2. Network Load Balancer. Für hohe Lasten geeignet, arbeitet auf der 4. Schicht des OSI-Modells (einsetzbar in EKS und ECS) und unterstützt TCP, UDP sowie TLS.
Der Network Load Balancer leitet den Traffic zu Zielobjekten in Amazon VPC und kann Millionen von Anfragen pro Sekunde bei ultraniedrigen Latenzzeiten verarbeiten. Zudem ist er für variable Lastmuster optimiert.
3. Application Load Balancer. Arbeitet auf der 7. Schicht, unterstützt Lambda, ermöglicht Regeln auf Header- und Pfadebene und unterstützt HTTP sowie HTTPS.
Stellt erweiterte anwendungsorientierte Anfragenweiterleitung zur Verfügung, die auf modernen Architekturen basiert, einschließlich Mikroservices und Containern. Leitet den Verkehr zu Zielobjekten in Amazon VPC basierend auf dem Inhalt der Anfrage.
Für viele Nutzer hat der Application Load Balancer zunächst den Classic Load Balancer ersetzt, da TCP nicht so verbreitet ist wie HTTP.
Wir werden auch diesen erstellen, wodurch wir bereits zwei Lastenverteilungseinheiten haben werden:

Komponenten der Lastenverteilung
Allgemeine Komponenten der Lastenverteilung (gemeinsam für alle Lastenverteilungsdienste):
- Access Logging Policy
— Ihre Zugriffsprotokolle für ELB. Um die Einstellungen vorzunehmen, können Sie zur Beschreibung wechseln und die Schaltfläche „Attribute bearbeiten“ auswählen:

Dann geben wir S3Bucket an – das Objektspeicher-System von Amazon:

- Schema
— interner oder externer Lastenverteiler. Es geht darum, ob Ihr LoadBalancer externe Adressen erhalten soll, um von außen erreichbar zu sein, oder ob es sich um Ihren internen Lastenverteiler handeln kann;
- Sicherheitsgruppen
— Zugriffskontrolle für den Lastenverteiler. Im Grunde genommen handelt es sich um eine hochgradige Firewall.


- Subnetze
— Subnetze innerhalb Ihrer VPC (entsprechend auch Verfügbarkeitszonen). Subnetze werden bei der Erstellung angegeben. Wenn die VPC auf eine Region beschränkt ist, sind die Subnetze auf die Verfügbarkeitszonen beschränkt. Wenn Sie einen Load Balancer erstellen, ist es besser, ihn in mindestens zwei Subnetzen zu erstellen (das hilft, falls es zu Problemen mit einer Verfügbarkeitszone kommt);
- Listeners
— Ihre Protokolle des Load Balancers. Wie bereits erwähnt, kann es für den Classic Load Balancer HTTP, HTTPS, TCP und SSL sein, für den Network Load Balancer — TCP, UDP und TLS, für den Application Load Balancer — HTTP und HTTPS.
Beispiel für den Classic Load Balancer:

Bei dem Application Load Balancer sehen wir hingegen eine etwas andere Benutzeroberfläche und insgesamt eine andere Logik:

Komponenten des Load Balancer v2 (ALB und NLB)
Jetzt betrachten wir die Load Balancer der zweiten Version, den Application Load Balancer und den Network Load Balancer genauer. Diese Load Balancer haben ihre eigenen spezifischen Eigenschaften. Zum Beispiel gibt es das Konzept der Target Groups — Instanzen (und Funktionen). Dadurch können wir angeben, auf welche der Target Groups wir den Datenverkehr leiten möchten.


Einfach gesagt definieren wir in den Zielgruppen die Instanzen, zu denen der Verkehr geleitet wird. Während Sie bei einem klassischen Lastenausgleich einfach die Instanzen direkt anschließen, müssen Sie beim Anwendungs-Lastenausgleich zuerst:
- einen Lastenausgleich erstellen;
- eine Zielgruppe erstellen;
- den Lastenausgleich gemäß den erforderlichen Ports oder Regeln auf die richtigen Zielgruppen richten;
- in den Zielgruppen die Instanzen zuweisen.
Diese Arbeitsweise mag komplizierter erscheinen, ist jedoch tatsächlich praktischer.
Der nächste Bestandteil ist — Listener-Regeln (Regeln zur Routenführung). Dies betrifft nur den Anwendungs-Lastenausgleich. Während Sie beim Netzwerk-Lastenausgleich einfach einen Listener erstellen, der den Verkehr an eine bestimmte Zielgruppe sendet, ist es beim Anwendungs-Lastenausgleich .

Jetzt lassen Sie uns ein paar Worte über den nächsten Bestandteil sagen — Elastic IP (statische Adressen für NLB). Während sich die Regeln zur Routenführung nur auf den Anwendungs-Lastenausgleich beziehen, betrifft Elastic IP nur den Netzwerk-Lastenausgleich.
Lassen Sie uns einen Netzwerk-Lastenausgleich erstellen:


Und genau im Erstellungsprozess werden wir sehen, dass wir die Möglichkeit bekommen, ein Elastic IP auszuwählen:

Eine Elastic IP bietet eine einzelne IP-Adresse, die über verschiedene EC2-Instanzen hinweg zugewiesen werden kann. Wenn eine EC2-Instanz über eine Elastic IP-Adresse verfügt und diese Instanz beendet oder gestoppt wird, kann sofort eine neue EC2-Instanz mit der Elastic IP-Adresse verbunden werden. Dadurch bleibt Ihre aktuelle Anwendung weiterhin verfügbar, da die Anwendungen stets dieselbe IP-Adresse sehen, auch wenn die tatsächliche EC2-Instanz gewechselt hat.
Hier zum Zweck einer Elastic IP. Wir sehen drei IP-Adressen, aber diese werden nicht dauerhaft hier bleiben:

Amazon ändert sie mit der Zeit, was alle 60 Sekunden geschehen kann (in der Praxis jedoch seltener). Das bedeutet, dass sich die IP-Adressen ändern können. Bei einem Network Load Balancer können Sie jedoch genau die IP-Adresse festlegen und sie in Ihren Regeln, Richtlinien usw. verwenden.

Fazit
ELB bietet eine automatische Verteilung des eingehenden Traffics auf mehrere Zielobjekte (Container, Amazon EC2-Instanzen, IP-Adressen und Lambda-Funktionen). ELB kann den Traffic sowohl innerhalb einer einzelnen Verfügbarkeitszone als auch über mehrere Verfügbarkeitszonen hinweg verteilen. Nutzer können aus drei verschiedenen Balancer-Typen wählen, die hohe Verfügbarkeit, automatisches Skalieren und akzeptablen Schutz gewährleisten. All dies ist entscheidend für die Ausfallsicherheit Ihrer Anwendungen.
Hauptvorteile:
- hohe Verfügbarkeit. Im Service Level Agreement wird eine Verfügbarkeit von 99,99 % für den Lastenausgleich garantiert. Mehrere Verfügbarkeitszonen stellen sicher, dass der Traffic nur durch funktionierende Objekte verarbeitet wird. Tatsächlich können Sie die Last regional verteilen, indem Sie den Traffic auf funktionierende Zielobjekte in verschiedenen Verfügbarkeitszonen umleiten;
- Sicherheit. Der ELB arbeitet mit Amazon VPC und bietet verschiedene Sicherheitsfunktionen – dazu gehören integriertes Zertifikatmanagement, Benutzerauthentifizierung und SSL/TLS-Dekodierung. Insgesamt ermöglicht dies eine zentralisierte und flexible Verwaltung der TLS-Einstellungen;
- Elastizität. Der ELB kann plötzliche Änderungen des Netzwerkverkehrs verarbeiten. Die tiefe Integration mit Auto Scaling stellt sicher, dass die Anwendung ausreichend Ressourcen erhält, wenn sich die Last ändert, wobei manuelles Eingreifen nicht erforderlich ist;
- Flexibilität. Es können IP-Adressen zur Weiterleitung von Anfragen an die Zielobjekte Ihrer Anwendungen verwendet werden. Dies gewährleistet Flexibilität bei der Virtualisierung zielgerichteter Anwendungen und ermöglicht die gleichzeitige Ausführung mehrerer Anwendungen auf einer Instanz. Da Anwendungen denselben Netzwerkport nutzen können und separate Sicherheitsgruppen haben, wird die Interaktion zwischen den Anwendungen in einer, sagen wir, Mikrodienstarchitektur vereinfacht;
- Überwachung und AuditingSie können Anwendungen in Echtzeit überwachen, indem Sie die Funktionen von Amazon CloudWatch nutzen. Dazu gehören Metriken, Protokolle und die Verfolgung von Anfragen. Einfach gesagt, Sie können Probleme identifizieren und Engpässe in der Leistung recht präzise feststellen.
- hybride LastenverteilungDie Möglichkeit, die Lastenverteilung zwischen lokalen Ressourcen und AWS mit demselben Lastverteilungstool zu steuern, erleichtert die Migration oder Erweiterung lokaler Anwendungen in die Cloud. Auch das Handling von Ausfällen wird durch die Nutzung der Cloud vereinfacht.
Wenn Sie weitere Informationen wünschen, hier sind noch ein paar nützliche Links von der offiziellen Amazon-Website:
- .
Quelle: habr.com
