jsp-develop.de presents:

Load Balancing

von shark,  19.08.2001 22:37:06

Das Thema Load Balancing ist für Unternehmen interessant, die sich mit dem Thema eBusiness beschäftigen. Load Balancing wird in eBusiness Projekten meist erst sehr spät in den Projektablauf mit einbezogen.

Warum ist das so: Es ist ganz einfach, man entwickelt ein eBusiness System und kennt im Vorfeld nicht alle Parameter, die das System beeinflussen werden. Demzufolge berücksichtigt man auch noch nicht alle Parameter während des Projektes.

Bei Shop-Systemen können Spitzenzeiten noch relativ gut vorhergesehen werden. Das um die Weihnachtszeit mehr eingekauft wird als im Hochsommer dürfte jedem klar sein. Es gibt allerdings auch Anwendungsfälle die nicht kalkulierbar sind.

Ich habe im Rahmen meiner Projekte genau über dieses Thema mit einem Reifenhersteller gesprochen. Im Winter wurde es von einem  über den anderen Tag Spiegelglatt. Das ist vorherserbar, es war allerdings nicht vorhersebar, das ein wahnsinniger Ansturm auf die Lager des Reifenherstellers erfolgte, weil das Glatteis vor dem Weihnachtswochenende gekommen ist. Zu der Zeit wollten Autobesitzer noch schnell vor den Feiertagen Winterreifen kaufen. Die EDV-Systeme des Reifenherstellers wurden innerhalb von Minuten mit Anfragen der Zwischenhändler überschüttet und stark belastet.

Für solche Fälle sind Load Balancing Systeme ein guter Schutz. Für den erfolgreichen Betrieb einer WEB-Anwendung spielen neben aktuellen Inhalten auch schnelle Antwortzeiten und Hochverfügbarkeit eine entscheidende Rolle.

Es gibt verschiedene Arten von Load Balancing Systemen. Klassifizieren kann man Load Balancing Systeme in: Hardware Load Balancer, Software Load Balancer, Cluster Systeme und WEB Load Balancing Systeme.

Hardware Load Balancer sind entweder Switches, die um die Load Balancing Funktionalität erweitert wurden oder eigenständige Load Balancing Systeme (Spezialserver, Appliances).

Intelligente Load Balancer sind konfigurierbar und ermöglichen es die Last anhand von vorgegebenen Kriterien zu verteilen (Round Robin, geringste Auslastung, etc.). Heute existieren schon Load Balancer am Markt, die bis in den Layer sieben des OSI-Modells vordringen, um applikationsspezifische Daten wie Cookies auszuwerten. Diese Systeme unterscheiden sich von herkömmlichen Systemen, die Anfragen nur anhand der TCP/IP-Adresse verteilen können.

Hardware Load Balancer sind im Gegensatz zu Software Lösungen teuer aber auch leichter administrier- und integrierbar in bestehende Infrastrukturen.

Interessant sind neben den reinen Load Balancing Lösungen auch integrierte Ansätze in Servlet Engines und Application Servern.

Die Open Source Lösung Resin von Caucho (www.caucho.com) bietet die Möglichkeit Anfragen auf "n" Resin Servlet Engines zu verteilen.

Resin unterstützt "Single WEB Server Load Balancing". Bei dieser Strategie werden alle Anfragen über den Apache WEB-Server an 1-n parallel laufende Resin Servlet Engines verteilt. Für "Multiple WEB Server Load Balancing" Strategien schaltet man vor die parallel laufenden Apache WEB-Server einen Router/Switch, der die Anfragen verteilt.

Die Servlet Engine JRun von Allaire (www.allaire.de) hat ebenfalls Load Balancing Funktionen integriert. Allaire benutzt eine Kombination aus Clustering und Monitoring, um Lasten intelligent auf Server zu verteilen. Allaire hat das Application Load Balancing realisiert, das sich wesentlich von IP Load Balancing Systemen unterscheidet. Auf Basis des Application Load Balancings können Informationen intelligent und benutzerspezifisch auf dedizierte Server geroutet werden. Vorstellbar sind zum Beispiel Server, die nur VIP-Kunden bedienen. Das Clustering wurde dezentral von Allaire implementiert. Es existiert kein Cluster Master und damit auch kein "Single Point of Failure".

Application Server wie IBM WebSphere und Bea WebLogic bringen von Hause aus Load Balancing Funktionalitäten mit.

IBM geht mit WebShpere einen Schritt weiter und baut eine eBusiness Anwendung in Form einer Domäne auf. Die WebSphere Domäne besteht aus Knoten, denen wiederum einzelne Application Server zugeordnet sein können. Mit dem WebSphere "Performance Pack -> Network Dispatcher" können Anfragen innerhalb der WebSphere Domäne auf einzelne Knoten verteilt werden. Mit dieser Methode clustered man WebSphere eBusiness Anwendungen, wodurch man theoretisch unendliche Skalierbarkeit erreichen kann.

Bea WebLogic hat ebenfalls einen Clustering Mechanismus integriert. Die Philosophie von Bea ist es einen bis "n" WebLogic Server zu einem monolithischen Application Server zusammenzufügen. WebLogic benutzt für das Load Balancing einen JNDI-Baum in dem alle Ressourcen (Data Sources, EJBs, Mail Sessions, etc.) verwaltet werden. Der JNDI-Baum liegt auf jedem Server im Cluster vor und sichert in dieser Form die Hochverfügbarkeit der Komponenten ab.

WebSpehre und WebLogic Load Bancing Funktionalitäten sind rein Software basiert und integraler Bestandteil beider Application Server. Bea hat verschiedene Load Balancing Algortihmen wie "Round Robin", "Random", "Parameter based Routing" und "Weighted Round Robin" realisiert. WebLogic Cluster können auch auf einer Maschine laufen, für diesen Fall werden die Server Instanzen auf jeweils einen Prozessor verteilt. In allen Fällen schaltet man vor den WebLogic Cluster einen WEB-Server der als Proxy fungiert.

Meiner Meinung nach ist es unumgänglich, dass man sich schon relativ früh in einem eBusiness Projekt um den Punkt Load Balancing kümmert und entsprechend die Architektur des eBusiness Systems gestaltet. Das Thema Sicherheit sollte entsprechend dem Load Balancing ebenso Teil der Planung eines eBusiness Projektes sein.
URL dieses Beitrags:
http://www.jsp-develop.de/forumbeitrag/view/169/