# Zustand prüfen trotz Loadbalancer



## danielmaann (18. Jul 2018)

Hallo zusammen
In letzter Zeit beschäftige ich mich mit einem Thema und bei dem geht es um den Zustand.
Bei der REST-Technologie wird ja von einer zustandslosen Technologie gesprochen. Trotzdem werden viele Applikationen damit geschrieben und auch "Zustände" werden durchaus da generiert. 
Z.B. Bei einem Login wird ein Token generiert das, dann immer an die Schnittstelle gesendet wird. In meinem Fall nehmen wir nun das JWT (Json Web Token).
Das funktioniert ja auch alles einwandfrei. Was mich aber wunder nimmt ist, wenn ich zwei Instanzen der Software hochfahre, davor einen Loadbalancer habe, woher weiss der eine Server welche Tokens beim anderen sind?

*Kurz und knapp:*
Eine Instanz, Login mit Token und Prüfung = Kein Problem
Bei zwei Instanzen und einem LB kommt man nicht immer auf die gleiche Instanz. Wie gleichen diese zwei sich ab das beide von den selben Tokens wissen?


----------



## mrBrown (18. Jul 2018)

JWT hat den Vorteil, dass man Serverseitig nicht zwingend Zustand halten muss.

Als Beispiel: du generierst den Token mit den nötigen Informationen und signierst diesen dann. Nur das zum Signieren genutzte (z.B. Key oder Zertifikat) muss allen Servern bekannt sein, dies ist aber nicht Session-Abhängig.


----------



## Dukel (18. Jul 2018)

Wenn wirklich ein Zustand gespeichet werden muss dann geht das mit einer dritten Instanz wie einer Datenbank.
D.h. es gibt eine (verfügbar aufgestellte) Datenbank, die die Session Informationen speichert und beide Applikationsserver greifen auf diese Datenbank zu.


----------



## JuKu (5. Aug 2018)

danielmaann hat gesagt.:


> Was mich aber wunder nimmt ist, wenn ich zwei Instanzen der Software hochfahre, davor einen Loadbalancer habe, woher weiss der eine Server welche Tokens beim anderen sind?



Kurz und knapp:
Entweder werden diese Informationen irgendwo gespeichert (z.B. in einem Distributed Cache oder in einer Datenbank) oder die beiden Server müssen sich unterhalten und untereinander die Daten austauschen.



danielmaann hat gesagt.:


> Bei zwei Instanzen und einem LB kommt man nicht immer auf die gleiche Instanz. Wie gleichen diese zwei sich ab das beide von den selben Tokens wissen?



Also erstens kannst du einen LB immer so konfigurieren, dass der letzte Server bevorzugt wird (z.B. über IP oder bei HTTP über Cookies). Ansonsten siehe oben, Datenbank oder Interconnects.


----------

