Question Equilibrage de la charge Apache lorsque l'identifiant de session est dans l'URL


Je n'en ai vraiment aucune idée...

J'ai une application Web Java qui stocke l'identifiant de session dans une URL plutôt que d'utiliser des cookies. Je souhaite exécuter l'application sur 2 serveurs Tomcat et les mettre en face d'un serveur Apache pour l'équilibrage de la charge.


            __ tomcat1
Apache ----/
           \__ tomcat2

En mettant le jvmRoute à tomcat1dans le Tomcat server.xml fichier, l'URL deviendra http://url;jsessionid=id.tomcat1. Il est donc possible d’obtenir l’authenticité de la session en consultant l’url et en l’acheminant vers le serveur correspondant.

je le sais mod_proxy et mod_jk et équilibrer la charge, mais leur session collante ne fonctionne que lorsque l’identifiant de session est stocké dans des cookies. Dans mon cas, l'identifiant de session est codé dans l'URL. Comment puis-je faire l'équilibrage de charge?


5
2017-07-01 07:08


origine


@Santhosh ne devrait pas être = ROUTEID au lieu de = BALANCEID - Sprout


Réponses:


Peut-être que votre configuration est incorrecte. La documentation n'est pas spécifiée sticky-session ne fonctionnant que par des cookies.

stickysession - Nom de la session collante du balancier. La valeur est généralement définie sur quelque chose comme JSESSIONID ou PHPSESSIONID et dépend du serveur d'applications principal qui prend en charge les sessions. Si le serveur d'applications principal utilise un nom différent pour les cookies et un identifiant URL codé (comme des conteneurs de servlets), utilisez | pour les séparer. La première partie concerne le cookie, la seconde le chemin.

Vous pouvez donc spécifier le sessionid comme ci-dessous.

ProxyPass / balancer://mycluster/ stickysession=|jsessionid

J'espère que cela t'aides.


4
2017-07-07 10:42



Merci pour votre aide. Mais nous constatons que les ressources dynamiques générées par l'application ne contiennent pas d'ID de session dans leur URL. Nous sommes donc obligés d'utiliser des cookies pour stocker l'identifiant de session. - KK Lo


Pour créer le sticky, nous devons ajouter la ligne suivante dans votre configuration (mod_proxy)

Header add Set-Cookie "BALANCEID=hej.%{BALANCER_WORKER_ROUTE}e; path=/;" env=BALANCER_ROUTE_CHANGED

Puis spécifiez le nom de la route dans la configuration

<Proxy balancer://mycluster>
    BalancerMember http://tomcat sever1.ip:8080  route=AcZxv
    BalancerMember http://tomcat server2.ip:8080 route=AcXxv
    lbmethod=byrequests stickysession=BALANCEID
</Proxy>

Et ajoutez ces noms de routage à tcserver.node dans catalina.properties des serveurs tomcat

tcserver.node=AcZxv (tomcat 1st server)
tcserver.node=AcXxv (tomcat 2nd server)

3
2017-12-03 22:28