Frage

Im Moment meine Seite wird von einem einzigen Server bedient, aber ich erwarte die Notwendigkeit, meine Server-Kapazität zu erhöhen, bald. Statt meine Webseiten die Aufspaltung zwischen mehreren Servern und Sitzungen über mehrere Server verwalten zu müssen, mag ich auf sie mehr Web-Server alle mit der gleichen Code-Basis haben und Router basierte Round-Robin-Lastverteilung verwenden, um Benutzer auf jeden Server zu verteilen. Und sobald ein Benutzer einen Web-Server trifft, habe er während ihrer / seiner gesamten Sitzung mit diesem Web-Server bleiben. Mein Wissen brauche ich keinen speziellen asp.net Code habe dies zu erleichtern.

Hat jemand irgendwelche Vorbehalte oder Kommentare zu diesem Ansatz?

War es hilfreich?

Lösung

Was Sie sprechen, ist klebrig Sitzungen oder Sitzungsaffinität genannt. Wenn der Router dies unterstützt, dann sind Sie golden.

Der einzige caviat ist, dass die Lastverteilung nicht perfekt sein wird. Wenn Sie ein paar Hochlast-Benutzer haben, die alle zufällig auf demselben Server landen, werden sie bis zum Ende Sitzungen štáty es.

Ich habe diese Art von Load-Balancing implementiert, wo ich arbeite, und es erfordert keinen speziellen asp.net Code zu implementieren.

Andere Tipps

Die meisten (perhap alle) Loadbalancer tun haben die Fähigkeit, „sticky“ Sitzungen zu erzwingen, wo Benutzer auf der gleichen IP auf den gleichen Web-Server bei jeder Anfrage gerichtet sind. Es gibt keinen Code ändern, dies zu erreichen erforderlich. Es gibt zwei Einschränkungen, die in den Sinn kommen:

  1. Sticky Sessions verwenden bedeutet, dass die Verkehrslast nicht so gleichmäßig wie es wäre, verteilt werden, wenn Sie nicht klebrig Sitzungen verwendet haben. Jedoch kann die distributionshould "selbst genug" IMO.
  2. Es wird ein sehr kleiner Prozentsatz der Nutzer sein mit Proxy-Servern, die auf verschiedene IP-Adressen auf verschiedene Anfragen kommen können. Diese Benutzer können „odd“ Verhalten auftreten, wie sie auf verschiedene Server übergeben bekommen.

Ein weiteres Merkmal dieser Konfiguration ist, dass, wenn man die Server die Sitzungen der Benutzer auf dem Server eingehen wird ihre Sitzung auch noch verlieren. Ich denke, dies ist eine der am häufigsten verwendeten Setup, da es keine Entwicklungsaufwand erfordert, wenn der Router Sticky-Sitzung oder Sitzungsaffinität unterstützt.

Wie andere erwähnt haben, sollten Sie in der Lage sein, auf Sticky Sessions auf dem Load-Balancer zu drehen, die sich um die meisten „bleiben auf einem Server“ Fragen Sie nehmen sollten.

Allerdings sollten Sie sicherstellen, dass Sie eingeleitet haben, um Einstellungen mit einem Benutzer Landung auf dem falschen Server Mitte Sitzung zu bewältigen - Sticky Sessions sind in der Regel auf Basis von IP-Adresse und Benutzer IPs kann Mitte Sitzung ändern, wenn Sie Pech haben, oder ein Server kann offline gehen, und der Benutzer wird auf den anderen Server gerichtet werden.

Sie sollten sicherstellen, dass Ihr Machine gleich sind über alle Server -. dies stellt sicher, dass Sie den Ansichtszustand korrekt auf allen Servern entschlüsseln kann

Wenn Sie die Server besitzen, können Sie dies in der machine.config tun können, sonst kann man es auf der Anwendungsebene in der web.config eingestellt ist, können weitere Informationen in dieser gefunden werden, wie man:

  

konfigurieren MachineKey in ASP.NET 2.0

Es gibt einige geringfügige Unterschiede, wenn Sie auf IIS 7.5 laufen - Tess Ferrandez hat weitere Details in einem kürzlich erschienenen Beitrag " formular~~POS=TRUNC fehlschlägt, nachdem IIS 7.5 installieren".

Das andere, was Sie wahrscheinlich tun werden wollen, ist Ihr session von InProc entweder SQL- oder State.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top