ist es möglich, die Sticky-Session-Informationen von Mod_jk für ein Failover-Setup auf einen anderen Apache zu replizieren?
Die Idee hinter der Frage besteht darin, zwei Apaches mit Sticky Sessions vor einigen Tomcats einzurichten. Wenn ein Apache ausfällt, sollte der andere die Mod_jk-Sitzungsinformationen übernehmen, damit er weiß, welche Anfragen an welchen Tomcat zu richten sind.
ich weiß, dass eine Alternative die Sitzungsreplikation auf Tomcat-Ebene wäre und nicht die Verwendung von Sticky Sessions, aber das ist derzeit nicht möglich.
Antwort1
Wenn Ihre Backend-Server (Tomcat) geclustert sind, sollten sie Sitzungen ebenfalls replizieren. Im Falle eines HTTP-Fehlers sollten Verbindungen zu einem HTTP-Knoten zu einem anderen Knoten weitergeleitet werden. Der Parameter jsessionid sollte http/mod_jk genügend Informationen geben, um zu wissen, zu welchem Knoten weitergeleitet werden soll (z. B. teilt jsessionid=lkj234lkj2ljk234lj.jvmRoute1 mod_jk mit, dass diese Sitzung für den Worker mit dem Namen jvmRoute1 fällig ist). Falls der angegebene Worker nicht verfügbar ist, sollte mod_jk zum nächsten Worker weiterleiten, der die Sitzung aus dem Cache abrufen sollte.
d. h. eine Replikation zwischen httpd-Servern ist nicht erforderlich, da das clientseitige Cookie oder die URL mit jsessionid die Routing-Informationen enthält.
Antwort2
Es sollte nicht notwendig sein, irgendetwas zwischen Apache-Knoten zu replizieren, da die Sitzungspersistenz von mod_jk zustandslos funktioniert.
Sie müssen jvmRoute in Tomcats server.xml festlegen und es muss mit dem Namen Ihrer jk-Worker übereinstimmen, der vom Balancer in mod_jk verwendet wird.