2016-03-23 5 views
2

Hallo, wir haben mit dem Azure Load Balancer gearbeitet und den Verteilungsmodus auf IP-Quelle eingestellt. Wir betreiben natürlich mehrere Webmaschinen.Azure Load Balancer, IP-Quelle, http-Sitzung in MVC

Wir verwenden dies mit einer MVC-Anwendung. Bisher haben wir keine Probleme mit der Aufrechterhaltung der Sitzung in Test festgestellt.

Meine Frage ist;

Ist es üblich, IP Source zu verwenden, um Sticky Sessions zu verwalten, so dass der Client immer an die richtige Box gesendet wird, die in Proc Sitzung läuft?

Gibt es irgendwelche Probleme mit oder Grube fällt mit diesem Setup.

Ich kann nirgendwo eine definitive Antwort finden.

Antwort

0

Die aktuelle Best Practice ist, wenn möglich, den serverseitigen Sitzungszustand zu vermeiden. was im Allgemeinen ungefähr 95% der Zeit ist. Dazu würden Sie die Cookie-basierte Authentifizierung in einer ASP.NET MVC-Anwendung verwenden. Und die meisten Daten, die im Sitzungsstatus gespeichert sind, können im Cache mit minimaler Auswirkung auf das System zwischengespeichert oder geladen werden. Immerhin ist das Web sowieso staatenlos.

IP Source-basierter Lastenausgleich ist in Ordnung; Verwenden Sie bei Bedarf den serverseitigen Sitzungsstatus. Die Anwendung sollte jedoch so entworfen/gebaut werden, dass sie staatenloser ist. Das heißt, dass Sitzungsdaten nur dann ordnungsgemäß geladen werden, wenn sie nicht vorhanden sind. Sie möchten Benutzeranfragen wirklich elegant bearbeiten, ohne eine Ausnahme auszulösen, wenn dies möglich ist, damit der Benutzer seine Arbeit fortsetzen kann.

Indem Sie Dinge zustandsloser halten, können Sie eine bessere Anwendungsleistung erzielen, indem Sie entweder Round-Robin oder Performance-basierten Lastenausgleich verwenden.

+0

Vielen Dank für Ihre Antwort. Ja, ich stimme dir zu, alles so staatenlos wie möglich zu machen. Wie du sagst, obwohl es die letzten 5% sind, die sehr schwer loszuwerden scheinen. Auf lange Sicht werden wir SourceIP nicht über den Load Balancer verwenden. Wir suchen nach einer anderen gemeinsam genutzten Caching-Lösung. Regis Cache wurde erwähnt. Dies ist ein vorübergehender Schritt für uns, um unsere Anwendung in die Cloud zu bringen. – Inglor

+0

Yeah, den serverseitigen Refactoring Session-Status in einer bestehenden Anwendung kann wirklich schwierig sein. So etwas wie Redis zu verwenden, ist zwar möglich, alle App-Instanzen zwischenzuspeichern, aber ich würde zunächst prüfen, welche Leistung es ist, die Daten einfach jedes Mal neu zu laden, wenn sie benötigt werden. Manchmal ist der Leistungseinbruch nicht so schlimm, wie Sie denken, aber Sie müssen die Dinge vollständig bewerten. Bitte, vergessen Sie nicht, die Antwort richtig zu markieren, wenn es hilft. Vielen Dank! –