Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

17.8.2. Installer un connecteur Mod_proxy HTTP sur le serveur Apache HTTPD

Aperçu

mod_proxy est un module d'équilibrage de charges fourni par Apache. Cette tâche présente une configuration de base. Pour plus d'informations sur la configuration avancée, ou pour plus de détails, reportez-vous à la documentation Apache mod_proxy à https://httpd.apache.org/docs/2.2/mod/mod_proxy.html. Pour plus d'informations sur mod_proxy d'une perspective JBoss EAP 6, consulter Section 17.8.1, « Le connecteur Apache mod_proxy HTTP » et Section 17.2.3, « Connecteurs HTTP - Aperçu général ».

Conditions préalables

  • Un serveur Apache HTTP de JBoss Enterprise Web Server httpd ou bien fourni par un système d'exploitation doit être installé. Un serveur Apache HTTP autonome est fourni séparément dans le portail clients Red Hat, dans la zone de téléchargement de JBoss EAP 6. Voir Section 17.4.2, « Installer le serveur Apache HTTP inclus dans JBoss EAP 6 » pour obtenir des informations sur ce serveur Apache HTTP si vous souhaitez l'utiliser.
  • Les modules mod_proxy doivent être installés. Le serveur Apache HTTPD est généralement livré avec les modules mod_proxy déjà inclus. C'est le cas sur Red Hat Enterprise Linux et sur le serveur Apache HTTP qui vient avec le serveur Web de JBoss Enterprise.
  • Vous devez avoir les permissions root ou administrateur pour pouvoir modifier la configuration de Serveur Apache HTTP.
  • Dans notre exemple, on assume que JBoss EAP 6 est configuré avec le connecteur web HTTP ou HTTPS. Cela fait partie de la configuration du sous-système web. Voir Section 15.1, « Configurer le sous-système web » pour obtenir des informations sur la façon de configurer le sous-système web.
  1. Activer les modules mod_proxy dans le démon httpd

    Recherchez les lignes suivantes dans votre fichier HTTPD_CONF/httpd.conf. Si elles ne sont pas présentes, ajoutez-les en bas. Si elles sont présentes, mais que les lignes commencent par un caractère de commentaire (#), supprimer le caractère. Enregistrez le fichier par la suite. Habituellement, les modules sont déjà présents et activés.
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    # Uncomment these to proxy FTP or HTTPS
    #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    #LoadModule proxy_connect_module modules/mod_proxy_connect.so
    
  2. Ajouter un proxy non équilibreur de charges.

    Ajouter la configuration suivante à votre fichier HTTPD_CONF/httpd.conf, directement sous une directive <VirtualHost> que vous possédez sans doute. Remplacer les valeurs par des valeurs appropriées à votre installation.
    Cet exemple utilise un hôte virtuel. Voir la nouvelle étape pour utiliser la configuration httpd par défaut.
    <VirtualHost *:80>
    # Your domain name
    ServerName Domain_NAME_HERE
    
    ProxyPreserveHost On
    
    # The IP and port of JBoss EAP 6
    # These represent the default values, if your httpd is on the same host
    # as your JBoss EAP 6 managed domain or server
    
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    
    # The location of the HTML files, and access control information
    DocumentRoot /var/www
    <Directory /var/www>
    Options -Indexes
    Order allow,deny
    Allow from all
    </Directory>
    </VirtualHost>
    Après avoir appliqué vos changements, sauvegarder le fichier.
  3. Ajouter le proxy d'équilibrage des charges.

    Pour utiliser mod_proxy comme équilibreur de charges, et pour envoyer du travail à des instances multiples de JBoss EAP 6, ajouter la configuration suivante à votre fichier HTTPD_CONF/httpd.conf. Remplacer les par les valeurs qui correspondent à votre environnement.
    <Proxy balancer://mycluster>
    
    Order deny,allow
    Allow from all
    
    # Add each JBoss Enterprise Application Server by IP address and port.
    # If the route values are unique like this, one node will not fail over to the other.
    BalancerMember http://192.168.1.1:8080 route=node1
    BalancerMember http://192.168.1.2:8180 route=node2
    </Proxy>
    
    <VirtualHost *:80>
     # Your domain name
     ServerName YOUR_DOMAIN_NAME
    
     ProxyPreserveHost On
     ProxyPass / balancer://mycluster/
    
     # The location of the HTML files, and access control information DocumentRoot /var/www
     <Directory /var/www>
      Options -Indexes
      Order allow,deny
      Allow from all
     </Directory>
    
    </VirtualHost>
    
    Les exemples ci-dessus communiquent tous par le protocole HTTP. Vous pouvez également utiliser les protocoles AJP ou HTTPS si vous chargez les modules mod_proxy. Voir la documentation mod_proxy http://httpd.apache.org/docs/2.2/mod/mod_proxy.html pour plus d'informations.
  4. Activer les sticky sessions.

    Sticky sessions signifie que si la demande d'un client va initialement à un worker spécifique de JBoss EAP 6, toutes les demandes futures seront envoyées au même worker, sauf s'il n'est plus disponible. C'est presque toujours le comportement correct.
    Pour activer des sticky sessions du mod_proxy, ajoutez le paramètre stickysession à l'énoncé ProxyPass. Cet exemple montre également d'autres paramètres que vous pouvez utiliser. Reportez-vous à documentation mod_proxy Apache à http://httpd.apache.org/docs/2.2/mod/mod_proxy.html pour plus d'informations à leur sujet.
    ProxyPass /MyApp balancer://mycluster stickysession=JSESSIONID lbmethod=bytraffic nofailover=Off
  5. Redémarrer le serveur web.

    Redémarrer le serveur web pour appliquer les changements.
Résultat

Votre serveur http Apache est configuré pour utiliser le mod_proxy pour envoyer des demandes de client aux instances de JBoss EAP 6, en configuration standard ou équilibrage de charge. Pour configurer la plate-forme JBoss EAP 6 pour répondre à ces demandes, reportez-vous à Section 17.4.6, « Configurer JBoss EAP 6 pour accepter des requêtes en provenance des serveurs web externes ».