Sticky Session Load Balancing
Bei zahlreichen Internet-Anwendungen ist es üblich, Sessions zu verwenden. Das bedeutet, dass eine geschlossene Sitzung zwischen dem Server und dem Client zustande kommt, bei denen der Datenaustausch Informationen aus vorherigen Eingaben berücksichtigt. Eines der häufigsten und anschaulichsten Beispiele hierfür ist der Warenkorb bei einem Online-Shop. Bei der Einleitung der Sitzung registriert der Server die Kundennummer und richtet einen leeren Warenkorb ein. Diese Informationen werden nun für den Aufbau jeder neuen Seite herangezogen und gegebenenfalls erweitert – wenn der Kunde dem Warenkorb ein Produkt hinzufügt. Die entsprechenden Daten bleiben über die gesamte Sitzungsdauer hinweg verfügbar und sind für eine ordnungsgemäße und einfache Bestellung sehr wichtig. Wenn nun jedoch ein Load Balancer zum Einsatz kommt, kann dies erhebliche Probleme mit sich bringen.
Was ist eine Sticky Session?
Die Verwendung eines Load Balancers kann erhebliche Probleme verursachen, wenn Sessions im Spiel sind. Hierbei verfügen mehrere Server über die benötigten Daten und ein Load Balancer verteilt die eingehenden Anfragen gleichmäßig auf die verschiedenen Systeme. In diesem Fall ist es möglich, dass die erste Anfrage des Clients an einen bestimmten Server weitergeleitet wird, der daraufhin die Session-Informationen speichert. Wenn der Nutzer nun eine weitere Seite aufruft, entsteht eine neue Anfrage. Dabei kann der Load Balancer diese an einen anderen Server übergeben. Da dieser nicht über die Session-Informationen verfügt, zeigt er die Seite nicht ordnungsgemäß an. Um dieses Problem zu vermeiden, gibt es zahlreiche Load Balancer, die eine Sticky Session unterstützen. Sticky heißt übersetzt klebrig. Die Idee, die hinter der Technik des Sticky Session Load Balancing steht, besteht darin, dass alle Anfragen die zur gleichen Session gehören an denselben Server weitergeleitet werden.
Um dies zu erreichen, gibt es mehrere Möglichkeiten. Zum einen kann das Sticky Session Load Balancing Cookies versenden. Diese baut der Load Balancer in die Daten, die Server und Client austauschen, ein und außerdem wertet er die Inhalte der Cookies aus, um die Anfragen an den richtigen Server weiterzuleiten. Eine andere Methode besteht darin, die IP-Adresse der Clients heranzuziehen. Die Load Balancer Sticky Session leitet alle Anfragen die von der gleichen Adresse stammen an denselben Server weiter. Darüber hinaus gibt es sehr fortschrittliche Systeme die den Datenverkehr auswerten und darin eigenständig Informationen über Sessions erkennen.
Probleme der Sticky Session im Onlineshop
Wenn bei einem Online-Shop, der auf mehreren physischen Servern verfügbar ist, ein Kunde eine Sitzung einleitet, ist es sehr wichtig, dass alle weiteren Anfragen an den gleichen Server übergeben werden. Wenn verschiedene Server die Anfragen entgegennehmen, führt dies dazu, dass der Warenkorb immer wieder leer ist. Zwar ist es theoretisch auch möglich, die Sitzungsdaten zentral zu speichern, sodass alle Server darauf zugreifen können, doch wäre dies sehr umständlich und würde die Effizienz beeinträchtigen. Sticky Sessions helfen dabei, diese Probleme zu vermeiden. Doch kann es auch hierbei hin und wieder zu unerwünschten Effekten kommen. Beispielsweise akzeptieren zahlreiche Nutzer keine Cookies, sodass die erste Alternative nicht angewandt werden kann. Außerdem ist es möglich, dass sich ein Client über verschiedene Proxys einloggt, sodass sich die IP-Adresse ändert. Daher sind auch bei dieser Methode Probleme nicht ausgeschlossen.
Sticky und NON-Sticky Sessions
Sticky Sessions bewirken, dass alle Nutzeranfragen während einer Sitzung zum gleichen Server weitergeleitet werden. Das ist zwar in den meisten Fällen erfolgreich, da auf diese Weise alle benötigten Daten auf dem Server verfügbar sind, doch kann dies hin und wieder zu den beschriebenen Problemen führen. Daher ist es in einigen Fällen sinnvoll, NON-sticky Sessions zu nutzen. Dabei wird die Anwendung so programmiert, dass es für den Erhalt der Sitzungs-Informationen nicht erforderlich ist, dass stets derselbe Server die Anfragen beantwortet.