Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1450 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JSP-Servlet] Répartition de charge d'une web-app

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JSP-Servlet] Répartition de charge d'une web-app

n°285374
El_gringo
Posté le 13-01-2003 à 17:08:07  profilanswer
 

Alors, voila mon pb. Je suis sur qu'une solution existe, surement dans J2EE.
J'ai une web-app, qui utilise le système de sessions de l'API de servlets. Tomcat4, IIS, jdk1.4
On fait tourner ma web-app sur 2 serveurs différents (donc 2 moteurs de servlet, 2 serveurs web). On utilise un système de répartition des charges, qui répartie chacune des requètes sur un des 2 serveurs.
Le problème est le suivant : Quand un utilisateur ouvre une session sur le serveur A, rien ne guaranti que celui-ci n'émmettra de requêtes, ni ne recevra de réponses QUE sur ce même serveur A. Et une session ouverte sur le serveur A est évidement inexistante sur le serveur B. D'ou : problème si la requète n'abouti pas sur le même serveur.
Le problème doit être assez banal, qqn saurait me dire comment  le résoudre ?

mood
Publicité
Posté le 13-01-2003 à 17:08:07  profilanswer
 

n°285377
darklord
You're welcome
Posté le 13-01-2003 à 17:11:11  profilanswer
 

non le problème est loin d'etre banal et c'est le serveur qui doit s'en occuper.
 
Typiquement un WAS en intégration horizontale offre ce type de fonctionnalités pour peu que tu utilise la session IBM machin chose, en gros une sous classe de HttpSession (et donc tu perds la généricité de ton code). Je ne sais pas avec WAS 4 ou 5 mais en WAS 3.5 tu étais obligé en tout cas.
 
Regarde si tomcat offre ce genre de fonctionnalité. Quel système de répartition des charges utilises tu?


---------------
Just because you feel good does not make you right
n°285415
benou
Posté le 13-01-2003 à 17:35:17  profilanswer
 

il me semble pas que tomcat gère ca mais je peux me tromper.
 
En théorie, c'est plutot au frontal de gérer ca mais ca signifie qu'il doit être capable de repérer lorsqu'une requête fait partie d'une session ouverte et d'adresser le bon moteur de servlet derrière.
 
C'est loin d'être évident...

n°285419
darklord
You're welcome
Posté le 13-01-2003 à 17:37:13  profilanswer
 

benou a écrit :

il me semble pas que tomcat gère ca mais je peux me tromper.
 
En théorie, c'est plutot au frontal de gérer ca mais ca signifie qu'il doit être capable de repérer lorsqu'une requête fait partie d'une session ouverte et d'adresser le bon moteur de servlet derrière.
 
C'est loin d'être évident...


 
ah oui mais ca c'est différent hein :o C'est pour ca que je te demandais quel système de répartition de charge tu utilisais. Ton problème est intéressant cela dit, si j'y pense ce soir je jetterai un coup d'oeil


---------------
Just because you feel good does not make you right
n°285425
benou
Posté le 13-01-2003 à 17:42:20  profilanswer
 

pkoi tu dis que c'est différent ? c'est en plein dans le problème non ?

n°285431
El_gringo
Posté le 13-01-2003 à 17:47:08  profilanswer
 

Je suis en train de me renseigné sur le système de répartition des charges utilisé (c pas ds ma boite).
Ms je trouve bisare que le problème ne soit pas déja archi connu, plusieurs serveurs pour une web-app, j'imaginais que c'était assez courant...

n°285450
lorill
Posté le 13-01-2003 à 18:10:04  profilanswer
 

ben si c'est mod_jk (ce qui est fort probable), il assure le suivi de session. En fait il concatène le nom du worker a la session et le relit a chaque requete, pour le filer au même que précédement.  
Si c'est bien ca que tu utilises, je peux te donner plus de détails, je m'étais amusé a lire le source  :o

n°285482
darklord
You're welcome
Posté le 13-01-2003 à 19:03:55  profilanswer
 

benou a écrit :

pkoi tu dis que c'est différent ? c'est en plein dans le problème non ?


 
bin non. Dans le cas de WAS par exemple c'est géré au niveau interne c'est pas le répartissuer de charge qui route la requete sur le bon serveur.


---------------
Just because you feel good does not make you right
n°285635
einstein2
Windaube, FAIS l'EFFORT !
Posté le 13-01-2003 à 22:49:17  profilanswer
 

lol
 
c hyper courant ton truc...... :bounce:  
la repartition des charges elle fonctionne comment?  :heink:  
la phrase qui me perturbe, et une session ouverte sur le serveur A est EVIDEMENT inexistante sur le serveur B  :cry:  
c pas possible de cloner les sessions?  :sarcastic:  
je deconne bien sur.
enfin c qd même bizarre que le repartiteur de charge ne gère pas les sessions des serveurs avec. c quoi ce repartiteur suit trés curieux  :ouch:  
bahhh dis moi le nom que je note.
ON VEUT CONNAITRE L'ARCHITECTURE DE TES SERVEURS  :lol:  
 
c hyper interessant ton sujet
 
ben tu l'as testé ton appli web?
ça fait quoi alors quand tu te connectes sur A, et B ensuite
 
heuuuuuu au fait IIS c bien?
Apache c pas mieux au fait? :??:


Message édité par einstein2 le 13-01-2003 à 23:22:01
n°285684
--greg--
Posté le 13-01-2003 à 23:51:06  profilanswer
 

:heink:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
mood
Publicité
Posté le 13-01-2003 à 23:51:06  profilanswer
 

n°285731
benou
Posté le 14-01-2003 à 03:00:26  profilanswer
 


 
Crois-tu vraiment que ton poste fais avancer les choses ?

n°285748
El_gringo
Posté le 14-01-2003 à 09:06:37  profilanswer
 

Les clients n'ont pas encore répondu au mail ds lequel je demande comment est gérée leur répartition de charge. Mais en fait, g ma petite idée quand au pb. J'imagine que leur répartition de charge est faite au niveau d'IIS, avec un truc qui ne "connait" même pas l'existance de Tomcat (il n'y connaissent vraiment pas grand chose, c tjs moi qui dois leur dire comment faire quoi !). Ds ce cas là, ce ne serait pas étonnant que les sessions de Tomcat (Servlet/JSP) ne soient pas maintenues d'un serveur à l'autre, non ?

n°285749
El_gringo
Posté le 14-01-2003 à 09:13:37  profilanswer
 

einstein2 a écrit :


ben tu l'as testé ton appli web?
ça fait quoi alors quand tu te connectes sur A, et B ensuite
 
heuuuuuu au fait IIS c bien?
Apache c pas mieux au fait? :??:  


 
G testé mon appli web. J'vois pas l'rapport.
Qd j'me connecte sur A et que B répond !? g pas essayé (g lu un rapport du client!), ms ça me parait évident que, d'un coup, le client à une réponse comme quoi il est pas connecté.
 
IIS, si c bien. J'en sais rien. Moi je l'utilise que pour test. Pour tests il fonctionne, Apache aussi ! :D

n°285781
benou
Posté le 14-01-2003 à 10:27:48  profilanswer
 

il me semble qu'en substance, le gusse te disais qu'il fallait que tu gères des sessions partagés. Ca signiffie mettre en place de la distribution d'objet, etc ...
 
Si il t'avais fillé des liens de produit qui gérait ca, son poste aurait été nettement plus utile !

n°285801
El_gringo
Posté le 14-01-2003 à 10:45:58  profilanswer
 

benou a écrit :

il me semble qu'en substance, le gusse te disais qu'il fallait que tu gères des sessions partagés. Ca signiffie mettre en place de la distribution d'objet, etc ...
 
Si il t'avais fillé des liens de produit qui gérait ca, son poste aurait été nettement plus utile !


 
sans doute ouais, parce que là...

n°285912
El_gringo
Posté le 14-01-2003 à 13:49:32  profilanswer
 

lorill a écrit :

ben si c'est mod_jk (ce qui est fort probable), il assure le suivi de session. En fait il concatène le nom du worker a la session et le relit a chaque requete, pour le filer au même que précédement.  
Si c'est bien ca que tu utilises, je peux te donner plus de détails, je m'étais amusé a lire le source  :o  


 
Pr l'instant, je sais pas ce que le client utilise. Mais peut être que si c pas le cas, on peut lui imposer d'utiliser ça. ça m'interresse énormément ce que tu me dis là. Tu peux approfondir ?

n°285921
lorill
Posté le 14-01-2003 à 13:55:53  profilanswer
 

El_gringo a écrit :


Pr l'instant, je sais pas ce que le client utilise. Mais peut être que si c pas le cas, on peut lui imposer d'utiliser ça. ça m'interresse énormément ce que tu me dis là.


ben en fait j'y crois plus trop la... C'est un module apache qui fait la redirection vers le worker tomcat quivabien(tm), mais s'ils utilisent IIS, ca doit pas être ca... a moins que ca marche aussi, faut que je verifie

n°285923
El_gringo
Posté le 14-01-2003 à 13:56:00  profilanswer
 

El_gringo a écrit :


 
Pr l'instant, je sais pas ce que le client utilise. Mais peut être que si c pas le cas, on peut lui imposer d'utiliser ça. ça m'interresse énormément ce que tu me dis là. Tu peux approfondir ?


 
Ha... ça m'interresse qd même, me je suis qd même vachement déçu. Apparement, mod_jk, c ce qui fait le lien entre Tomcat4 et le serveur web Appache. G dit que le client utilisait (pour l'instant) IIS et Tomcat4... :-(

n°285928
lorill
Posté le 14-01-2003 à 13:57:35  profilanswer
 

aparement y'a aussi jk pour iis, cf
http://jakarta.apache.org/tomcat/t [...] howto.html

n°285929
El_gringo
Posté le 14-01-2003 à 13:57:52  profilanswer
 

lorill a écrit :


ben en fait j'y crois plus trop la... C'est un module apache qui fait la redirection vers le worker tomcat quivabien(tm), mais s'ils utilisent IIS, ca doit pas être ca... a moins que ca marche aussi, faut que je verifie  


 
J'en doute ! Pour la redirection IIS-Tomcat aussi on utilise une module. Mais celui-ci est écrit en C++. Je doute qu'il ai sont mot à dire sur les sessions et compagnie. Et mon avis, il se contente de prendre l'html généré par Tomcat et de le brancher sur IIS...

n°285933
El_gringo
Posté le 14-01-2003 à 13:59:41  profilanswer
 


 
Ho !? miracle... c ce que j'utilise.
Et comment tu configure pour cette séparation dont tu parles !?

n°285948
El_gringo
Posté le 14-01-2003 à 14:05:58  profilanswer
 

Le config du module IIS ressemble à celle de mod_jk pour Apache ?

n°285951
lorill
Posté le 14-01-2003 à 14:06:42  profilanswer
 

comme ca :
 
http://jakarta.apache.org/tomcat/t [...] howto.html
 
avec ca et l'url précédente tu devrais t'en tirer, mais je peux te rassurer, c'est le module qui assure le suivi de session.

n°285953
lorill
Posté le 14-01-2003 à 14:07:30  profilanswer
 

El_gringo a écrit :

Le config du module IIS ressemble à celle de mod_jk pour Apache ?

chais pas, jamais utilisé IIS, mais vu que c'est fait par les mêmes, au sein du même projet, doit bien y'avoir des trucs identiques (style la definition des workers)

n°285960
El_gringo
Posté le 14-01-2003 à 14:15:47  profilanswer
 

lorill a écrit :

comme ca :
 
http://jakarta.apache.org/tomcat/t [...] howto.html
 
avec ca et l'url précédente tu devrais t'en tirer, mais je peux te rassurer, c'est le module qui assure le suivi de session.


 
J'étais déja en train de lire ça, merci.
ça m'a l'air bon tout ça, très bon. Lorill, je sent que tu vas être mon sauveur... :bounce:

n°285962
lorill
Posté le 14-01-2003 à 14:18:07  profilanswer
 

El_gringo a écrit :


Lorill, je sent que tu vas être mon sauveur... :bounce:  


 :non: faut dire merci aux gens qui maintiennent JK.
ca fait toujours plaisir  :)

n°285979
El_gringo
Posté le 14-01-2003 à 14:32:09  profilanswer
 

Ha... merde, ce que j'étais en train de lire, j'pense pas que ça soit vraiment ce que je cherche. Ils expliquent comment créer plusieurs worker (1 par instance de Tomcat j'imagine). Mais ça, ça permet de répartir la charge selon l'url demandée, tu crois pas ?


Sometimes you want to serve different contexts with different Tomcat processes (for example to spread the load among different machines). To achieve such goal you will need to define several workers and assign each context with its own worker.  
 
Defining workers is done in workers.properties, this file includes two types of entries:  
 
 
 
An entry that lists all the workers defined
worker.list=worker1, worker2  
 
Entries that define the host and port associated with these workers
worker.worker1.host=localhost  
worker.worker1.port=8009  
worker.worker1.type=ajp13  
worker.worker2.host=otherhost  
worker.worker2.port=8009  
worker.worker2.type=ajp13  
 
 
 
 
The above example defined two workers, now we can use these workers to serve two different contexts each with its own worker :  
 
 
example uriworkermap.properties fragment
/examples/*=worker1  
/webpages/*=worker2  
 
 
 
 
As you can see the examples context is served by worker1 while the webpages context is served by worker2 .  
 
More informations on using and configuring workers in the Workers HowTO  


 
Toi t'avais rien à configurer pour que le mécanisme dont tu parlais fonctionne ?
"il concatène le nom du worker a la session et le relit a chaque requete, pour le filer au même que précédement"


Message édité par El_gringo le 14-01-2003 à 14:36:10
n°285984
El_gringo
Posté le 14-01-2003 à 14:38:04  profilanswer
 

Ms en fait, j'y pense, pour le mécanisme dont tu parlais, il faut n'avoir qu'une seule instance du serveur web (Apache ou IIs), et autant d'instance de Tomcat qu'on veut, non ?
Je suis sur qu'ils font tourner 2 IIS à la fois. C impossible que ça marche comme ça !

n°286004
El_gringo
Posté le 14-01-2003 à 14:53:42  profilanswer
 

Apparement, que ce soit pour servir Apache ou IIS, on s'en fout. Ma question est : comment paramètrer plusieurs "worker", ou chaque "worker" correspond à une instance de Tomcat. Ces worker étant utilisés pour répartir la charge, ils seront utilisés indifférement de l'url demandée.
Lorill, tu sais répondre à cette question simplement ou pas ?

n°286012
einstein2
Windaube, FAIS l'EFFORT !
Posté le 14-01-2003 à 15:00:57  profilanswer
 

ha bon j'ai ecrit que des conneries?
 
ben j'attend les explications alors ... :bounce:  
les sessions doivent etre prises en charge par le repartiteur, c le mieux amha, car c'est le seul élément de l'architecture qui coordonne les taches sur les serveurs, les serveurs eux recoivent une requete mais le fait que l'on rajoute un serveur est transparent pour lui.
 
aprés que la requete aille sur a, b, c ....ou x on s'en contre balance si le repartiteur a bien fait son boulot tous les serveurs connaissent le USER.
 
moi je vois un ordinateur Frontal qui distribue avec des serveurs derrière....pkoi vous voyez koi vous?
 
si ça existe pas, faut le faire, le programmer koi!


Message édité par einstein2 le 14-01-2003 à 15:04:14
n°286049
lorill
Posté le 14-01-2003 à 15:34:17  profilanswer
 

El_gringo a écrit :

comment paramètrer plusieurs "worker", ou chaque "worker" correspond à une instance de Tomcat. Ces worker étant utilisés pour répartir la charge, ils seront utilisés indifférement de l'url demandée.
Lorill, tu sais répondre à cette question simplement ou pas ?


je peux essayer  [:sinclaire]
 
pour plus de détails faudra attendre ce soir (si je retrouve mon rapport de stage, c'est pas gagné).
 
En gros, tu as un fichier workers.properties dans lequel tu mets la config des workers : nom, incrément de charge (pour pouvoir diriger plus de trafic sur un que sur l'autre), port, host, ...).
 
Un worker est bel et bien une instance de tomcat.
Apres, dans la config d'apache (je sais pas pour iis), tu précise s quels sont les chemins (urls) a traiter avec jk. Par exemple JkMount /mawebapp/* malistedeworkers.
 
Quand apache recoit une requete sur /mawebapp/ il appelle le module, qui traite la requete.

n°286106
El_gringo
Posté le 14-01-2003 à 16:26:30  profilanswer
 

lorill a écrit :


je peux essayer  [:sinclaire]
 
pour plus de détails faudra attendre ce soir (si je retrouve mon rapport de stage, c'est pas gagné).
 
En gros, tu as un fichier workers.properties dans lequel tu mets la config des workers : nom, incrément de charge (pour pouvoir diriger plus de trafic sur un que sur l'autre), port, host, ...).


 
ça g déja vu comment faire pour déclarer plusieurs worker. Ce qui me pose pb, c'est : comment dire à jk d'utiliser tel ou tel worker de telle ou telle façon. parce que ds l'exemple que g vu, ils font ça (ds uriworkermap.properties) :


/examples/*=worker1  
/webpages/*=worker2  


ce qui dit d'utilise tel ou tel worker selon l'url. ça m'interresse pas ça. C que je voudrais c'est ce dont tu parles : l'incrément de charge.
 

lorill a écrit :


Apres, dans la config d'apache (je sais pas pour iis), tu précise s quels sont les chemins (urls) a traiter avec jk. Par exemple JkMount /mawebapp/* malistedeworkers.
 
Quand apache recoit une requete sur /mawebapp/ il appelle le module, qui traite la requete.


 
Cette partie est déja faite, elle fonctionne nickel.
 
Si tu peux me parler plus de ça, j'pense que t'as compris que ça m'interresse vraiment très très beaucoup...
@+  :hello:

n°286113
lorill
Posté le 14-01-2003 à 16:31:12  profilanswer
 

El_gringo a écrit :



/examples/*=worker1  
/webpages/*=worker2  


ce qui dit d'utilise tel ou tel worker selon l'url. ça m'interresse pas ça.  


ben si tu précises de worker par url il fait la répartition de charge de base : 50% des requetes sur le premier, 50% sur le deuxieme, a peu pres.
 
l'incrément de charge (lbfactor dans la doc jk) sert juste a biaser la répartition, pour avoir 75% sur l'un et 25% sur l'autre, par exemple.

n°286146
El_gringo
Posté le 14-01-2003 à 16:51:23  profilanswer
 

lorill a écrit :


ben si tu précises de worker par url il fait la répartition de charge de base : 50% des requetes sur le premier, 50% sur le deuxieme, a peu pres.
 
l'incrément de charge (lbfactor dans la doc jk) sert juste a biaser la répartition, pour avoir 75% sur l'un et 25% sur l'autre, par exemple.


 
Comment ça !? moi j'aurais dit que, ds le cas que je te présente, "worker1" va prendre 100% des requêtes du contexte "/example/" et "worker2" va prendre 100% des requêtes sur "/webpages/".
Je cherche pas ça moi...

n°286151
lorill
Posté le 14-01-2003 à 16:53:26  profilanswer
 

El_gringo a écrit :


Comment ça !? moi j'aurais dit que, ds le cas que je te présente, "worker1" va prendre 100% des requêtes du contexte "/example/" et "worker2" va prendre 100% des requêtes sur "/webpages/".
Je cherche pas ça moi...


j'ai mal lu, désolé.
 
en fait ca doit etre un truc style :
/mmawebapp/*=worker1,worker2
 
je verifie ce soir :hello:

n°286188
El_gringo
Posté le 14-01-2003 à 17:28:48  profilanswer
 

lorill a écrit :


j'ai mal lu, désolé.
 
en fait ca doit etre un truc style :
/mmawebapp/*=worker1,worker2
 
je verifie ce soir :hello:  


 
c cool. Merci.

n°286691
El_gringo
Posté le 15-01-2003 à 10:40:24  profilanswer
 

t'as pas u l'temps de voir Lorill ?

n°286703
lorill
Posté le 15-01-2003 à 11:05:22  profilanswer
 

El_gringo a écrit :

t'as pas u l'temps de voir Lorill ?

j'y ait pas pensé, désolé  :hello:  
t'as essayé de mettre  
 
chemin=listedesworkers ?

n°286728
El_gringo
Posté le 15-01-2003 à 11:42:07  profilanswer
 

Non, ms j'fais d'autre trucs en ce moment, j'demandais ça comme ça. Si t'as pas l'temps, j'pense que j'me débrouillerais.

n°286952
El_gringo
Posté le 15-01-2003 à 16:55:39  profilanswer
 

Fiou, c pas simple tout ça.
Ms bon, g trouvé.
En fait, si on a 2 worker de type ajp13 (worker simple correspondant à une instance de Tomcat4.x ou 5.x, il faut un autre worker, de type lb (loadBalancer), qui ne correspond pas à une instance de Tomcat, mais qui à pour but d'équilibrer les requêtes entre les 2 worker ajp13.
Personne ne m'écoute, ms c pas grave. Voila la solution à mon pb :


worker.list=router  
 
# Define a 'local_worker' worker using ajp13
worker.worker1.port=8009  
worker.worker1.host=node1.domain.org  
worker.worker1.type=ajp13  
worker.worker1.lbfactor=1  
worker.worker1.local_worker=1  
 
# Define another 'local_worker' worker using ajp13
worker.worker2.port=8009  
worker.worker2.host=node2.domain.org  
worker.worker2.type=ajp13  
worker.worker2.lbfactor=1  
worker.worker2.local_worker=0  
 
# Define the LB worker
worker.router.type=lb  
worker.router.balanced_workers=worker1,worker2  
worker.router.local_worker_only=1  

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JSP-Servlet] Répartition de charge d'une web-app

 

Sujets relatifs
[servlet/jsp] récuérer le chemin réel de la racine d'une web-app[FlashMX]Comment cibler une etiquette d'image ds 1 anim qu'on charge
Servlet : Transmettre les paramètres d'une requète lors d'un "forward"Probleme de retour d'un servlet vers un jsp
Comment mapper une servlet sur / (et non pas sur /*) ?Rediriger la sortie standard d'une JSP (JspWriter), c possible ?
Tomcat : servlet & jsp ca sert a qqchose ??[JSP] Vous utilisez quoi comme moteur de Servlet ??
[Servlet] Récupérer un paramètre avec a href 
Plus de sujets relatifs à : [JSP-Servlet] Répartition de charge d'une web-app


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR