2016-12-09 3 views
4

Wir haben zwei Server zum Lastenausgleich. Manchmal erhalten wir nach erfolgreicher Anmeldung in unserer Anwendung eine ungültige Sitzung und die Benutzersitzung ist abgelaufen, obwohl das Sitzungszeitlimit als 30 Minuten konfiguriert ist. Wir sind nicht sicher, ob die Authentifizierung in einem der Server stattfindet und die nachfolgende Anfrage an einen anderen Server geht. Dies scheint zufällig zu sein und passiert nicht allen Benutzern.HTTP-Sitzung in Load Balancer

Es wurde eine ungültige Sitzung festgestellt, die nur im ausgewählten Netzwerk auftritt. Unsere Anwendung ist in 21 verschiedenen Geschäften in ganz Indien verfügbar. Von diesen 7 Geschäften hat dieses Problem, sogar alle Läden Airtel Netzwerk. Unsere Anwendung funktioniert gut in meinem Büronetzwerk und der airtel Datenkarte. Aber mit seltsamen Problem beim Verbinden mit Jio-Netzwerk in meinem Laptop. Wie geschieht das nur im Jio-Netzwerk?

Language: Java 

Framework: Spring

Server: Jboss 7.1.1 

Antwort

6

Wie Sie gesagt haben, das Problem ist sehr wahrscheinlich, weil die Sitzung auf einem Server erstellt wird, aber einige der nachfolgenden Anfragen auf einen anderen Server gehen, die nicht die korrekte hat Attribute für die Sitzung und daher der Benutzer nicht angemeldet ist.

Sie müssen entweder sticky-Sitzung in Ihrem Lastenausgleich konfigurieren, sodass alle Anforderungen für eine bestimmte Sitzung immer an einen der zwei Server, auf denen die Sitzung ausgeführt wird, umleiten existiert (und bleibt dabei). Mit anderen Worten, sobald die Sitzung von Benutzer1 auf ServerA erstellt wird, bleiben alle nachfolgenden Anforderungen für diese Sitzung bestehen. Genauso kann die Sitzung von Benutzer2 auf demselben Server oder Server enden. Sticky Session (oder Session Affinität) Cam kann nur mit Konfiguration und ohne Code-Änderungen erreicht werden.

Alternativ können Sie die Sitzung in einer externen Datenquelle persistent machen und sie zwischen den beiden Servern freigeben, ohne dass eine sticky-Sitzung erforderlich ist. Das Spring Session-Framework bietet eine sehr praktische Möglichkeit, eine Sitzung mit vielen externen Datenquellen persistent zu machen. Session-Persistent erfordert Änderungen am Code (naja, Spring-Konfiguration), sie sind also etwas aufdringlicher als die Verwendung von Sticky-Sessions, aber sie dienen besser dem Lastenausgleich, der Skalierbarkeit und der Verfügbarkeit Ihrer Services.

Hier sind einige Hinweise, die Sie sich entscheiden, oder zumindest sollte helfen, mehr erfahren:

http://blog.haproxy.com/2012/03/29/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/

https://touk.pl/blog/2016/03/22/haproxy-sticky-sessions-for-soap-payloads/

http://docs.spring.io/spring-session/docs/current/reference/html5/

+0

Bemerkt ungültig Sitzung geschieht nur im ausgewählten Netzwerk. Unsere Anwendung ist in 21 verschiedenen Geschäften in ganz Indien verfügbar. Von diesen 7 Geschäften hat dieses Problem, sogar alle Läden Airtel Netzwerk. Unsere Anwendung funktioniert gut in meinem Büronetzwerk und der airtel Datenkarte. Aber konfrontiert seltsame Problem beim Verbinden mit Jio-Netzwerk in meinem Laptop –

+0

Was Load Balancer verwenden Sie? Einige Load Balancer (wie NGINX) unterstützen die Sitzungsaffinität (und legen diese als Standard fest) anhand der Client-IP-Adresse fest. Wenn dies der Fall ist, ist es möglich, dass die Client-IP, die der Server liest, unabhängig davon, von welcher Arbeitsstation aus Sie eine Verbindung herstellen, da die meisten Office-Netzwerke einen Proxy für den ausgehenden Datenverkehr verwenden, wenn Sie eine Verbindung von Ihrem Office-Netzwerk herstellen. Daher kann der Server die IP des Proxys nur als Client-IP sehen. Dies wird sich ändern, sobald Sie einen anderen Anbieter verwenden. Raten, aber wir hatten ähnliche Probleme bei der Verbindung von mobilen Daten vs Office-LAN/WAN. – Bloodysock

+0

Wir verwenden "F5" Load Balancer, Manchmal wird die Sitzung nach der Authentifizierung in Jio-Netzwerk ungültig, aber funktioniert in Airtel Netzwerk keine Idee, warum es passiert? Wie Sie dieses Problem beheben können, bitte helfen Sie. –