Serverlast entgegenwirken (2) – Load-Balancing

Load-Balancing ist das Stichwort, wenn man Serveranbieter nach einer Möglichkeit fragt, wie man einer hohen Serverlast entgegnen kann. Doch was verbirgt sich hinter diesem Begriff?

Wikipedia sagt dazu:

In der Computertechnik werden umfangreiche Berechnungen oder große Mengen von Anfragen mittels Lastverteilung auf mehrere parallel arbeitende Systeme verteilt.

Load-Balancing dient also primär der Lastverteilung. Dies ist jedoch nicht der einzige wichtige Faktor: ein weiterer ist die erhöhte Ausfallsicherheit durch die Verwendung mehrerer Rechner als Cluster. Das Prinzip ist dabei immer das gleiche: Man hat mehrere Rechner, die (prinzipiell) identisch aufgebaut sind und der Benutzer wird an einen dieser Server weitergeleitet. Musste zuvor ein Rechner alle Anfragen bewältigen, so kann diese Last nun verteilt werden. Die meisten Load-Balancing-Verfahren sind dabei in der Lage, zuvor sicherzustellen, dass ein Server auch verfügbar ist. Ist dies nicht der Fall, so wird man an einen anderen weitergeleitet.

Es stellt sich also die Frage, wie genau Load-Balancing funktioniert und wie es eingesetzt werden kann.

Es gibt hauptsächlich drei verschiedene Arten von Load Balancing:

  1. DNS basiert
  2. NAT basiert
  3. FLAT basiert

Alle drei Arten werden auf Wikipedia erklärt, weshalb ich auf diese Verfahren nur jeweils kurz eingehen möchte. Interessanter sind die Optionen und Probleme, die dabei entstehen.

Nahezu jede aktuelle Webanwendung arbeitet mit SESSIONs zur Benutzeridentifikation. Es ist deshalb bei einem Load-Balancing in der Regel darauf zu achten, dass ein Benutzer immer auf denselben Server weitergeleitet wird, sobald ihm ein Server einmal zugeteilt wurde. Dies ist bei einfachem DNS-basiertem Load-Balancing absolut kein Problem. Dieses Verfahren leitet den Benutzer an eine andere Adresse um: hat der Benutzer z.B. www.domain.de angegeben, so wird er durch das DNS-System automatisch an www2.domain.de (oder ähnlich) weitergeleitet (Beispiel: meebo). Dadurch findet die zukünftige Kommunikation immer mit diesem Server statt und eine eindeutige Identifizierung ist kein Poblem. Der Nachteil liegt aber darin, dass das Load-Balancing nach außen hin sichtbar ist. Sollte man ein SSL-Zertifikat verwenden wollen oder müssen, so müsste mit diesem Verfahren für jeden Server also ein eigenes Zertifikat verwaltet werden. Das kann schnell ins Geld gehen.

Anders sieht es bei NAT-basiertem Load-Balancing aus. Hier übernimmt ein Server – der sogenannte Load-Balancer – die Kommunikation nach außen zum Benutzer. Hinter ihm sind mehrere Server möglich, die aber für den Benutzer nicht sichtbar sind. Der Load-Balancer leitet nun Anfragen an einen Server hinter ihm weiter und schickt die Antwort desselben zurück an den Benutzer. Es dürfte klar sein, dass dadurch immer dieselbe Adresse sichtbar ist, so dass auch nur ein SSL-Zertifikat notwendig ist. Dieses SSL-Zertifikat ist entsprechend dem Load-Balancer zugeschrieben.

Stellt sich noch die Frage nach der Benutzer-Identifikation: Die meisten Load-Balancing-Lösungen auf NAT-Basis sind heute in der Lage, anhand von Cookie-Informationen oder URL-Informationen Benutzer an bestimmte Server weiterzuleiten (Beispiel: pound). So kann mittels SESSION-ID einfach entschieden werden, mit wem der Benutzer verbunden wird.

Die Schwachstelle dieses Verfahrens ist offensichtlich der Load-Balancer, der die Weiterleitungen verwaltet. Denn ist die Anfrage zu hoch, so entsteht hier der Engpass. Diese Problematik muss man aber relativ sehen, denn im Gegensatz zum Ausliefern kompletter Websites ist der Rechenaufwand der Weiterleitung nicht so hoch, so dass durch dieses Verfahren deutlich mehr Benutzer gleichzeitig verkraftet werden können. Problematisch könnte dann nur der Traffic sein, denn dieser ist nach außen nur vom Load-Balancing-Server vorhanden, die anderen brauchen lediglich internen Traffic, der bei den meisten Providern inklusive ist.

Dieser Problematik haben sich FLAT-basierte Load-Balancing-Systeme angenommen, welche auf Protokoll-Ebene die MAC-Adressen (Hardware-Adressen von Sender / Empfänger) manipulieren. Sie sind definitiv die Königsklasse unter den Load-Balancing-Systemen. Leider sieht man das auch im Preis (ich habe keine Open Source-Lösung entdeckt) und es sind hauptächlich nur Hardware-Lösungen vorhanden. Damit reduzieren sich die möglichen Server-Provider erheblich (InternetX lässt es z.B. zu).

Im nächsten Artikel werde ich nun darauf eingehen, wie man Load-Balancing sinnvoll einsetzen kann und dabei auch “einfache” Seiten optimieren kann.

9 Gedanken zu „Serverlast entgegenwirken (2) – Load-Balancing

  1. Möglich ist auch, über das DNS zu einem einzigen Hostnamen eine von mehreren IPs zurückzugeben, sodass man dann trotz Load Balancing noch kurze und gleichbleibende URLs hat. Eine recht bekannte Suchmaschine handhabt das z. B. so.

    BTW: Könnte man die Schrift hier im Formular mal etwas dunkler machen? An meinem Laptop sind mittlere Farbtöne relativ hell im Vergleich mit meinen Röhrenmonitoren und wenn man dann zum Stromsparen noch die Beleuchtung reduziert, sinkt der Kontrast noch weiter.

  2. Naja, Benutzeridentifikation braucht man ja nicht überall. Aber selbst wenn, könnte man auch intern einen Server haben, der sich um die Benutzerverwaltung kümmert und den die anderen öffentlich zugänglichen dann befragen. Man kann aber auch Load-Balancing bei Datenbankservern machen, flickr macht das, die hatten da mal eine Präsentation zum Thema …

  3. Pingback: man bedim len?
  4. Round Robin DNS (Google) ist kein schlechter Ansatz. Die Benutzeridentifizierung auf Sessions festzunageln verhindert natürlich solche Ansätze, aber in Zeiten von Ich-stelle-einfach-ein-paar-tausend-billig-rechner-da-hin kann auch jeder Server bei jedem Seitenaufruf die Benutzeridentifikation und eventuelle Sessionvariablen aus einer Datenbank holen. Mag langsamer sein, aber dann stellt man halt noch einen Billigrechner dahin und gut ist’s.

    Interessant zum Thema Last für grooooße Dienste ist eine Präsentation hier (pdf). Sie erklärt wie Livejournal mit der Zeit gewachsen ist und was geändert wurde um schnell genug zu bleiben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.