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 :

Configurer Apache en load balancer : comment se connecter ?


Sujet :

Apache

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut Configurer Apache en load balancer : comment se connecter ?
    Bonjour,
    Je suis sous ubuntu 12.04
    J'ai une application qui est configurée pour tourner avec apache 2;
    Dans le fichier /etc/apache2/sites-available/default, j'avais configuré ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    RewriteEngine on
    RewriteRule ^/galaxy$ /galaxy/ [R] #pour mettre mon appli dans un sub directory
    RewriteRule ^/galaxy/(.*) http://localhost:8081$1 [P]
    <Proxy http://localhost:8081>
    Order deny,allow
    Allow from all
    </Proxy>
    Et pour me connecter à mon application je lançais un firefox et me connectais via l'adresse : http://localhost:8081/galaxy
    Maintenant j'ai configuré mon appli pour qu'elle tourne avec un job manager et plusieurs job handlers, j'ai donc ajouté les lignes suivantes dans mon fichier default et supprimé les anciennes instructions proxy:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <Proxy balancer://galaxy>
    BalancerMember http://localhost:8080
    BalancerMember http://localhost:8081
    BalancerMember http://localhost:8082
    BalancerMember http://localhost:8083
    </Proxy>
    J'ai remplacé cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^/galaxy(.*) http://localhost:8081$1 [P]
    par ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteRule ^/galaxy(.*) balancer://galaxy$1 [P]
    RewriteRule ^/galaxy/admin/jobs(.*) http://localhost:8079/admin/jobs$1 [P]
    J'ai deux questions :
    1. Quelle adresse dois-je taper dans mon navigateur pour accéder à mon appli dans le cas de multi job handler ? Est-ce localhost/galaxy ou localhost/8079 (le job manager) ? ou autre chose?
    2. Ma configuration est-elle bonne car quand je lance mon appli ca ne semble pas me lancer correctement les modes handling : comme je suis dans un subderectory "galaxy", dois-je écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^/galaxy/admin/jobs(.*) http://localhost:8079/admin/jobs$1 [P]
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^/galaxy/admin/jobs(.*) http://localhost:8079/galaxy/admin/jobs$1 [P]?
    Faut-il que je remette les anciennes instructions de proxy <Proxy localhost> sans préciser le port cette fois ou en précisant juste le port manager ?
    Merci d'avance.
    julie

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut précision
    Quand je dis que le lancement de mon application ne lance pas les modes handling, je veux dire :
    l'appli est configurée de telle sorte que lorsqu'on tape la commande dans un terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GALAXY_RUN_ALL=1 sh run.sh --daemon
    le terminal devrait afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Handling web0 with log file web0.log...
    Entering daemon mode
    Handling web1 with log file web1.log...
    Entering daemon mode
    Handling manager with log file manager.log...
    Entering daemon mode
    Handling handler0 with log file handler0.log...
    Entering daemon mode
    Handling handler1 with log file handler1.log...
    Entering daemon mode
    Or mon terminal n'affiche que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Entering daemon mode
    sans aucune autre précision et me rend la main.
    C'est pour cela que je pense qu'au delà du fait que je ne sais pas quelle adresse taper dans mon navigateur, il y a aussi un problème de configuration d'apache qui empeche l'utilisation du mode handling.

  3. #3
    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
    Par défaut
    L'URL à demander dans ton navigateur ne change pas, c'est l'adresse IP et le port d'Apache (qu'on ne connaît pas).

    Au passage, deux éléments :
    1. Il faut que tu inverses tes 2 RewriteRule pour la connexion à l'interface d'administration :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      RewriteRule ^/galaxy/admin/jobs(.*) http://localhost:8079/admin/jobs$1 [P]
      RewriteRule ^/galaxy(.*) balancer://galaxy$1 [P]
      car le filtre ^/galaxy(.*) matche aussi l'URL d'administration donc pour celle-ci tu passais systématiquement par le proxy balancer.
    2. Dans ta première configuration, tu as certes configurer un reverse proxy sur Apache mais tu ne l'as jamais utilisé car si je lis bien ta configuration, ton reverse proxy renvoie sur le port 8081 qui est celui de l'application donc demander http://localhost:8081/galaxy fait accéder Firefox directement sur ton application, jamais Apache...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut
    Bonjour et merci pour votre réponse, je vais la reprendre point par point si vous le permettez:

    L'URL à demander dans ton navigateur ne change pas, c'est l'adresse IP et le port d'Apache (qu'on ne connaît pas).
    Avant la configuration balancer, je me connectais à mon appli via cette adresse :
    http://localhost:8081/galaxy

    Maintenant que le port 8081 fait parti des ports du balancer, je ne peux plus l'utiliser et donc je pensais me connecter simplement par :
    http://localhost/galaxy, est-ce la bonne façon ?


    Il faut que tu inverses tes 2 RewriteRule pour la connexion à l'interface d'administration :
    C'est fait, mais je ne peux pas me conecter à mon appli :
    http://localhost/galaxy renvoit la page "Internal Server Error"
    et http://localhost:8079/galaxy/admin/jobs renvoit la page "Enable to connect"

    Sauriez-vous donc ce qui cloche dans ma config ?
    Ou auriez-vous un livre , une documentation à me conseiller, il est vrai que je découvre apache et son administration depuis seulement une semaine et j'ai mis ce genre de chose en place en suivant le tutoriel de l'application, mais les personnes qui la maintiennent n'ont pas encore su me répondre sur ce problème.

    D'avance merci.
    Julie

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut
    Petite rectification, (j'avais oublié un restart apache),
    quand je tape http://localhost:8079/galaxy/admin/jobs, j'obtiens également la page "Internal Server Error"

  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
    Par défaut
    Citation Envoyé par dub_julie Voir le message
    Maintenant que le port 8081 fait parti des ports du balancer, je ne peux plus l'utiliser et donc je pensais me connecter simplement par :
    http://localhost/galaxy, est-ce la bonne façon ?
    A condition que le port d'Apache soit le port 80. Il faut regarder la configuration d'Apache : que vaut la directive Listen ? Dedans, tu trouves le port d'écoute d'Apache, le port à mettre dans tes URL.

    Citation Envoyé par dub_julie Voir le message
    C'est fait, mais je ne peux pas me conecter à mon appli :
    http://localhost/galaxy renvoit la page "Internal Server Error"
    Qu'y a-t-il dans les logs d'erreur d'Apache ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut
    que vaut la directive Listen ?
    Elle vaut 80 effectivement.
    Donc j'ai déjà la bonne façon de me connecter à mon appli. Merci

    Qu'y a-t-il dans les logs d'erreur d'Apache ?
    Dans le fichier access.log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    127.0.0.1 - - [29/May/2012:09:23:22 +0200] "GET /galaxy HTTP/1.1" 302 532 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0"
    127.0.0.1 - - [29/May/2012:09:23:22 +0200] "GET /galaxy/ HTTP/1.1" 500 598 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0"
    127.0.0.1 - - [29/May/2012:09:23:22 +0200] "GET /favicon.ico HTTP/1.1" 404 500 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0"
    Dans le fichier error.log j'avais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [Tue May 29 09:20:19 2012] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
    [Tue May 29 09:23:22 2012] [warn] proxy: No protocol handler was valid for the URL /galaxy/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
    [Tue May 29 09:23:22 2012] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
    j'ai donc vérifié que mod_proxy était enable et je me suis aperçu que proxy_http ne l'étais pas.
    Je l'ai donc rendu valide et retenté la connexion, j'arrive maintenant sur une page me disant :
    Service temporarily Unavailable
    Voici maintenant le contenu de mon fichier error.log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [Tue May 29 09:37:17 2012] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
    [Tue May 29 09:37:32 2012] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 127.0.0.1:8083 (localhost) failed
    [Tue May 29 09:37:32 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
    [Tue May 29 09:37:32 2012] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 127.0.0.1:8082 (localhost) failed
    [Tue May 29 09:37:32 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
    [Tue May 29 09:37:32 2012] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 127.0.0.1:8081 (localhost) failed
    [Tue May 29 09:37:32 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
    [Tue May 29 09:37:32 2012] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 127.0.0.1:8080 (localhost) failed
    [Tue May 29 09:37:32 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
    Je ne comprends pas trop ce que ça signifie.

    Merci
    Julie

  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
    Par défaut
    Ca signifie que Tomcat n'écoute pas sur les ports 8080, 8081, etc. Peut-être un problème de pare-feu.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut
    bonjour,
    merci pour votre réponse mais je n'ai pas de pare-feu !
    Y aurait-il une option que j'aurai oublié d'activer ? ou un paramétrage mal fait dans apache?
    merci

  10. #10
    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
    Par défaut
    Je répète :
    Citation Envoyé par _Mac_ Voir le message
    Ca signifie que Tomcat n'écoute pas sur les ports 8080, 8081, etc.
    Donc la première à voir c'est la configuration de tes serveurs Tomcat.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut
    Ma config est la suivante (pour Apache et non tomcat)
    Dans ports.conf :
    Dans Default :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    RewriteEngine on
    RewriteRule ^/galaxy$ /galaxy/ [R] #pour mettre mon appli dans un sub directory
    RewriteRule ^/galaxy/admin/jobs(.*) http://localhost:8079/admin/jobs$1 [P]
    RewriteRule ^/galaxy(.*) balancer://galaxy$1 [P]
     
    <Proxy balancer://galaxy>
    BalancerMember http://localhost:8080
    BalancerMember http://localhost:8081
    BalancerMember http://localhost:8082
    BalancerMember http://localhost:8083
    </Proxy>
    Je n'ai rien d'autre. Pendant un temps j'avais essayé en ajoutant en plus de tout ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <Proxy http://localhost>
    Order deny,allow
    Allow from all
    </Proxy>
    Mais ça ne changeait rien donc je ne l'ai pas gardé.

    Merci
    Julie

  12. #12
    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
    Par défaut
    Si tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BalancerMember http://localhost:8080
    BalancerMember http://localhost:8081
    BalancerMember http://localhost:8082
    BalancerMember http://localhost:8083
    c'est que tu as 4 serveurs Galaxy (je parle de Tomcat mais je peux me tromper) qui écoutent sur les ports 8080, 8081, 8082 et 8083. Les traces d'erreurs suggèrent qu'il n'y a justement rien qui écoute sur ces 4 ports. Donc la question est de savoir pourquoi il n'y a rien qui écoute sur ces ports. Où sont ces 4 serveurs Galaxy et sont-ils configurés pour écouter sur ces ports ?

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut
    Bonjour,

    En fait galaxy n'est pas tomcat mais une application de traitement de données de séquençage.
    Bref, cette application se lance via un script shell qui fait appel à un fichier de configuration contenant les lignes suivantes :
    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
    [server:web0]
    use = egg:Paste#http
    port = 8080
    host = 127.0.0.1
    use_threadpool = true
    threadpool_workers = 7
     
    [server:web1]
    use = egg:Paste#http
    port = 8081
    host = 127.0.0.1
    use_threadpool = true
    threadpool_workers = 7
     
    ...
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [server:manager]
    use = egg:Paste#http
    port = 8079
    host = 127.0.0.1
    use_threadpool = true
    threadpool_workers = 5
    ensuite :

    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
     [server:handler0]
    use = egg:Paste#http
    port = 8090
    host = 127.0.0.1
    use_threadpool = true
    threadpool_workers = 5
     
    [server:handler1]
    use = egg:Paste#http
    port = 8091
    host = 127.0.0.1
    use_threadpool = true
    threadpool_workers = 5
     
    ...
    et enfin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    job_manager = manager
    job_handlers = handler0,handler1,...
    default_job_handlers = handler0,handler1,...
    la partie du script shell qui nous intéresse est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if [ -n "$GALAXY_RUN_ALL" ]; then
        servers=`sed -n 's/^\[server:\(.*\)\]/\1/  p' universe_wsgi.ini | xargs echo`
        daemon=`echo "$@" | grep -q daemon`
        if [ $? -ne 0 ]; then
            echo 'ERROR: $GALAXY_RUN_ALL cannot be used without the `--daemon` or `--stop-daemon` arguments to run.sh'
            exit 1
        fi
        for server in $servers; do
            echo "Handling $server with log file $server.log..."
            python ./scripts/paster.py serve universe_wsgi.ini --server-name=$server --pid-file=$server.pid --log-file=$server.log $@
        done
    Donc apparement déjà, étant donné que je ne vois pas aaparaitre dans ma console suite au lancement du script, les phrases :
    Handling web0 with log file web0.log...

    C'est que mon problème ne viendrait pas d'apache mais du fait qu'il n'arrive pas à lire dans mon fichier de config le fait qu'il y a plusieurs serveurs configuré.

    Si vous pensez que ce n'est pas ça, avez-vous une autre idée ?
    Merci

  14. #14
    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
    Par défaut
    Citation Envoyé par dub_julie Voir le message
    C'est que mon problème ne viendrait pas d'apache mais du fait qu'il n'arrive pas à lire dans mon fichier de config le fait qu'il y a plusieurs serveurs configuré.
    C'est ce que je pense aussi.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut
    Merci de votre aide.
    J'ai avancé.
    Julie

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/12/2011, 16h01
  2. Load Balancing Apache
    Par tomk_41 dans le forum Apache
    Réponses: 9
    Dernier message: 09/10/2009, 14h50
  3. Réponses: 3
    Dernier message: 03/07/2009, 12h09
  4. Réponses: 3
    Dernier message: 15/10/2008, 14h15
  5. Comment se connecter a un serveur Apache
    Par haifa28 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 17/03/2007, 12h34

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