IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Load Balancing Apache


Sujet :

Apache

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut Load Balancing Apache
    Bonjour,

    J'essaye de faire du load Balancing sous apache avec mod_proxy_balancer.

    Ma configuration et du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Proxy balancer://AppliWeb>
    	BalancerMember http://serveur1:8700/
    	BalancerMember http://serveur2:8700/
    </Proxy>
     
    	ProxyPass / balancer://AppliWeb/
    	ProxyPassReverse / http://serveur1:8700/
    	ProxyPassReverse / http://serveur2:8700/
    Le problème est que ça envoie une requête sur deux sur chacun des serveurs. Ce qui est normal, vous allez me dire

    Mais dans mon cas, toutes les requêtes d'une session doivent aller à la même AppliWeb.

    Savez vous s'il existe un moyen de faire un Load Balancing de la sorte ?
    D'avance merci !

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu dois pouvoir t'inspirer de cet article pour faire de l'affinité de session. L'idée c'est que l'appli renvoie un cookie dont la valeur indique à mod_proxy_balancer vers quel serveur renvoyer la requête.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci pour ta réponse. J'en suis arrivé à la conclusion qu'il fallait utiliser ajp pour coupler apache avec 2 tomcat

    Maintenant, le problème et le suiva,t :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [Tue Oct 14 11:01:54 2008] [error] ajp_check_msg_header() got bad signature 10
    [Tue Oct 14 11:01:54 2008] [error] ajp_ilink_receive() received bad header
    [Tue Oct 14 11:01:54 2008] [error] ajp_read_header: ajp_ilink_receive failed
    [Tue Oct 14 11:01:54 2008] [error] (120007)APR does not understand this error code: proxy: read response failed from (null)
    Des recherches Google me décrivent ça comme un Bug connu mais je n'arrive pas pour autant à avoir la solution.

    Une idée ?

    Encore merci !

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Non, désolé, je ne connais pas AJP.

    Mais tu as essayé mon histoire d'affinité de session par cookie ? Ca ne marche pas ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    La configuration était valable uniquement avec IIS.

    Concernant l'erreur, il semble que le problème vienne de tomcat 4.0.6.
    Malheureusement, je ne peux pas passer en 5.

    Il va falloir que je trouve une alternative.

    Encore merci !

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par tomk_41 Voir le message
    La configuration était valable uniquement avec IIS.
    Certes, mais j'ai dit qu'il fallait s'en inspirer : le principe reste valable quelque soit le serveur HTTP en back-end, vu qu'on ne passe que par cookie. Si tu cherches sur ton moteur de recherche préféré, tu trouveras sûrement d'autres exemples. Si Apache est en frontal de tes Tomcat, tu peux simplement utiliser mod_headers (Header add "Cookie" "nom=valeur banalisée pour chaque serveur") pour ajouter un cookie propre à chaque serveur et l'affaire est dans le sac.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Bien reçu !
    Je vais alors continuer de chercher dans ce sens.

    Quelque chose comme cela pourra probablement faire l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Header add Set-Cookie "APACHEBALANCE=balancer.%{BALANCER_WORKER_ROUTE}e; path=/;" env=BALANCER_ROUTE_CHANGED
    [....]
    ProxyPass / balancer://actuate/ lbmethod=byrequests stickysession=APACHEBALANCE nofailover=ON
    [....]

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ca me semble pas mal.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Après quelques jours d'absence, mon Load Balancer + ReverseProxy marche enfin !!

    Je voulais à la base Load Balancer mes deux servers Tomcat, mais j'en ai profité pour le faire sur mes serveurs IIS. Voici donc mon retour d'expérience.

    Tout d'abord, ma config est composée de trois serveurs Windows avec les applis suivantes :
    - 1er : apache 2 configuré en ReverseProxy + Load Balancer
    - 2ème : IIS (écoute sur port 80) + Tomcat 4 (écoute sur port 8700)
    - 3ème : IIS (écoute sur port 80) + Tomcat 4 (écoute sur port 8700)


    http://1.bp.blogspot.com/_jIj73-WuyG...00-h/graph.JPG

    Et voici la configuration de mon httpd.conf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    LoadModule headers_module modules/mod_headers.so
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
     
    #################################
    #                               #
    #        Partie Tomcat          #
    #                               #
    #################################
     
    # Seul les connexions Apache sur le port 8700 seront traité par la config suivante
    <VirtualHost *:8700>
     
    <Proxy balancer://TomcatServers>
    		BalancerMember http://server1:8700/ keepalive=on route=TomcatRoad1
    		BalancerMember http://server2:8700/ keepalive=on route=TomcatRoad2
    		ProxySet lbmethod=byrequests stickysession=TOMCATID nofailover=ON
    </Proxy>
     
    		ProxyPass / balancer://TomcatServers/
    		ProxyPassReverse / http://server1:8700/
    		ProxyPassReverse / http://server2:8700/
     
    # On rajoute ici un cookies en sur les connexions Tomcat
    # BALANCER_WORKER_ROUTE Correspond au nom de la route définie avant (TomcatRoad1, TomcatRoad2)
     
    Header add Set-Cookie "TOMCATID=TomcatServers.%{BALANCER_WORKER_ROUTE}e; path=/;" env=BALANCER_ROUTE_CHANGED
     
    </VirtualHost>
     
    #################################
    #                               #
    #        Partie IIS             #
    #                               #
    #################################
     
    # Seul les connexions Apache sur le port 80 seront traité par la config suivante
    <VirtualHost *:80>
     
    	<Proxy balancer://IIServers>
    			# Configuration des deux serveurs IIS sur lesquels le Load Balancing doit se faire
    			BalancerMember http://server1/ keepalive=on route=IISRoad1
    			BalancerMember http://server2/ keepalive=on route=IISRoad2
    			ProxySet lbmethod=byrequests stickysession=BALANCEID nofailover=ON
    	</Proxy>
     
    # Configuration du ReverseProxy
    	ProxyPass / balancer://IIServers/
    	ProxyPassReverse / http://server1/
    	ProxyPassReverse / http://server2/
     
    </VirtualHost>

    A noter que j’ai utilisé le « Header add Set-Cookie » uniquement pour les serveurs Tomcat. Ca a l'avantage de ne pas avoir à toucher à la config des Tomcat.

    Pour IIS, les cookies se rajoutent directement dans la config des serveurs en back-end comme décrit dans cet article. Mais je suppose qu’on peut utiliser la façon « Tomcat » dans les deux situations.

    Un grand merci à _Mac_ pour son aide et bon courage à tous !

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Points : 9
    Points
    9
    Par défaut re
    Merci de partager ta solution c'est bien utile !

    A+

    François

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/12/2011, 16h01
  2. Désactiver/Réactiver un tomcat sur un load balancer apache
    Par Skypiea dans le forum Tomcat et TomEE
    Réponses: 12
    Dernier message: 05/07/2011, 17h08
  3. question sur load balancing apache/tomcat
    Par PaladinFr dans le forum Apache
    Réponses: 2
    Dernier message: 25/03/2011, 15h32
  4. Load balancing Apache ?
    Par Luffy49 dans le forum Apache
    Réponses: 3
    Dernier message: 11/09/2009, 12h16
  5. Réponses: 3
    Dernier message: 03/07/2009, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo