Alles, was Sie wissen müssen

Application Load Balancer bieten auf intelligente Weise Skalierbarkeit, Leistung und Verfügbarkeit. Sie garantieren auch, dass Ihre Server nicht überlastet werden und auf Verkehrsspitzen vorbereitet sind.

Die Sicherheitsinfrastruktur eines jeden IT-Teams basiert auf Load Balancern. Load Balancer stellen sicher, dass Ihre Anwendung den eingehenden Datenverkehr bewältigen kann. In diesem Artikel werden wir den Application Load Balancer auf AWS ausführlicher besprechen.

Was ist ein Application Load Balancer?

Application Load Balancer, auch bekannt als ALB, ist ein Elastic Load Balancer oder ELB auf AWS. Es arbeitet auf der Anwendungsschicht (der siebten Schicht) des Open Systems Interconnection (OSI)-Modells.

ALBs haben drei Komponenten – Listener, Load Balancer und die Zielgruppe. Nach Erhalt einer Anfrage wertet der Load Balancer die Listener-Regeln in der Reihenfolge ihrer Priorität aus (um auszuwählen, welche Regel ausgeführt werden soll). Dann wählt es ein Ziel aus der Zielgruppe für die Regelaktion aus.

Sie können Listener-Regeln einrichten, um Anfragen je nach Inhalt des Anwendungsdatenverkehrs an unterschiedliche Zielgruppen zu senden. Der Standard-Routing-Algorithmus für ALBs ist Round-Robin; Sie können jedoch die Routing-Technik für die am wenigsten ausstehenden Anforderungen auswählen.

Wenn sich Ihre Anforderungen ändern, können Sie Ziele aus Ihrem Load Balancer löschen und hinzufügen, ohne den allgemeinen Anforderungsfluss Ihrer Anwendung zu unterbrechen.

Mit Elastic Load Balancing (ELB) können Sie Ihren Load Balancer skalieren, wenn sich der Datenverkehr Ihrer Anwendung im Laufe der Zeit ändert. Alle Elastic Load Balancer können automatisch auf die überwiegende Mehrheit der Workloads skaliert werden.

Sie können auch Integritätsprüfungen erstellen, um den Status Ihrer Anwendung auf den registrierten Zielen zu überwachen, sodass der Load Balancer nur Anforderungen an die fehlerfreien Ziele sendet.

Funktionen von Application Load Balancern

Layer-7-Load-Balancing

Basierend auf Anforderungsattributen können Sie HTTP/HTTPS- und gRPC-Datenverkehr auf Amazon EC2-Instances, ECS-Container, AWS Lambda, Drittanbieter- oder lokale Server verteilen.

Sicherheitsfunktionen

ALB unterstützt Desynchronisierungsschutz basierend auf der HTTP-Desync-Guardian-Bibliothek. Diese Funktion schützt Kundenanwendungen vor HTTP-Schwachstellen, die durch Desync verursacht werden, ohne die Verfügbarkeit oder Latenz zu beeinträchtigen. Kunden können auch ihre Toleranzstufe für fragwürdige Anfragen basierend auf der Architektur ihrer Anwendungen festlegen.

Außenposten-Unterstützung

AWS-Außenposten ist eine vollständig verwaltete Lösung, die AWS-Infrastruktur, -Services und -Tools auf nahezu jedes Rechenzentrum, jeden Co-Location-Bereich oder jede lokale Einrichtung ausdehnt, um ein wirklich konsistentes Hybrid-Erlebnis zu erzielen. Sie können Application Load Balancer mit AWS Outposts verwenden. Kunden können ALBs auf unterstützten Instance-Typen bereitstellen, und die ALB wird automatisch auf die Rack-Kapazität hochskaliert, um unterschiedliche Anwendungs-Workloads zu bewältigen, ohne dass ein manueller Eingriff erforderlich ist.

Sie können ALB auch so konfigurieren, dass Erinnerungen/Warnungen empfangen werden, um sie beim Navigieren ihrer Kapazitätsanforderungen für den Lastausgleich zu unterstützen. Kunden können dieselbe AWS-Konsole, CLI und APIs zum Bereitstellen und Verwalten von ALBs auf Outposts verwenden, die sie zum Bereitstellen und Verwalten von ALBs in AWS-Regionen verwenden.

HTTPS-Beendigung

Ein Application Load Balancer (ALB) unterstützt die HTTPS-Terminierung zwischen Clients und dem Load Balancer. Das bedeutet, dass die Verbindung zwischen Ihrem Client und ALB HTTPS ist, aber die Verbindung zwischen ALB und Anwendungsservern (EC2, ECS usw.) HTTP ist.

Da sich die Verbindung zwischen ALB und Anwendungsservern() innerhalb Ihrer VPC befindet, ist sie standardmäßig durch externe Entitäten geschützt. ALBs können SSL-Zertifikate mit AWS Certificate Manager für vordefinierte Sicherheitsrichtlinien und AWS Identity and Access Management (IAM) verwalten.

  Die 10 besten Workflow-Automatisierungs- und Integrationsplattformen für Privatpersonen und Unternehmen

HTTP/2- und gRPC-Unterstützung

HTTP/2 ist eine neue HTTP-Form (HyperText Transfer Protocol), mit der viele Anforderungen über dieselbe Verbindung über eine einzige Multiplex-Verbindung übertragen werden können. Es bietet auch SSL-Verbindungen zu Clients und komprimiert Header-Daten, bevor sie im Binärformat gesendet werden.

gRPC-Datenverkehr kann mithilfe des Application Load Balancer über Mikrodienste oder zwischen gRPC-fähigen Clients und Diensten geroutet und mit Lastenausgleich versehen werden. Dies ermöglicht die reibungslose Integration des gRPC-Verkehrsmanagements in Architekturen, ohne dass Änderungen an der zugrunde liegenden Infrastruktur auf Seiten der Clients oder Dienste erforderlich sind.

gRPC ist das Protokoll der Wahl für die Kommunikation zwischen Diensten in Mikrodienstarchitekturen und verwendet HTTP/2 für die Übertragung. Es verfügt über Funktionen wie effiziente binäre Serialisierung, Unterstützung für eine Vielzahl von Sprachen sowie die inhärenten Vorteile von HTTP/2, wie z. B. geringerer Netzwerkbedarf, Komprimierung und bidirektionales Streaming, wodurch es älteren Protokollen wie REST überlegen ist.

Klebrige Sitzungen

Sticky Sessions ermöglichen es, Anfragen von demselben Client mithilfe von Cookies an dasselbe Ziel zu leiten. Wir können Sticky Sessions einfach einrichten, indem wir einfach Sticky Sessions und Cookies in den ALB-Attributen aktivieren. Application Load Balancer (ALB) unterstützt sowohl dauerbasierte Cookies als auch anwendungsbasierte Cookies.

Die Bestimmung, wie lange Ihr Load Balancer die Benutzeranfrage ständig an dasselbe Ziel senden soll, ist der Schlüssel zur Verwaltung von Sticky Sessions. Die Sticky Sessions werden auf Zielgruppenebene freigeschaltet. Sie können eine Kombination aus dauerbasierter Klebrigkeit, anwendungsbasierter Klebrigkeit und keiner Klebrigkeit für verschiedene Zielgruppen bereitstellen.

Native IPv6-Unterstützung

Native Internet Protocol Version 6 (IPv6) wird von Application Load Balancern in einer VPC unterstützt. Dadurch können Clients über IPv4 oder IPv6 eine Verbindung zum Application Load Balancer herstellen.

Ablaufverfolgung anfordern

Bei allen Anfragen, die an den Load Balancer gehen, fügt der Application Load Balancer einen neuen benutzerdefinierten Bezeichner „X-Amzn-Trace-Id“ HTTP-Header ein. Die Anfrageverfolgung ermöglicht es Ihnen, den Fortschritt einer Anfrage zu verfolgen, während sie an zahlreiche AWS-Services geht, indem sie ihre eindeutige ID verwendet. Sie können die Anforderungsverfolgung verwenden, um Leistungs- oder Engpassprobleme in Ihrem Anwendungsstapel zu finden.

Weiterleitungen

Der Application Load Balancer (ALB) kann eine eingehende Anfrage von einer URL zu einer anderen umleiten. Beispielsweise können Sie HTTP-Anforderungen auf HTTPS-Anforderungen umleiten, wodurch Sie Ihr Compliance-Ziel des sicheren Surfens erreichen und gleichzeitig das Suchranking und den SSL/TLS-Score Ihrer Website verbessern können. Umleitungen können Benutzer auch zu einer anderen Website leiten, z. B. von einer älteren Version einer Anwendung zu einer neueren Version.

Feste Antwort

Der Application Load Balancer kann verwalten, welche Client-Anfragen Ihre Anwendungen bedienen. Ohne die Anfrage an die Anwendung weiterzuleiten, können Sie direkt vom Load Balancer auf eingehende Anfragen mit HTTP-Fehlerantwortcodes und benutzerdefinierten Fehlermeldungen antworten.

WebSockets-Unterstützung

Application Load Balancer unterstützen WebSockets. WebSockets ermöglichen es einem Server, Echtzeitnachrichten an Endbenutzer zu senden, ohne dass diese eine Aktualisierung vom Server anfordern (oder abfragen) müssen. Über eine TCP-Verbindung mit langer Laufzeit ermöglicht das WebSockets-Protokoll bidirektionale Kommunikationskanäle zwischen einem Client und einem Server.

Anzeige des Servernamens (SNI)

SNI (Server Name Indication) ist eine TLS-Protokollerweiterung, bei der ein Client im TLS-Handshake den Hostnamen angibt, zu dem eine Verbindung hergestellt werden soll. Der Load Balancer kann zahlreiche Zertifikate über einen einzigen sicheren Listener präsentieren, wodurch er mehrere sichere Websites mit nur einem sicheren Listener unterstützen kann.

  So fügen Sie Fotos zu Ihrem iPhone-Startbildschirm hinzu

Mit SNI verwenden Application Load Balancer einen intelligenten Zertifikatsauswahlprozess, um den Hostnamen in der Anfrage mit dem entsprechenden SSL-Zertifikat abzugleichen. Wenn der Hostname eines Clients mit mehreren Zertifikaten übereinstimmt, wählt der Load Balancer das optimale Zertifikat basierend auf mehreren Parametern aus, einschließlich der Fähigkeiten des Clients.

IP-Adressen als Ziele

Indem Sie die IP-Adressen der Anwendungs-Backends als Ziele verwenden, können Sie ALBs verwenden, um jede Anwendung, die auf AWS, lokal oder sogar anderen Cloud-Anbietern gehostet wird, auszugleichen. Dies ermöglicht den Lastenausgleich zu jeder IP-Adresse und Schnittstelle auf einem Anwendungs-Backend.

IP-Adressen können auch als Ziele für lokal gehostete Load-Balancing-Anwendungen (über Direct Connect oder VPN), Peering-VPCs und EC2-Classic (unter Verwendung von ClassicLink) verwendet werden. Sie können in die Cloud migrieren, in die Cloud platzen oder in die Cloud umschalten, mit der Möglichkeit, Lasten zwischen lokalen Ressourcen und AWS auszugleichen.

Lambda fungiert als Targets

Benutzer können von jedem HTTP-Client, einschließlich Webbrowser, auf serverlose Anwendungen zugreifen, dank der Unterstützung von Application Load Balancers für die Ausführung von Lambda-Funktionen zur Übermittlung von HTTP(S)-Anforderungen. Sie können die Unterstützung für inhaltsbasierte Weiterleitungsregeln verwenden, um Anfragen an bestimmte Lambda-Funktionen zu leiten, indem Sie Lambda-Funktionen als Load Balancer-Ziele registrieren.

Ein Application Load Balancer kann als Standard-HTTP-Endpunkt für Apps verwendet werden, die Server und serverloses Computing nutzen. Um Anwendungen zu entwickeln, können Sie Lambda-Funktionen verwenden, um eine ganze Website zu erstellen, oder sie mit EC2-Instances, Containern und lokalen Servern kombinieren.

Inhaltsbasiertes Routing

Angenommen, Ihre Anwendung besteht aus zahlreichen unabhängigen Diensten. In diesem Fall kann ein Application Load Balancer eine Anfrage basierend auf dem Inhalt der Anfrage, wie z. B. dem Hostfeld, der Pfad-URL, dem HTTP-Header, der HTTP-Methode, der Abfragezeichenfolge oder der Quell-IP-Adresse, an einen Dienst weiterleiten.

Host-basiertes Routing: Mit dem Host-Feld des HTTP-Headers kann ALB eine Client-Anfrage von demselben Load Balancer an mehrere Domains weiterleiten.

Pfadbasiertes Routing: Der URL-Pfad des HTTP-Headers kann zum Weiterleiten einer Client-Anfrage verwendet werden.

HTTP-Header-basiertes Routing: Jeder standardmäßige oder benutzerdefinierte HTTP-Header-Wert kann verwendet werden, um eine Client-Anforderung weiterzuleiten.

Methodenbasiertes HTTP-Routing: Jede standardmäßige oder benutzerdefinierte HTTP-Methode kann verwendet werden, um eine Clientanforderung umzuleiten.

Parameterbasiertes Routing für Abfragezeichenfolgen: Eine Clientanforderung kann abhängig von der Abfragezeichenfolge oder den Parametern weitergeleitet werden.

CIDR-basiertes Routing der Quell-IP-Adresse: Eine Clientanforderung kann basierend auf dem CIDR der Quell-IP-Adresse, von der sie stammt, weitergeleitet werden.

Containerisierte Anwendungsunterstützung

Application Load Balancer verbessert die Containerunterstützung, indem die Last auf mehrere Ports auf einer einzelnen Amazon EC2-Instance verteilt wird (dynamische Portzuordnung). In der ECS-Aufgabendefinition können Sie einen dynamischen Port angeben, der dem Container einen ungenutzten Port gibt, wenn er auf der EC2-Instance geplant ist. Dieser Port wird vom ECS-Scheduler verwendet, um die Aufgabe zum Load Balancer hinzuzufügen.

ALB mit Web Application Firewall

Mit AWS WAF können Sie jetzt Ihre Web-Apps auf Ihren Application Load Balancern schützen. AWS WAF schützt Ihre Webanwendungen vor typischen Web-Exploits, die Anwendungsausfallzeiten verursachen, die Sicherheit gefährden oder übermäßige Ressourcen verbrauchen können.

Langsamer Startmodus mit Load-Balancing-Algorithmus

Application Load Balancer (ALB) unterstützt einen Round-Robin-Load-Balancing-Algorithmus. Darüber hinaus enthält der Round-Robin-Mechanismus in Application Load Balancer einen verzögerten Startmodus, mit dem Sie neue Ziele hinzufügen können, ohne sie mit Anforderungen zu überlasten. Die langsame Startoption ermöglicht es den Zielen, sich aufzuwärmen, bevor sie ihren gerechten Anteil an Anfragen während einer bestimmten Anlaufphase annehmen. Der langsame Start ist vorteilhaft für Apps, die auf Cache angewiesen sind und eine Aufwärmphase benötigen, bevor sie optimal auf Anfragen reagieren können.

  So deaktivieren Sie Google Analytics im Nintendo Switch eShop

Benutzerauthentifizierung

Sie können Application Load Balancer verwenden, um den Authentifizierungsmechanismus Ihrer Apps auszulagern. Wenn Benutzer auf Cloud-Anwendungen zugreifen, werden sie vom Application Load Balancer authentifiziert. Dank der nahtlosen Integration von Application Load Balancer mit Amazon Cognito können sich Endbenutzer über soziale Identitätsanbieter wie Google, Facebook und Amazon sowie Unternehmensidentitätsanbieter wie Microsoft Active Directory über SAML oder jeden OpenID Connect-kompatiblen Identitätsanbieter authentifizieren.

Application Load Balancer kann auch Unternehmensbenutzer verifizieren, indem es sich direkt mit Ihrem Identitätsanbieter verbindet, wenn Sie bereits über eine maßgeschneiderte IdP-Lösung verfügen, die OpenID Connect-kompatibel ist.

Vorteile des Wechsels von einem Classic Load Balancer (CLB) zu einem Application Load Balancer (ALB)

Klassische Load Balancer waren die erste Art von Load Balancern von AWS. Obwohl leistungsstark, veralten Classic Load Balancer mit der Einführung von ALBs und NLBs langsam. Viele Funktionen, die jetzt von den neueren Versionen von Load Balancern unterstützt werden, sind im Classic Load Balancer nicht vorhanden.

  • Unterstützung für Pfadbedingungen: Sie können Ihren Listener mit Regeln konfigurieren, die Anfragen basierend auf der URL in der Anfrage weiterleiten. Auf diese Weise können Sie Ihre Anwendung in kleinere Dienste (Microservices) aufteilen und Anfragen basierend auf dem Inhalt der URL an den entsprechenden Dienst weiterleiten.
  • Unterstützung für Host-Bedingungen: Sie können Ihren Listener mit Regeln konfigurieren, die Anforderungen basierend auf dem Host-Feld im HTTP-Header weiterleiten. Auf diese Weise können Sie Anfragen mit einem einzigen Load Balancer an viele Domains weiterleiten.
  • Das Routing wird basierend auf Anforderungsinformationen wie HTTP-Header-Bedingungen und -Methoden, Abfrageparametern und Quell-IP-Adressen unterstützt.
  • Sie können Routing-Anfragen an zahlreiche Anwendungen auf einem einzigen EC2-Server senden.
  • Eine Instanz oder IP-Adresse kann mit zahlreichen Zielgruppen auf einem separaten Port registriert werden.
  • Sie können Anfragen von einer URL zu einer anderen umleiten.
  • Das Zurückgeben einer benutzerdefinierten HTTP-Antwort ist möglich.
  • Unterstützung für die Registrierung von Zielen für den Load Balancer nach IP-Adresse, einschließlich Zielen außerhalb der VPC.
  • Lambda-Funktionen können als Ziele registriert werden.
  • Vor dem Weiterleiten von Anfragen kann der Load Balancer Benutzer Ihrer Anwendungen anhand ihrer Unternehmens- oder sozialen Identitäten authentifizieren.
  • Containerisierte Apps werden unterstützt. Beim Planen einer Aufgabe kann Amazon Elastic Container Service (Amazon ECS) einen ungenutzten Port auswählen und ihn verwenden, um die Aufgabe bei einer Zielgruppe zu registrieren. So holen Sie das Beste aus Ihren Clustern heraus.
  • Da Zustandsprüfungen auf Zielgruppenebene definiert und CloudWatch-Metriken auf Zielgruppenebene veröffentlicht werden, ist Unterstützung für die Überwachung des Zustands jedes Dienstes einzeln verfügbar. Wenn Sie eine Zielgruppe zu einer Auto Scaling-Gruppe hinzufügen, können Sie jeden Dienst basierend auf der Nachfrage dynamisch skalieren.
  • Zusätzliche Informationen werden in komprimierter Form in Zugriffsprotokollen aufgezeichnet.

Letzte Worte

Application Load Balancer sind Load Balancer der neueren Generation, die elastisch und skalierbar sind und mit vielen verschiedenen Funktionen ausgestattet sind, insbesondere für die Anforderungen von Webanwendungen. Möglicherweise müssen Sie Classic Load Balancers verwenden, wenn Sie Legacy-Anwendungen haben, die im EC2 Classic-Netzwerk gehostet werden, aber für alle Workloads der neueren Generation sind ALBs eine naheliegende Wahl.