Frage

Kann im Kontext von Tomcat eine Sitzungsreplikation stattfinden, ohne die klebrige Sitzung zu aktivieren?

Ich verstehe, dass der Zweck der klebrigen Sitzung darin besteht, dass der Client -Sticks "Sticks" zu einem Server während der gesamten Sitzung zu haben. Mit der Sitzungsreplikation wird die Interaktion des Clients mit dem Server im gesamten Cluster (viele Webserver) repliziert.

Kann im obigen Fall eine Sitzungsreplikation stattfinden? Die Sitzung des IE -Clients ist jedoch auf den Webservern verteilt und jede Interaktion mit einem Webserver wird so repliziert, wodurch eine nahtlose Interaktion ermöglicht wird.

War es hilfreich?

Lösung

Afaik, Tomcat Clustering unterstützt keine nicht entsprechenden Sitzungen. Aus Tomcat -Dokumente:

Stellen Sie sicher, dass Ihr LoadBalancer für den Sticky Session -Modus konfiguriert ist.

Aber es gibt eine Lösung (ich habe erstellt, also weißt du, dass ich voreingenommen bin :-)) angerufen Memcached-Session-Manager (MSM), das auch nicht übertrickende Sitzungen unterstützt. MSM verwendet memcached (oder ein Backend, das das Memcached -Protokoll spricht) als Backend für die Sitzungssicherung/-speicher.

In den nicht entsprechenden Modus werden Sitzungen nur in Memcached und nicht mehr in Tomcat gespeichert, wie bei nicht-entsprechenden Sitzungen muss der Sitzungsgeschäft extern sein (um abgestandene Daten zu vermeiden).

Es unterstützt auch die Sitzungssperrung: Mit mehreren Sitzungen können parallele Anfragen auf verschiedene Tomcats treffen und die Sitzung parallel ändern, sodass einige der Sitzungsänderungen möglicherweise von anderen überschrieben werden. Die Sitzungsverriegelung ermöglicht die Synchronisation paralleler Anfragen an verschiedene Tomcats.

Das MSM -Homepage beschreibt hauptsächlich den Ansatz der Sticky-Sitzung (wie nur mit diesem) für Einzelheiten zu nicht-entsprechenden Sitzungen, die Sie möglicherweise suchen oder nach der Frage nach der Befragung sind Mailingliste.

Details und Beispiele zur Konfiguration finden Sie in der MSM Wiki (SetupandConfiguration).

Nur um Ihnen eine Idee in Bezug auf die Komplexität zu geben: Was Sie brauchen, ist eine oder mehrere memcached Server, die ausgeführt werden (oder s.th. ähnlich sprechende Memcached) und ein aktualisierter Tomcat context.xml wie folgt:

<Context>
  ...
  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:host1.domain.com:11211,n2:host2.domain.com:11211"
    sticky="false"
    sessionBackupAsync="false"
    lockingMode="auto"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    />
</Context>

Ihr Load-Balancer benötigt keine spezielle Konfiguration. Sobald Sie diese Dinge haben, können Sie Ihre Anwendung testen.

Andere Tipps

Ein ausgezeichneter Artikel zu diesem Thema hier:

Das von ihnen erwähnte Terrakotta -Produkt hat hier ein simpeltes Tutorial:

Terrakotta arbeitet an Tomcat, aber Sie müssen darauf achten, zu überprüfen, welche Terrakotta -Teile kostenlos sind und welche kommerziell sind. Vor ein paar Jahren wurde ihr redundantes Geschäft bezahlt und ich erinnere mich nicht, dass diese Lösung ein getrenntes Produkt ist.

Ich habe diese Frage tatsächlich umgekehrt gefunden. Die Sitzungsreplikation für mich (Tomcat7) mit den OOTB -Optionen funktioniert nur ordnungsgemäß ohne klebrige Sitzung. Nachdem ich das Protokollieren gedreht hatte, stellte ich fest, dass meine Sitzungs -ID mit den JVMRoutes von A123456789 bis A123456789.01 - mit dem JVMRoute angepasst wurde. Diese Sitzung wird erfolgreich vom Knoten 01 im Cluster zu Knoten 02 repliziert, verwendet jedoch dieselbe ID (A123456789.01). Wenn ich den Knoten 01 aus dem Cluster herausnehme, startet der Verkehr auf den Knoten 02 - und er sucht jetzt für eine Sitzung A123456789.02, was natürlich nicht existiert. .01 ist da, sitzt aber im Grunde genommen im Leerlauf, bis es abläuft. Wenn ich den anderen Server aufbringe und die Sitzungen wiederholt werden und dann 02 nach unten nehmen, bekomme ich noch nervöses Verhalten, da die Sitzung dort abgeholt wird, wo sie aufgehört hat.

Für mich ist bisher die Sitzungsreplikation ohne klebrige Sitzungen (nur regelmäßige RR unter den Knoten im Cluster) das einzige, was funktioniert hat.

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