.

Wie man mit dem Server-Lastenausgleich einer großen Webseite umgeht?

Heutige stark frequentierte Websites müssen Hunderttausende oder sogar Millionen von gleichzeitigen Anfragen von Benutzern oder Kunden verarbeiten und die richtigen Elemente auf der Webseite zurückgeben. Sie müssen all das schnell und zuverlässig tun. Für die Server, die eine bestimmte Website verarbeiten, ist es ein Test, ob sie den Datenverkehr zu einem bestimmten Zeitpunkt ordnungsgemäß bewältigen können, damit der Endbenutzer ununterbrochen und komfortabel auf den Dienst zugreifen kann.

Was ist Server-Load-Balancing und warum ist es für komplexe Websites wichtig?

Innerhalb einer IT-Infrastruktur liegt der Load Balancer einen Schritt vor den Servern, sodass er Benutzeranfragen automatisch zwischen allen Servern, die bereit sind, diese Anfragen zu bearbeiten, verteilen kann, um die Geschwindigkeit und Ressourcennutzung zu maximieren und sicherzustellen, dass kein Server nicht verfügbar oder in schlechter Verfassung ist (was die Leistung beeinträchtigen könnte). Wenn ein Server ausfällt, leitet der Load Balancer den Datenverkehr zu den anderen Servern um. Sobald ein neuer Server hinzugefügt wird, beginnt der Load Balancer, Anfragen an diesen zu senden. Der Prozess des Hinzufügens oder Entfernens von Servern ist automatisiert und wird in intelligenter Weise durchgeführt, um Flexibilität und Kosteneinsparungen zu gewährleisten.

Das Diagramm zeigt die Verteilung des Netzwerkverkehrs mit dem Einsatz eines Load-Balancing-Systems

Quelle: NGINX

Ein Load Balancer hilft Servern, die Ressourcennutzung zu optimieren und Serverüberlastungen zu vermeiden. Dies ist für komplexe Websites sehr wichtig, da alle Elemente der Webseite, also Text, Grafiken, Animationen, Videos oder Anwendungsdaten in kürzester Zeit übertragen werden müssen, was dank optimal bereitgestellter Ressourcen erreichbar ist.

Was ist eine große Website aus der DevOps-Perspektive?

Internet-Technologien entwickeln sich im Laufe der Jahre rasant weiter. Die Erwartungen der Internetnutzer ändern sich in ähnlicher Weise und damit die Haltung der Unternehmen – zur bestmöglichen Werbung für ihre Produkte und Dienstleistungen. Eine statische Website ist längst Vergangenheit und wurde von dynamischen Webseiten abgelöst, die regelmäßig wechselnden Inhalt enthalten und die Serverlast mit Anfragen weniger vorhersehbar erhöhen als reguläre statische Dateien. Beispiele sind Nachrichten-Websites, Blogs, Webanwendungen und Online-Shops. Solche Webseiten haben oft viele Abhängigkeiten, sind mit verschiedenen APIs verbunden, enthalten interne und externe Integrationen und beziehen sich auch auf andere Systeme. Die Komplexität wirkt sich auf die Leistung und die Reaktionszeit einer Website auf Benutzeranfragen aus. Darüber hinaus zeichnet sich eine beliebte Website durch hohes Verkehrsaufkommen aus, was die Last der oben genannten Faktoren erhöht.

Server-Load-Balancing einer komplexen Seite

Aus Sicht der Infrastruktur haben komplexe Websites höhere Hosting-Anforderungen, da sie starken Traffic bewältigen, auf unregelmäßige Verkehrsspitzen reagieren und auch eine Fallback-Lösung im Falle eines Vorfalls bieten müssen. Es gibt auch die Frage der gesamten Architektur der Lösung. Angenommen, die Entwicklungselemente wie korrekte Website-Optimierung, Skriptausführung, Plugins oder Dateikomprimierung sind ordnungsgemäß konfiguriert, sollten dennoch einige DevOps-Elemente Hand in Hand gehen. Komplexe Websites können mehr „kommunizierende Gefäße“ enthalten als ihre standardmäßigen einfacheren Gegenstücke. Eine umfangreiche Website kann beispielsweise mehrere verschiedene Datenbanktypen gleichzeitig verwenden, riesige Datenmengen innerhalb einer Sekunde aus der API abrufen und viele abhängige Netzwerke verwalten.

Load-Balancer

Load-Balancer stellen sicher, dass eingehende Zugriffsanfragen einem Server zugewiesen werden, der in der Lage ist, diese optimal zu bearbeiten. Darüber hinaus ermöglichen sie eine kosteneffiziente Skalierung von Lösungen und gewährleisten die hohe Verfügbarkeit von Diensten.

Der Markt bietet viele Möglichkeiten zur Implementierung von Load-Balancing-Systemen, von kostenlosen (z.B. HAProxy, Nginx) und kommerziellen (Cisco, F5) Lösungen über Softwarelösungen bis hin zu Cloud-Optionen.

  • Bei der Auswahl eines Hardware-Load-Balancers sollten wir davon ausgehen, dass der Hersteller Zuverlässigkeit als Teil des Gesamtpakets bietet. Einerseits gibt es eine Einschränkung dessen, was der Hersteller anbietet, andererseits erhalten wir im Falle von Leistungsproblemen volle Unterstützung.
  • Der Software-Load-Balancer ermöglicht keine Hardware-Verwaltung. Seine Funktionalitäten konzentrieren sich auf die Software-Fähigkeiten (z.B. die Anzahl der vCPUs, RAM und die Anzahl der Verbindungen).
  • Der Cloud-Load-Balancer ist eine Kombination der vorherigen Optionen. Hier bietet uns der Cloud-Anbieter einen von ihm verwalteten Hardware-Load-Balancer oder Software – von uns verwaltet.

Größere öffentliche Cloud-Anbieter bieten den Load-Balancing-Dienst unter ihren eigenen Namen an. Amazon bietet AWS Elastic Load Balancer, Microsoft – Azure Load Balancer und Google Cloud Platform – Cloud Load Balancing.

Wie geht man mit Server-Load-Balancing um?

Im Laufe der Jahre hat sich der Ansatz zum Hosting von Websites stark verändert. Selbst in der Welt der unbegrenzten Servermöglichkeiten wird selten ein einziger Server zu diesem Zweck verwendet. Ein Load-Balancer ist zu einem der Schlüsselelemente bei der Gestaltung der gesamten Infrastruktur geworden. Die richtige Implementierung eines Load-Balancers gewährleistet eine Optimierung der Ressourcen, reduziert die Arbeitslast und steigert die Produktivität.

Auswahl des Load-Balancer-Typs

Ein Load-Balancer ist das erste Element der Infrastruktur, mit dem der Kunde verbindet, und das einzige, das für ihn sichtbar ist, unabhängig davon, ob das System in der Hardware- oder Softwareversion vorliegt. Der Hardware-Load-Balancer verwendet einen physischen Server, was erfordert, dass in diese Lösung investiert wird. Der Software-Load-Balancer kann auf einer virtuellen Maschine installiert werden und kann die Rolle eines Application Delivery Controllers übernehmen. Der Cloud-Load-Balancer hingegen ist die flexibelste Wahl.

Algorithmus-Auswahl

Die Trennung des durch den Load-Balancer gehenden Datenverkehrs hängt von dem verwendeten Algorithmus ab. Die vier bekanntesten Algorithmen sind Round Robin, Weighted Round Robin, Least Connections und Weighted Least Connections.

  • Round Robin ist der einfachste Mechanismus, der eine Warteschlange für eingehende Anfragen erstellt, und Anfragen werden je nach Verfügbarkeit der Maschinen sequenziell zugewiesen, ohne spezifische Priorität.
  • Weighted Round Robin basiert auf einem Gewichtungssystem, sodass der Datenverkehr dem Server mit dem höheren zugewiesenen Gewicht zugewiesen wird.
  • Der Least Connections Algorithmus leitet die Anfrage an den Server mit den wenigsten aktiven Verbindungen.
  • Weighted Least Connections basiert auf der Anzahl der Anfragen für jede Maschine und dem zugewiesenen Gewicht.

Einsatz eines Load-Balancers zur Behandlung von HTTPS

Abhängig von der Konfiguration kann der Load-Balancer die Verantwortung für den HTTPS-Support übernehmen. Das Domänenzertifikat befindet sich dann nicht auf dem Anwendungsserver, sondern auf dem Load-Balancer, der Anfragen an die Anwendungsserver über HTTP weiterleitet und so die Last auf den Backend-Anwendungsservern reduziert.

Durchführung von Gesundheitsprüfungen

Eine ebenso wichtige Funktion, die im Load-Balancer verfügbar ist, sind die Gesundheitsprüfungen der Server. Es macht keinen Sinn, Anfragen an Hosts zu senden, die nicht zugänglich oder in Bezug auf Effizienz unzuverlässig sind. Load-Balancer führen regelmäßig Gesundheitsprüfungen der Server durch, um sicherzustellen, dass sie Anfragen bearbeiten können. Wenn die Serverantwort mehrmals die für korrekte Antworten definierte Schwelle überschreitet, wird davon ausgegangen, dass der Server in einem ungesunden Zustand ist. Dann wird er außer Betrieb genommen und eingehende Anfragen werden nicht an ihn weitergeleitet.

Server-Load-Balancing - Zusammenfassung

In den letzten Jahren ist Load-Balancing zu einem Schlüsselelement in der Infrastrukturplanung geworden. Natürlich bleibt die Rolle der Verkehrsverteilung die wichtigste, aber der Load-Balancer bietet auch andere Möglichkeiten, einschließlich der immer beliebteren hohen Verfügbarkeit. Die richtige Konfiguration ermöglicht die ordnungsgemäße Bereitstellung von Funktionen auf Websites, schafft ein positives Image des Unternehmens und gewährleistet den Komfort der Endbenutzer.

Überlegen Sie, welchen Load-Balancer Sie wählen und wie Sie ihn richtig konfigurieren? Unsere DevOps-Spezialisten kümmern sich umfassend um die Infrastruktur und beraten Sie nach Analyse Ihrer Bedürfnisse und erstellen die beste Lösung.

3. Best practices for software development teams