16.6.3. Installer le Module_jk_mod dans Apache HTTPD ou dans JBoss Enterprise Web Server HTTPD

Prérequis

  • Pour cette tâche, vous devrez utiliser Apache HTTPD installé dans un environnement pris en charge ou l'HTTPD installé sur JBoss Enterprise Web Server. Notez que l'HTTPD installé dans JBoss Enterprise Web Server fait partie de la distribution JBoss Enterprise Application Platform.
  • Si vous avez besoin d'installer Apache HTTPD, utiliser les instructions dans Red Hat Enterprise Linux Deployment Guidedisponibles à partir de https://access.redhat.com/site/documentation/.
  • Si vous avez besoin d'installer le serveur JBoss Enterprise Web Server, utiliser les instructions dans JBoss Enterprise Web Server Installation Guide disponibles à partir de https://access.redhat.com/site/documentation/.
  • Si vous utilisez Apache HTTPD, télécharger le package de JBoss Enterprise Application Platform Native Components pour votre plate-forme du portail client de Red Hat à https://access.redhat.com. Ce paquet contient les mod_cluster et mod_jk binaires précompilés pour Red Hat Enterprise Linux. Si vous utilisez JBoss Enterprise Web Server, il comprend déjà le binaire pour mod_jk.
  • Vous devez être connectés avec des privilèges administratifs (root).

Procédure 16.9. Installer le Module mod cluster

  1. Déterminer l'emplacement de votre configuration HTTPD

    Votre emplacement de configuration HTTPD sera différente selon que vous utilisiez Apache HTTPD de Red Hat Enterprise Linux, ou le HTTPD disponible dans JBoss Enterprise Web Server. C'est l'une des trois options suivantes qui sera mentionnée au cours de cette tâche sous le nom HTTPD_HOME.
    • Apache HTTPD - /etc/httpd/
    • JBoss Enterprise Web Server HTTPD dans RHEL - EWS_HOME/httpd
    • JBoss Enterprise Web Server HTTPD dans Solaris - EWS_HOME/etc/httpd
    • JBoss Enterprise Web Server HTTPD dans Windows - EWS_HOME/etc/httpd
  2. Configurer le module mod_jk.

    1. Créer un nouveau fichier nommé HTTPD_HOME/conf.d/mod-jk.conf et y ajouter ce qui suit.

      Note

      La directive JkMount indique quels URL Apache doivent aller vers le module mod_jk. Sur la base de la configuration de la directive, mod_jk transfère l'URL reçu aux conteneurs de servlet qui conviennent.
      Pour servir le contenu directement, et n'utiliser que l'équilibreur de charges pour les applications Java, le chemin URL doit être /application/*. Pour utiliser mod_jk en tant qu'équilibreur des charges, utiliser la valeur /* pour transférer tous les URL au mod_jk.
      # Load mod_jk module
      # Specify the filename of the mod_jk lib
      LoadModule jk_module modules/mod_jk.so
      
      # Where to find workers.properties
      JkWorkersFile conf/workers.properties
      
      # Where to put jk logs
      JkLogFile logs/mod_jk.log
      
      # Set the jk log level [debug/error/info]
      JkLogLevel info 
      
      # Select the log format
      JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"
      
      # JkOptions indicates to send SSK KEY SIZE
      JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
      
      # JkRequestLogFormat
      JkRequestLogFormat "%w %V %T"
      
      # Mount your applications
      # The default setting only sends Java application data to mod_jk.
      # Use the commented-out line to send all URLs through mod_jk.
      # JkMount /* loadbalancer
      JkMount /application/* loadbalancer
      
      # Add shared memory.
      # This directive is present with 1.2.10 and
      # later versions of mod_jk, and is needed for
      # for load balancing to work properly
      JkShmFile logs/jk.shm 
      
      # Add jkstatus for managing runtime data
      <Location /jkstatus/>
      JkMount status
      Order deny,allow
      Deny from all
      Allow from 127.0.0.1
      </Location>
      
      
      Observer les valeurs et vérifier qu'elles conviennent à votre installation. Quand vous serez satisfait, sauvegarder le fichier.
    2. Spécifier une directive JKMountFile

      En plus de la directive JKMount de mod-jk.conf, vous pourrez spécifier un fichier qui contienne des modèles URL multiples à transférer au mod_jk.
      1. Ajouter ce qui suit au fichier HTTPD_HOME/conf/mod-jk.conf:
        # You can use external file for mount points.
        # It will be checked for updates each 60 seconds.
        # The format of the file is: /url=worker
        # /examples/*=loadbalancer
        JkMountFile conf/uriworkermap.properties
        
      2. Créer un nouveau fichier intitulé HTTPD_HOME/conf/uriworkermap.properties, avec une ligne pour chaque modèle URL à faire correspondre. L'exemple suivant montre des exemples de syntaxe pour ce fichier.
        # Simple worker configuration file
        /*=loadbalancer
        
    3. Copier le fichier mod_jk.so dans le répertoire de modules HTTPD

      Note

      Utile uniquement si votre HTTPD n'a pas de mod_jk.so dans son répertoire modules/. Vous pourrez éviter cette étape si vous utilisez le serveur Apache HTTPD inclus, un téléchargement de JBoss Enterprise Application Platform 6.
      Extraire le paquet Native Web Server Connectors ZIP. Localiser le fichier mod_jk.so soit dans le répertoire EAP_HOME/modules/native/lib/httpd/modules/ ou le répertoire EAP_HOME/modules/native/lib64/httpd/modules/ suivant que votre système d'exploitation est de 32-bit ou de 64-bit.
      Copier le fichier dans le répertoire HTTPD_HOME/modules/.
  3. Configurer les noeuds de worker mod_jk.

    1. Créer un nouveau fichier nommé HTTPD_HOME/conf/workers.properties. Utiliser l'exemple suivant comme point de départ, et modifier le fichier selon vos besoins.
      # Define list of workers that will be used
      # for mapping requests
      worker.list=loadbalancer,status
      
      # Define Node1
      # modify the host as your host IP or DNS name.
      worker.node1.port=8009
      worker.node1.host=node1.mydomain.com
      worker.node1.type=ajp13
      worker.node1.ping_mode=A
      worker.node1.lbfactor=1 
      
      # Define Node2
      # modify the host as your host IP or DNS name.
      worker.node2.port=8009
      worker.node2.host=node2.mydomain.com
      worker.node2.type=ajp13
      worker.node2.ping_mode=A
      worker.node2.lbfactor=1
      
      # Load-balancing behavior
      worker.loadbalancer.type=lb
      worker.loadbalancer.balance_workers=node1,node2
      worker.loadbalancer.sticky_session=1
      
      # Status worker for managing load balancer
      worker.status.type=status
      
      Pour obtenir une description détaillée de la syntaxe du fichier workers.properties, et pour obtenir des options de configuration avancées, consulter Section 16.6.4, « Référence de configuration des Apache Mod_jk Workers ».
  4. Redémarrer HTTPD.

    La façon de redémarrer HTTPD dépend de savoir si vous utilisez Apache HTTPD de Red Hat Enterprise Linux ou le HTTDP inclus dans JBoss Enterprise Web Server. Choisir une des deux méthodes ci-dessous.
    • Apache HTTPD de Red Hat Enterprise Linux

      Exécuter la commande suivante :
      [root@host]# service httpd restart
    • JBoss Enterprise Web Server HTTPD

      JBoss Enterprise Web Server exécute à la fois sur Red Hat Enterprise Linux et Microsoft Windows Server. La méthode de redémarrage du HTTPD est différente pour chacun.
      • Red Hat Enterprise Linux

        Dans Red Hat Enterprise Linux, JBoss Enterprise Web Server installe son HTTPD en tant que service. Pour redémarrer HTTPD, lancer les deux commandes suivantes :
        [root@host ~]# service httpd stop
        [root@host ~]# service httpd start
        
      • Microsoft Windows Server

        Lancer les commandes suivantes dans une invite de commande avec des privilèges administratifs :
        C:\> net stop httpd
        C:\> net start httpd
        
      • Solaris

        Lancer les commandes suivantes dans une invite de commande avec des privilèges administratifs :
        /opt/jboss-ews-2.0/sbin/apachectl restart
        
Résultat

Apache HTTPD est maintenant configuré pour pouvoir utiliser l'équilibreur de charges de mod_jk. Pour configurer JBoss Enterprise Application Platform pour qu'il soit au fait de mod_jk, consulter Section 16.3.5, « Configurer JBoss EAP pour que la plate-forme puisse accepter des requêtes en provenance d'HTTPD externe ».