Persistenzdienste schützen vor Sticky Sessions und Downscaling

Sicher durch die Wolke: Persistenz in der Cloud

Thorsten Rottschäfer

Skalierbare Webanwendungen haben in der Cloud besondere Anforderungen bezüglich des Session Handlings. Das wesentliche Merkmal des Cloud Computings ist, dass die Cloud-Infrastuktur aktives Up- und Downscaling realisiert. Dadurch sind permanent aktive User Sessions in Gefahr, beendet zu werden. In diesem Artikel schauen wir uns Lösungsmöglichkeiten für dieses Problem an.

Über das Session Handling in Webapplikationen ist schon viel geschrieben worden. Im Kontext des Cloud Computings kommen jedoch weitere Aspekte hinzu, die wir uns hier etwas genauer anschauen wollen. Es werden bedingt durch die Elastizität der Cloud-Anwendung gezielt Serverprozesse beendet.

Abb. 1: Loadbalancer und mehrere Webserver, die skaliert werden

Das Up- und Downscaling funktioniert innerhalb der Cloud-Infrastruktur automatisch. Innerhalb der Cloud findet ein permanentes Monitoring der Webapplikation statt. Durch Monitoring der Auslastung einzelner Webserverinstanzen der Gesamtanwendung und anhand entsprechender Threshold-Parameter, die durch den Betreiber an die eigenen Up- und Downscaling-Bedürfnisse angepasst werden können, entscheidet die Umgebung, ob weitere Webserver gestartet werden müssen oder bereits laufende Instanzen beendet werden können (Abb. 1). Da in der Cloud im Allgemeinen die Kosten für die Gesamtanwendung nach Zeit bzw. laufender Instanz berechnet werden, ermöglicht dieses Verfahren eine möglichst wirtschaftliche Ressourcennutzung und minimiert somit die Kosten für den Betreiber der Webanwendung.

Leider gehen beim Downscaling aber die Sessions der Serverinstanz verloren, die heruntergefahren wird, wenn diese in flüchtigem Speicher liegen. Beim nächsten Zugriff bekommt der User, je nachdem wie gut die Anwendung programmiert ist, entweder eine Meldung, dass eine Session abgelaufen ist, oder einen technischen Fehler angezeigt. Da dieses Problem außerhalb der Wolke nur auftritt, wenn Serverinstanzen abstürzen oder nicht mehr reagieren, muss eine Lösung gefunden werden, damit man sich durch das Feature des Downscaling nicht indirekt einen Nachteil erkauft. Nebenbei bemerkt: Abgestürzte oder nicht mehr reagierende Instanzen werden innerhalb der Cloud durch permanentes Monitoring gefunden und durchgestartet.

Varianten der Sessionverwaltung

Schauen wir uns zunächst die verschiedenen, bekannten Strategien an, eine Session zu implementieren:

  • Die Session wird jedes Mal komplett zwischen Client und Server übertragen – eine wenig performante Strategie, denn je größer die Session der Anwendung wird, umso mehr Netzwerk-Traffic und interne Sessiondaten gibt es. Außerdem ist diese Methode unsicher, weil die Sessiondaten leicht ausspioniert und zu Angriffszwecken manipuliert werden können. Trotzdem würden trivialerweise in diesem Szenario in der Cloud keine Sessiondaten auf dem Server verloren gehen, weil sie gar nicht dort liegen.
  • Session Handling mittels HTTP-Cookie: zwischen Client und Server wird nur ein Session-Cookie hin- und hergeschickt. Im Falle mehrerer parallel arbeitender Webserver leitet der vorgeschaltete Loadbalancer anhand des Cookies den Request immer zu der Serverinstanz, die die passende Sessioninformation bereit hält (Sticky Session). Antwortet diese Instanz nicht mehr, wird der Loadbalancer den Request gemäß seiner Verteilungsstrategie zur nächsten ihm bekannten Serverinstanz weiterleiten, die aber mit dieser Session nichts anfangen kann. Die Anwendung meldet dann den Fehler einer abgelaufenen Session an den User zurück. Mehr Details zur Funktionsweise von HTTP-Cookies gibt es unter [1]. Es mag noch weitere Möglichkeiten geben, aber wir betrachten im Folgenden den gängigen Fall des Cookies, d. h. es werden möglichst wenig Daten zwischen Client und Server hin- und hergeschickt. Im Allgemeinen sind dies nur die Session ID und Formulardaten sowie zusätzliche HTTP-Parameter.
Geschrieben von
Thorsten Rottschäfer
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.