Was ist der Nachteil von Sticky Sessions mit Load Balancern?

13

Wir haben eine Webfarm mit IIS7-Computern, die hervorragend funktionieren. Vor ihnen steht ein F5 Big-IP- Hardwarelastausgleich, der ebenfalls einwandfrei funktioniert :)

Alt-Text
(Quelle: www.f5.com )

Derzeit verwenden wir ein ASP.NET State Service, um unseren OutProc- Status zu verarbeiten. Dies ist erforderlich, wenn Sie über eine Webfarm verfügen, um alle Arten von Sitzungsinformationen zu verwalten.

Ich habe mich gefragt, ob wir auf dem F5 Big-IP Sticky-Sessions haben und daher von OutProc zurück zu InProc wechseln könnten . Wenn ja, was ist der Nachteil davon? Ich kenne die Schattenseiten von InProc und OutProc, also mach dir keine Sorgen, das zu erklären. Ich interessiere mich mehr für die Vor- und Nachteile von Sticky Sessions ohne F5 Big-IP .

Kann jemand etwas Licht und / oder Erfahrung bringen?

Pure.Krome
quelle

Antworten:

15

Es gibt zwei Hauptnachteile:

  1. Ihre Ladung ist nicht gleichmäßig verteilt. Sticky Sessions bleiben erhalten, daher der Name. Während anfängliche Anfragen gleichmäßig verteilt werden, verbringen Sie möglicherweise mehr Zeit mit einer beträchtlichen Anzahl von Benutzern als mit anderen. Wenn alle anfänglich auf einen einzelnen Server eingestellt sind, ist dieser Server viel stärker ausgelastet. In der Regel hat dies keine großen Auswirkungen und kann durch mehr Server in Ihrem Cluster verringert werden.

  2. Proxies konglomerieren Benutzer zu einzelnen IP-Adressen, die alle an einen einzelnen Server gesendet werden. Dies schadet normalerweise nicht, abgesehen von der Erhöhung der einzelnen Serverlasten, können Proxys auch in einem Cluster betrieben werden. Eine Anfrage von einem solchen System an Ihr F5 wird nicht unbedingt an denselben Server zurückgesendet, wenn die Anfrage von einem anderen Proxy-Server in dessen Proxy-Cluster stammt.

AOL war zu einem bestimmten Zeitpunkt mit Proxy-Clustern beschäftigt und mit Load Balancern und Sticky-Sessions überfordert. Die meisten Load-Balancer bieten jetzt Sticky-Sessions an, die auf C-Class-Netzbereichen basieren, oder, im Fall von F5, Cookie-basierte Sticky-Sessions, in denen der Endknoten in einem Webanforderungs-Cookie gespeichert wird.

Während Cookie-basierte Sitzungen funktionieren sollten, hatte ich einige Probleme damit und wähle normalerweise IP-basierte Sitzungen. BIG HOWEVER: Ich arbeite hauptsächlich an internen Apps - die DMZ-Laufleistung kann variieren.

Abgesehen davon hatten wir einige große Erfolge mit Sites, auf denen F5 mit Sticky-Sessions und In-Proc-Sessions ausgeführt wurde.

Vielleicht möchten Sie sich auch eines der im Speicher verteilten Cachingsysteme wie Memcached oder Velocity ansehen, um eine Alternative zu einer in SQL gespeicherten Sitzung oder dem Out-of-Proc-Speicherdienst zu finden. Sie kommen der Geschwindigkeit des In-Proc-Speichers nahe und können ihn auf mehreren Servern ausführen.

Christopher_G_Lewis
quelle
Gibt es neben der CPU Möglichkeiten, die aktuellen Verbindungen und / oder die Bandbreite auf einem Windows 2008-Computer mit IIS7 zu überprüfen, um festzustellen, ob ein Server zu stark ausgelastet ist? Mit welchen Metriken stellen Sie im Grunde sicher, dass Server nicht überlastet werden?
Pure.Krome
Wir haben vor einiger Zeit eine Mischung aus Sticky-IP- und Sticky-Cookie-Sessions verwendet und dabei eine ungleichmäßige Verteilung festgestellt, aber nicht fürchterlich. Der AOL-Proxy-Cluster war ein Albtraum für IP-Clustering, und wir mussten Ausnahmen hart codieren.
Ericlaw
Native Perf Counters zeigen aktive HTTP-Verbindungen an.
Christopher_G_Lewis
@Christopher_G_Lewis Würde es Ihnen etwas ausmachen, auf die Probleme einzugehen, die Sie mit Cookie-basierten Sitzungen auf F5 hatten?
Eugene Beresovsky
4

Neben der hervorragenden Antwort von Christopher haben Sie durch ständige Sitzungen einige der enormen Vorteile redundanter Server eingebüßt - die Möglichkeit, einen oder mehrere Server für Wartungszwecke außer Betrieb zu setzen, und die Transparenz bei Systemausfällen.

Ich halte Sticky-Sessions für einen starken Indikator für schlechte Anwendungsarchitektur und / oder schlechte Programmierung. "Um jeden Preis vermeiden" ist mein Motto.

womble
quelle
Hervorragende Gedanken zur Wartung. Wir werfen einen DRAIN auf einen Server, lange bevor wir ihn aus dem Cluster entfernen. DRAIN bedeutet, dass aktuelle Sitzungen verarbeitet werden, auf diesem Server jedoch keine neuen Sitzungen gestartet wurden.
Christopher_G_Lewis
Zum Glück muss niemand kurzfristig eine Wartung durchführen, und ein Server muss niemals unerwartet ausfallen (was dazu führt, dass alle Sitzungen, die an diesem Server hängen bleiben, plötzlich unbrauchbar werden - ich wette, die Kunden lieben das).
womble
Können Sie von einem Server ENTLEEREN, ohne auf dem F5 selbst eine Konfiguration vornehmen zu müssen? Grundsätzlich haben wir keinen Zugriff auf das F5 (es wird für uns in einem verwalteten Hosting-Szenario verwaltet), aber wir haben vollen Zugriff auf unsere Webserver. Können Sie also eine Datei oder etwas auf einer Website DROPPEN?
Pure.Krome
Unsere F5 bestimmen Server auf / Server ab / Drain über eine Textdatei auf der Website - der Kontext der Datei lautet "UP / DOWN / DRAIN". Untersuchen Sie Ihre IIS-Protokolle, um festzustellen, was sie anzeigen. Beachten Sie, dass der F5 manchmal nur eine SYN / ACK-Operation an einem TCP / IP-Port ausführt. In diesem Fall muss Ihr Hoster die Konfiguration des F5 ändern.
Christopher_G_Lewis