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.

What is an 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)-Modell.

ALBs haben drei Komponenten – Listener, Load Balancer und die Zielgruppe. Nach Erhalt einer Anfrage, die Lastenausgleicher bewertet die Zuhörerregeln in Prioritätsreihenfolge (um auszuwählen, welche Regel ausgeführt werden soll). Es wählt dann ein Ziel aus der aus Zielgruppe für die Regelaktion.

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.

Elastischer Lastausgleich (ELB) ermöglicht es Ihnen, Ihren Load Balancer zu 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 Anfragen an die fehlerfreien Ziele sendet.

YouTube-Video

Features of Application Load Balancers

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.

Sicherheits-Features

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 Ebenen von 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 verwenden, CLIund APIs zum Bereitstellen und Verwalten von ALBs auf Outposts, 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 verwalten SSL-Zertifikate Verwendung von AWS Certificate Manager für vordefinierte Sicherheitsrichtlinien und AWS Identity and Access Management (IAM).

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 übergreifend geroutet und mit Lastenausgleich versehen werden Microservices oder zwischen gRPC-fähigen Clients und Diensten mit dem Application Load Balancer. 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 a unterstützt VPC. 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.

YouTube-Video

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 einen langen Zeitraum TCP-Verbindungermöglicht das WebSockets-Protokoll bidirektionale Kommunikationskanäle zwischen einem Client und einem Server.

Servernamensanzeige (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. 

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 (mit 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 Anforderungen an bestimmte Lambda-Funktionen zu leiten, indem Sie Lambda-Funktionen als Load Balancer-Ziele registrieren.

Ein Application Load Balancer kann als standardmäßiger 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.

Hostbasiertes Routing: Mithilfe des Host-Felds des HTTP-Headers kann ALB eine Client-Anfrage an mehrere Domains von demselben Load Balancer weiterleiten.

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

YouTube-Video

HTTP-Header-basiertes Routing: Jeder standardmäßige oder benutzerdefinierte HTTP-Headerwert kann zum Weiterleiten einer Clientanforderung verwendet werden.

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 der Quell-IP-Adresse CIDR, von der sie stammt, weitergeleitet werden.

YouTube-Video

Containerisierte Anwendungsunterstützung

Application Load Balancer verbessert die Containerunterstützung, indem die Last auf mehrere Ports auf einer einzigen Amazon EC2-Instance verteilt wird (dynamisches Port-Mapping). 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.

YouTube-Video

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.

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. Endbenutzer können sich über soziale Identitätsanbieter wie Google, Facebook und Amazon sowie über Unternehmensidentitätsanbieter wie authentifizieren Microsoft Active Directory über SAML oder jeden OpenID Connect-kompatiblen Identitätsanbieter, dank der nahtlosen Integration von Application Load Balancer mit Amazon Kognito.

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.

Benefits of shifting from a Classic Load Balancer(CLB) to an 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 Hostfeld 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.
  • Die Rückgabe 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.
  • Als Gesundheitschecks werden auf Zielgruppenebene definiert und Cloudwatch Metriken werden auf Zielgruppenebene veröffentlicht, Unterstützung für die Überwachung des Zustands jedes einzelnen Dienstes ist 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.

Final Words

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 Balancer verwenden, wenn Sie ältere Anwendungen auf dem gehostet haben EC2 Klassisches Netzwerk, aber für alle Workloads der neueren Generation werden ALBs eine offensichtliche Wahl sein.