Geteilte Last ist halbe Last
Artikel erschienen in Swiss IT Magazine 2006/13
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.
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.
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 \
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.