Loadbalancing Web Services in der Amazon Cloud

Ausgangslage

Duden bietet Internet basierte Korrekturlösungen unter www.duden.de an. Die Korrekturen werden von mehreren Instanzen des Duden Enterprise Servers, die in der Amazon Cloud betrieben werden durchgeführt. Bisher fand ein Loadbalancing auf der Ebene des HTTP Protokolls statt, das die Last auf die einzelnen Knoten verteilt hat. Eine Skalierung der Server Farm sorgte für den Start zusätzlicher Knoten bei Last oder für die Abschaltung von Knoten bei sinkender Auslastung.

Das bisherige Loadbalancing unterstützte keine Sitzungen auf der Basis des SOAP Protokolls. Sticky Sessions mit SOAP waren jedoch notwendig, um weitere Anwendungen mit der Server Farm betreiben zu können. Für diese Anwendungen wurden bisher zusätzlich dedizierte Server betrieben.

Anforderungen

Um alle Anwendungen mit den Rechnern der Server Farm betrieben zu können wurde ein Loadbalancing benötigt, das die folgenden Anforderungen erfüllte:

  • Unterstützung von Sessions, die über ein beliebiges XML Element im SOAP Body gekennzeichnet werden.
  • Weiterleitung aller Anfragen einer Session an den gleichen Server (Sticky Session).
  • Je nach Last muss die Liste der Server, die an der Lastverteilung teilnehmen erweitert oder verkürzt werden können.
  • Betrieb in der Amazon Cloud.
  • Mehrere hunderttausend Anfragen pro Stunde sollten verarbeitet werden können.
  • Verschlüsselung über SSL.

Membrane Service Proxy

Bei der Suche nach einem passenden Loadbalancer wurde auch der Membrane Service Proxy untersucht. Membrane hatte zu diesem Zeitpunkt noch keine Unterstützung für SOAP Sessions. Dafür war Membrane leicht mit Java erweiterbar und der Quellcode ist frei verfügbar.

Realisierung

Die Entscheidung fiel auf eine Erweiterung von Membrane Service Proxy um SOAP basierte Sitzungen. Um die Erweiterung zu realisieren wurde mit predic8, dem Hersteller des Membrane Service Proxy ein Open Source Sponsoring Vertrag geschlossen. Die für den Duden realisierten Funktionen wurden unter der ASF Open Source Lizenz veröffentlicht und stehen damit der Allgemeinheit zur Verfügung. Duden profitiert dafür von Bugfixes und Erfahrungen anderer Benutzer der Erweiterung. Da die Erweiterung in die Membrane Distribution eingebaut wurde, kann Duden ohne ein Migrationsprojekt durchzuführen auf neue Membrane Versionen aktualisieren.

Die Erweiterung bestand aus den folgenden Bausteinen:

  • Einem Extraktor, der die ID der Session aus einem XML Element entnimmt.
  • Einer REST basierten Schnittstelle, über die neue Knoten bei einem Cluster angemeldet und abgemeldet werden können.
  • Einer Web Oberfläche für die Verwaltung von Clustern.

Erfahrungen

"Durch die Erweiterbarkeit von Membrane konnten wir das Loadbalancing genau so realisieren, wie es unseren Anforderungen entsprach. Seit über einen Jahr arbeitet Membrane Service Proxy zuverlässig und performant: die Maschine, auf der der Balancer läuft, ist kaum unter Last. Wir würden Membrane Service Proxy so jederzeit wieder einsetzen."

Heinz-Detlev Koch, Entwicklung Sprachtechnologie.