Geteilte Last ist halbe Last

Ist die Arbeit zu viel oder der Server zu klein, kauft man mehr Hardware. Mit Balance lässt sie sich kostengünstig verbinden.
30. Juni 2006

     

Hat ein Server zu viel zu tun, hat man mehrere Möglichkeiten, um ihn zu entlasten: Dienste auslagern, schnellere Hardware kaufen und Software tunen. Irgendwann sind all diese Optionen ausgeschöpft und man muss damit beginnen, die Arbeit auf mehrere Schultern zu verteilen. Damit ist es auch Zeit zur Anschaffung eines Load Balancers – oder zum Einsatz der richtigen Open-Source-Software. Mit Balance hat die Open-Source-Community ein Produkt im Angebot, die sich nicht nur auf Load Balancing versteht, sondern noch dazu einfach zu bedienen sind.


Ausbalanciert

Balance (www.inlab.de/balance.html) ist eine Entwicklung der Deutschen Inlab Software und liegt mittlerweile bereits in der Version 3.34 vor. Die Software steht unter der GPL und ist unter anderem für Linux, BSD und Solaris auf diversen Plattformen verfügbar.
Balance ist auf Layer 4 angesiedelt und ein simpler generischer TCP-Proxy. Das heisst, dass sich die Software nur zum Load Balancing von Applicationen auf TCP/IP-Basis wie HTTP, SMTP, MySQL oder DB2 eignet. Unterstützt wird dabei simples Round Robin als auch Hashed Load Balancing.
Bei Round Robin werden die ankommenden Verbindungen abwechselnd an die einzelnen Server verteilt, sodass jeder die gleiche Menge an Anfragen erhält. Dies ist beispielsweise für das Ausliefern von statischen Daten wie Bildern oder Verbindungen zu Datenbank-Slaves ausreichend. Kommen Sessions ins Spiel, steht man aber vor einem Problem: Da HTTP zustandslos ist, wird für jeden Request eine neue Verbindung gestartet, die zu unterschiedlichen Servern weitergeleitet werden kann. Dies würde die Sessions ausser Kraft setzen. Hier setzt das Hashed Load Balancing an, das die IP-Adresse des Anwenders mit einer bestimmten IP-Adresse assoziiert und dafür sorgt, dass auch zukünftige Anfragen immer an den gleichen Server weitergeleitet werden.


Gut gesteuert

Die Installation ist ausgesprochen einfach. Wer nicht auf die Pakete aus Sammlungen wie DarwinPorts (MacOS X) oder Blastwave (Solaris) zurückgreifen kann, kann die Software problemlos mit ./configure && make && make install von Hand installieren. Gesteuert wird Balance über ein Command Line Interface. Um Round Robin Load Balancing für zwei HTTP-Server, Server 1 und Server 2, zu aktivieren, reicht folgender simpler Befehl:



# balance 80 server1 \



server2



Stattet man beide Maschinen mit unterschiedlichem Content aus und ruft man als einziger Nutzer die Seiten immer wieder auf, sollte man bei jedem Reload die jeweils anderen Inhalte zu sehen bekommen. Möchte man statt dessen mit Hashing arbeiten, muss das Balance-Kommando nur leicht verändert werden:



# balance 80 server1 server2 %



Load Balancing eignet sich aber nicht nur, um die Arbeit auf verschiedene Schultern zu verteilen, sondern auch, um die Verfügbarkeit einer Applikation zu erhöhen. So kann beispielsweise parallel zum Datenbank-Master ein Slave mitlaufen, auf den bei einem Ausfall des Masters sofort umgeschaltet werden kann (Failover). Auch dies gehört zum Repertoire von Balance:



# balance 80 server1 ! server 2



Dies sorgt dafür, dass die Inhalte regulär von Server 1 bezogen werden. Sollte aber der Node ausfallen (Timeout), wird Balance automatisch auch Server 2 einbeziehen. Mit einem ähnlichen Prinzip ist es möglich, einen Server nach dem andern mit Arbeit auszulasten und erst, wenn einer voll ausgelastet ist, auf den nächsten umzuschalten:



# balance 80 server1::256 ! server2::128 ! \

server3::64



Bei dieser Konfiguration übergibt Balance nach 256 Verbindungen auf Server 1 die nächsten 128 Verbindungen an Server 2 und so weiter.


Pen – der Balance-Klon

Neben Balance existiert mit Pen ein fast identisches Programm, das ebenfalls unter der GPL steht und sich bis auf leichte Unterschiede bei der Syntax gleich verwenden lässt. Im Unterschied zu Balance unterstützt es aber experimentell auch SSL-Traffic und kann dank Unterstützung für VRRP (Virtual Router Redundancy Protocol) und einer zweiten Installation sich selber Redundanz verschaffen. Dies ist auch bei der kommerziellen Balance-Version BalanceNG möglich, die sogar ein vollwertiger Layer-2-Load-Balancer ist.




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Was für Schuhe trug der gestiefelte Kater?
GOLD SPONSOREN
SPONSOREN & PARTNER