freshidea - Fotolia

AWS: Load Balancing für Microservices

Mit Microservices lassen sich Geschäftsabläufe flexibel anpassen. Das Load Balancing soll mit dem AWS Application Load Balancer einfacher werden.

Microservices konnten bislang kaum von den Vorteilen der Lastverteilung profitieren. Mit dem Pfad- und Host-basierten Load Balancing von Amazon Web Services hat sich das geändert.

Die Ära monolithischer IT-Strukturen, die jahrelang den Markt für E-Commerce-Systeme beherrschten, geht zu Ende. Stattdessen leiten Microservices, kleine Dienste, die im Zusammenspiel eine größere Gesamtlösung bilden, einen Paradigmenwechsel ein. Denn in einer Zeit, in der Geschäftsabläufe im Rekordtempo an neue Entwicklungen angepasst werden müssen, sind flexible Lösungen gefragt.

Mit Hilfe des Microservices-Ansatzes können einzelne Komponenten einer E-Commerce-Lösung immer wieder auf den aktuellen Stand gebracht und verändert werden – ohne unkalkulierbare Auswirkungen auf das Gesamtsystem. Damit eignen sich Microservices perfekt für moderne, agile Entwicklungsmethoden. Verpackt in Docker-Container, kleine virtualisierte Umgebungen, laufen sie obendrein sehr performant und dabei sicher voneinander getrennt.

Load Balancing für Microservices

Bis dato war es kompliziert, eine solche Lösung mit Load Balancing, also auf mehrere Systeme verteilt, zu betreiben. Administratoren mussten sich hier häufig mit komplexen Lösungen der Marke Eigenbau helfen.

Amazon Web Services (AWS) bietet mit dem Application Load Balancer ein Load-Balancing-System, das speziell bei Microservices seine Vorteile zum Tragen bringt.

Dabei analysiert zunächst der Application Load Balancer die URL. Anschließend trifft er eine Entscheidung, wohin er den Traffic schickt. Bei Webapplikationen, die in verschiedene Teile segmentiert sind, ist ein solches Verfahren besonders effizient. So ist es möglich, dass sich ein Teil ausschließlich um die User-Verwaltung kümmert und beispielsweise alle URLs, die mit /user anfangen, bearbeitet. Ein weiterer Part ist in diesem Fall für die Assets verantwortlich und ein dritter Teil liefert den Content aus.

Intelligente Verteilung leichtgemacht

Dank des Application Load Balancers ist es möglich, den Traffic basierend auf der Applikationsarchitektur zu verteilen. Damit ist es für die Entwickler sehr einfach, die Segmentierung in Microservices nach praktischen Erwägungen vorzunehmen. So kann ein Webshop seine drei Services Betrachten und Durchsuchen des Produktkatalogs, Verwalten von Bestellungen und Registrierung als neuer Benutzer in drei verschiedene Microservices unterteilen. Das Online-Angebot ist dann anhand verschiedener URLs (beispielsweise www.shop.de/account, www.shop.de/bestellungen und www.shop.de/register) klar segmentiert. Mit Hilfe des Application Load Balancers lassen sich also getrennte Infrastrukturen betreiben und von einem gemeinsamen Load Balancer aus ansprechen. Das ist der entscheidende Unterschied der AWS-Lösung im Vergleich mit konventionellen Load Balancern.

Der Application Load Balancer unterstützt das WebSocket-Protokoll und HTTP/2. Er arbeitet auf dem Application Layer. Beim Content-basierten Routing ist es – je nachdem, wie der Request aufgebaut ist – möglich, Web-Requests auf mehrere Services oder Container aufzuteilen. Die Komplexität einer Anwendung lässt sich auf diese Weise erheblich reduzieren. Die Entwicklung kann wesentlich einfacher erfolgen.

Der Application Load Balancer bietet eine hohe Verfügbarkeit, robuste Sicherheit durch Unterstützung von VPCs und HTTPS sowie eine automatische Skalierung. Außerdem kann ankommender Applikations-Traffic über mehrere EC2-Instanzen in verschiedenen Verfügbarkeitszonen geroutet werden. Damit ist auch der Schutz gegen Ausfälle des kompletten Rechenzentrums gewährleistet. Ein permanentes Monitoring zum Status einzelner Services ist auch möglich. Der Application Load Balancer läuft gemeinsam mit einer Reihe von AWS-Services. Konkret unterstützt werden Auto Scaling, AWS CloudFormation, Amazon EC2 Container Service (ECS), AWS Certificate Manager und AWS Identity und Access Management (AWS IAM).

Load Balancing – jetzt auch Host-basiert

Seit einiger Zeit bietet AWS beim Application Load Balancer auch die Möglichkeit, ein Host-basiertes Routing durchzuführen. Dabei werden Regeln erstellt, die den ankommenden Traffic auf Basis des Domain-Namens im Host Header routen. Anfragen, etwa an www.beispiel.de, werden dabei an eine andere Zielgruppe als diejenigen an api.beispiel.de geroutet. Sämtliche Anfragen an weitere Adressen eines Webangebots können an eine dritte Stelle geleitet werden. Außerdem ist es möglich, Regeln anzulegen, die das pfadbasierte Routing mit dem Host-basierten Routing kombinieren. Eine Anfrage für api.beispiel.de/production landet also beispielsweise an einer anderen Stelle, als eine Anfrage für api.beispiel.de/sandbox.

„AWS bietet mit dem Application Load Balancer ein System, das speziell bei Microservices seine Vorteile zum Tragen bringt.“

Constantin Gonzalez, Amazon Web Services

Bislang nutzten einige AWS-Kunden verschiedene Proxy-Server, die exklusiv für das Host-basierte Routing betrieben wurden. Dank des Host-basierten Routings über den Application Load Balancer ist eine solche Hilfskonstruktion nicht mehr erforderlich, da das Routing direkt über Application-Load-Balancer-Regeln erfolgen kann. Da der zusätzliche Layer entfällt, lassen sich Kosten für die nicht länger benötigte Proxy-Schicht einsparen. Außerdem wird die Architektur wesentlich einfacher und der operative Overhead verkleinert sich.

Vom Host-basierten Load Balancing profitieren insbesondere Nutzer von Containern. Für diese Zielgruppe wichtige Features sind beispielsweise das Port Mapping, umfangreiche Statusmeldungen (health checks) und die Nutzung von Pfad- und Host-basiertem Routing für ein vereinfachtes Services-Display. Damit lassen sich Microservices in vielen individuellen Containern vom Amazon EC2 Container Service (ECS) verwalten, gemeinsam konsolidieren und effizient auf Amazon EC2 betreiben. Dabei verlieren Administratoren nicht den Überblick, denn diese sind von einfach verständlichen Host- und Pfad-basierten URLs aus ansprechbar. Das gilt auch dann, wenn sie über dynamisch zugeordnete Port-Nummern angesprochen werden.

Über den Autor:
Constantin Gonzalez ist Principal Solutions Architect bei Amazon Web Services.

Folgen Sie SearchNetworking.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Workload-Portabilität zwischen AWS, Azure und OpenStack

Wie lassen sich On-Premise- und AWS-Workloads gleichzeitig verwalten?

Load Balancing für Server in einer privaten Cloud

Workload-Portabilität und App-Placement: Kostenloser E-Guide zur Multi-Cloud

Artikel wurde zuletzt im Juli 2017 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Anwendungsbeschleunigung und Server-Lastverteilung

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchDataCenter.de

SearchEnterpriseSoftware.de

Close