Freitag, 10. Februar 2012

Load Balancer

Load Balancer sind heute zur gängigen Praxis geworden, wenn ich skalierbare und redundante Systeme bereitstellen möchte. Hierbei zählt nicht nur die Lastverteilung der Kundenanfragen sondern auch die Möglichkeit unterbrechungsfrei Wartungsarbeiten ausführen zu können.

Generell können Load Balancer technisch durch verschiedene Verfahren abgebildet werden:

Die sicherlich simpelste Lösung stelle das DNS Verfahren dar. Hierbei werden im DNS lediglich für z.B. www.meinewebseite.tld die entsprechenden IP-Adressen der Rootserver hinterlegt. Der Load Balancer ist schnell eingerichtet, jedoch findet in der Form keine richtige Lastverteilung statt. Der DNS hat keine Kenntnis über die Auslastung bzw. Verfügbarkeit des jeweiligen Servers oder der laufenden Dienste, was auch die Vorteile der Wartung bzw. den Ausfalls eines Servers durch Hardwareschaden bei weiterer Verfügbarkeit des Dienstes nicht möglich macht. Zusätzlich wird eine entsprechende Anzahl von öffentlichen IP-Adressen benötigt.

Das Round Robin Verfahren stellt eine einzige IP-Adresse nach außen zur Verfügung, intern verteilt er die Anfragen (NAT) auf private IP-Adressen. Nachteilig wirkt sich hierbei aus, daß der Load Balancer zum sogenannten Single Point of Failure wird und somit die Hochverfügbarkeit des Load Balancers vom Anbieter bzw. Provider gefordert werden sollte. Zusätzlich weiß der Load Balancer auch nichts über den Zustand des Rootservers bzw. Dienstes.

Das URL basierte Verfahren stellt eine Lastverteilung anhand der URL dar. So wird z.B. /shop/ auf einen anderen Server geleitet als /download/ oder /public/. Zu diesem Zweck werden die Verzeichnisse auf den entsprechenden Rootservern abgelegt. Der Einsatz ist eingeschrenkt nutzbar, sollte aber in der Aufzählung nicht fehlen.

Das dienstbasierte Verfahren verteilt die Last gemäß der angebotenen Dienste, Anwendungen oder Protokolle. Somit kann ftp vom http oder https unterschieden werden. Anhand des Ports erfolgt dann eine Zuweisung des Rootservers. Sowohl das URL- als auch dienstbasierte Verfahren werden durch Analyse des Datenverkehrs verwendet, um Dienste/URLs mit hoher Last/hoher Rechenleistung sinnvoll zu trennen und Rechnerkapazitäten zu nutzen.

Der Schritt zu einem richtigen Load Balancer erfolgt durch den Austausch von Lastinformationen der Rootserver an den Load Balancer. Auch hier wird nach außen lediglich eine einzige IP Adresse zur Verfügung gestellt. Die Anfragen werden vom Load Balancer an die Rootserver verteilt, jedoch unter Berücksichtigung des Zustandes der Server, des Services, der Datanbank, des Ports oder den laufenden Anwendung. Die Rückfragen zur Auslastung können in Form von z.B. SNMP Anfragen, SQl querries etc. erfolgen. Ist ein Server nicht mehr erreichbar oder ein Service weggefallen, kann der Load Balancer den Rootserver sofort aus der Liste entfernen. Die übrigbleibenden Rootserver stellen jedoch weiterhin die Kundendienste zur Verfügung. Somit wird auch der Wegfall des z.B. Apache sofort bemerkt und entsprechend reagiert. Automatisch nimmt der Load Balancer den Rootserver nach Reparatur oder Restart des Dienstes in die Lastverteilung mit rein.