HTTP Load Balancer
Ein Load Balancer dient im Allgemeinen dazu, Ressourcen die mehrfach vorhanden sind, schnell und effizient zwischen den einzelnen Nutzern aufzuteilen. Dieses Verfahren ist beispielsweise sinnvoll, wenn auf einer Server-Farm mehrere einzelne Server die gleichen Ressourcen bereithalten und viele Nutzer gleichzeitig darauf zugreifen möchten. Der Load Balancer teilt die einzelnen Anfragen auf die zur Verfügung stehenden Server auf und trägt dadurch dazu bei, dass die Beantwortung zeitnah erfolgt. Ein spezieller HTTP Load Balancer ist dabei darauf spezialisiert, Anfragen, die nach den Vorgaben von HTTP gestaltet sind, zu verarbeiten.
Die Funktionsweise des HTTP Load Balancer
Ein HTTP Load Balancer verteilt die Anfragen, die die Clients an ein bestimmtes System stellen, so gleichmäßig wie möglich auf die zur Verfügung stehenden Ressourcen auf. Das Ziel ist es dabei, die Ressourcen effizient zu nutzen und dadurch die Performance des Gesamtsystems zu verbessern. Bei den Ressourcen kann es sich entweder um eigenständige Server oder um Cluster handeln. Der HTTP Load Balancer ist dabei stets darum bemüht, die Anfrage an den Server weiterzuleiten, der dem Client geografisch am nächsten ist. Sollte der entsprechende Server jedoch gerade beschäftigt sein oder durch die Prüfung des Systems als „unhealthy“ eingestuft werden, übergibt der Load Balancer die Anfrage an die nächste Instanz, die beide Bedingungen erfüllt. Um die Kommunikation zu ermöglichen, fügt der Load Balancer den eingehenden Anfragen weitere Informationen hinzu, bevor er sie weiterleitet.
Einsatzgebiete für HTTP Load Balancer
Da HTTP ein Protokoll ist, das für den Datenverkehr im Internet zum Einsatz kommt, finden HTTP Load Balancer bei der Einrichtung von Web-Servern Verwendung. Da ein einzelner Server nur eine begrenzte Zahl an Anfragen pro Zeiteinheit beantworten kann, ist es insbesondere bei häufig besuchten Web-Angeboten wichtig, mehrere Server einzurichten, die die entsprechenden Informationen anbieten. Der HTTP Load Balancer verteilt die eintreffenden Anfragen gleichmäßig auf die verschiedenen Server, um eine möglichst hohe Effizienz zu erreichen.
HTTP und HTTPS
HTTP wurde entwickelt, um Daten im Internet zu übertragen. Allerdings spielte bei der Entwicklung die Sicherheit keine Rolle: Die Daten sind als Klartext für jeden zu lesen, der auf das entsprechende Netz zugreifen kann. Daher wurde als Alternative HTTPS entwickelt. Hierbei werden die Daten stets in verschlüsselter Form übertragen. Ob HTTP oder HTTPS zum Einsatz kommt, spielt auch bei der Verwendung des Load Balancers eine wichtige Rolle.
Die Struktur des HTTP Load Balancers
Bei einem HTTP Load Balancer bestimmt zunächst eine globale Weiterleitungsregel, an welchen Target-Proxy die Anfrage übergeben wird. Dieser verfügt über eine sogenannte URL-Map. Diese enthält Informationen darüber, welche Backend-Ressource die benötigten Daten bereithält. Daraufhin wird die Anfrage an einen geeigneten Server weitergeleitet, der sie schließlich beantwortet.
Die Struktur des HTTPS Load Balancers
Die Struktur des HTTPS Load Balancers ist sehr ähnlich wie bei einem HTTP Load Balancer. Allerdings ist es hierfür erforderlich, dass er über ein SSL-Zertifikat verfügt, um über HTTPS zu kommunizieren. Die eigentliche SSL-Verbindung besteht dabei zwischen dem Client und dem Load Balancer. Um auch die Übertragung der Daten zum Server sicher zu gestalten, baut der Load Balancer in der Regel hierfür eine neue SSL-Verbindung auf.
Der HTTP Load Balancing Algorithmus
Die Verteilung der Anfragen auf einen Server findet nach dem Round-Robin-Verfahren statt. Dabei handelt es sich um ein einfaches Rundlaufverfahren, das die als erstes eingegangenen Anfragen an eine freie Instanz weiterleitet. Allerdings sind bei vielen Internet-Anwendungen Sessions notwendig. In diesen Fällen leitet der Load Balancer Anfragen, die zu einer bereits begonnenen Sitzung gehören, stets an den gleichen Server weiter. Um die einzelnen Sessions zu identifizieren gibt es zwei Möglichkeiten. Der Load Balancer wertet oftmals die Inhalte der Datenpakete – Cookies oder Session IDs – aus, um die Vermittlungsentscheidung herbeizuführen. Eine andere Alternative besteht darin, dass er Anfragen der gleichen IP-Adresse grundsätzlich an den gleichen Server weiterleitet.