05 janvier 2013

Configurer Apache pour Weblogic

Afin de ne pas surcharger le serveur WebLogic  et d’optimiser les performances, il est recommandé de confier à Apache la publication du contenu statique (pages HTML, images, fichiers PDF…) des applications web. Le serveur Apache est alors paramétré pour ne renvoyer à webLogic  que les pages JSP (extension .jsp) et les servlets.


 Le proxy plug-in Weblogic pour Apache (mod_wl_20) permet d’assurer le lien Apache-webLogic selon le schéma de base ci-dessous :

                                       
La redirection de requêtes vers WebLogic est réalisée par le proxy plug-in WebLogic pour Apache. Ce plug-in intervient aussi de façon importante dans les fonctionnalités de répartition et équilibrage de charge (load-balancing) ; Il sert également de vecteur dans le clustering WebLogic.

Les autres fonctionnalités offertes par ce plug-in sont les suivantes :

  • Gestion des éléments statiques dune application Weblogic ;
  • Optimisation de la consommation réseau ;
  • Répartition et équilibrage des charges (load-balancing) ;
  • Participation à la haute disponibilité (failover)
La configuration du serveur Apache va donc s'effectuer selon le processus suivant:
-1. Mise en place du module d’extension mod_wl_20 assumant les fonctions de proxy plug-in ;
-2.  Chargement du proxy plug-in pour Apache dans le fichier httpd.conf ;
-3. Configuration dans httpd.conf, de chaque application utilisant le proxy plug-in.

/opt/weblogic/wls_9.2/server/plugin/linux/x86_64


 Le module de proxy plug-in doit être placé dans le répertoire « modules » de l’arborescence Apache.



Chargement  du proxy plug-in



Le chargement du proxy plug-in est spécifié dans le fichier de configuration d’Apache, httpd.conf

ServerRoot "/etc/httpd"
PidFile run/httpd.pid
Listen 80
#----Integration Proxy Plug-in WebLogic ------------------
LoadModule weblogic_module modules/mod_wl_20.so

Des séquences de directive « loadModule » « IfModule » sont ajoutées dans le fichier de configuration d’Apache, httpd.conf, après le chargement des différents modules DSO.

LoadModule weblogic_module modules/mod_wl_20.so
<IfModule mod_weblogic.c>
     WebLogicHost cloud_srvr01
     WebLogicPort 7101
     MatchExpression *.jsp
     MatchExpression *.do
</IfModule>




<IfModule mod_weblogic.c>
   <Location /meteo>
     SetHandler weblogic-handler
     WebLogicHost
 coud_srvr01
     WebLogicPort
 7101
   </Location>
</IfModule>

<IfModule mod_weblogic.c>
MatchExpression /meteo
      WebLogicHost
 cloud_srvr01
      WebLogicPort
 7101
</IfModule>


Dans ces séquences:
-WebLogicHost  permet de sépcifier le nom du serveur  hébergeant WebLogic;
-WebLogicPort permet de spécifier le port d’écoute du serveur WebLogic;
-MatchExpression permet de spécifier  le filtre permettant à Apache d’identifer les requêtes à router vers WebLogic. Plusieurs filtres MatchExpression peuvent être utilisés.
Toutes les pages comportant une URL du type   http://serveur_apache/meteo seront redirigées vers le serveur WebLogic hébergé par cloud_srvr01, sur le port 7101.

Apache vers 2 WebLogic

Voici un schéma générique de mise en œuvre de deux serveurs WebLogic à partir d’un unique serveur Apache.

<IfModule mod_weblogic.c>
      <Location /web_url01>
          SetHandler weblogic-handler
          WebLogicHost adr_ip01
          WebLogicPort tcp_port01
      </Location>
      <Location /web_url02>
          WebLogicHost adr_ip02
          WebLogicPort
 tcp_port02
          PathTrim /web_url02
       </Location>
</IfModule>
Dans ce schéma générique :
1).Toutes les pages appelées à partir de l’adresse : http://serv_apache/web_url01 sont redirigées vers le serveur WebLogic ayant pour adresse  adr_ip01 sur le port tcp_port01. 
2).Toutes les pages appelant une jsp à partir de l’adresse : http://serv_apache/web_url02 sont redirigées vers le serveur WebLogic ayant pour adresse adr_ip02 sur le porttcp_port02. Avec la directive “ PathTrim /web_url02 ”, la requête http://serv_apache/web_url02/toto.jsp sera  relayée à WebLogic sous la forme http://adr_ip02:tcp_port02/toto.jsp. Sans cette directive, elle aurait été relayée sous la forme http://adr_ip02:tcp_port02/web_url02/toto.jsp.

Remarque-1: Ce canevas générique peut s’appliquer au cas classique de redirection vers un seul serveur WebLogic. Sa meilleure utilisation se situe naturellement dans un contexte de mutualisation de serveurs Apache.

Remarque-2:  Dans un contexte de mutualisation du serveur Apache, ces blocs de directives sont à placer à l’intérieur de chaque VirtualHost.

Apache pour Load balancing WebLogic


Voici un schéma de Load balancing d’un serveur Apache vers 2 serveurs WebLogic.
Dans ce  schéma, chaque requête jsp est redirigée vers le serveur 192.168.0.21 (port 7101) puis 192.168.0.22 (port 7101) 192.168.0.21, etc…  La stratégie mise en œuvre est celle du “ round robin ”.

<IfModule mod_weblogic.c>
WebLogicCluster 192.168.0.21:7101, 192.168.0.22:7101
    MatchExpression
 *.jsp
MatchExpression *.do
</IfModule>


Voici une autre forme d’écriture, proxy par chemin :

<Location /appli1>
SetHandler weblogic-handler
WebLogicHost WLSserver1
WebLogicPort 7101
</Location>
<Location /appli2>
SetHandler weblogic-handler
WebLogicCluster 192.168.0.21:7101, 192.168.0.22:7101
</Location>

Dans cette dernière forme :
·  Les requêtes de l’application appli1 sont redirigées vers l’instance WLSserver1 qui écoute sur le port 7101 ;
·  Les requêtes de l’application appli2 sont réparties sur les instances 192.168.0.21 et 192.168.0.22 qui écoutent sur le port 7101.






03 janvier 2013

Apache: Configurer la partie statique d'une application Weblogic


La configuration, dans Apache,  de la partie statique d’une application WebLogic s’effectue soit, en utilisant la balise Location, soit en utilisant la directive MatchExpression.
La partie statique (images, .css, HTML, js) de l’application Weblogic va être placée dans un sous-répertoire du genre  /appli/httpd,  dont le nom doit correspondre au nom “ Context Root ”  de l’application déployée dans WebLogic. Exemple :


q     pge01
q     images
pge01.css
index.html

Extrait de configuration utilisant MatchExpression.


<VirtualHost 192.168.0.12>
     ServerAdmin webmaster@cloud-test.com
     DocumentRoot /appli/httpd
     ServerName srvr01.com
     <Directory "appli/httpd">
       Options Indexes FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from All
     </Directory>
     <IfModule mod_weblogic.c>
         MatchExpression *.jsp
         MatchExpression *.do
         WebLogicHost 192.168.0.13
        WebLogicPort 7101
     </IfModule>   
    ErrorLog /var/apache/logs/pge01/error.log
         CustomLog /var/apache/logs/pge01/access.log combined    
</VirtualHost>


Dans cet exemple, tous les documents seront servis par Apache,  à l’exception de ceux comportant l’extension spécifiée dans la directive MatchExpression. Une URL d’appel pourra être la suivante :

         http://srvr01.com/pge01/index.jsp

Extrait de configuration utilisant la directive Location.


<VirtualHost 192.168.0.12>
     ServerAdmin webmaster@cloud-test.com
     DocumentRoot /appli/httpd
     ServerName pge01.cloud-test.com
     <Directory "appli/httpd">
       Options Indexes FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from All
    </Directory>
     <IfModule mod_weblogic.c>
         WLExcludePathOrMimeType *.html
         WLExcludePathOrMimeType *.htm
         WLExcludePathOrMimeType *.gif
         WLExcludePathOrMimeType *.jpg
         WLExcludePathOrMimeType *.css
         WLExcludePathOrMimeType *.js
         WLExcludePathOrMimeType *.php
         WLExcludePathOrMimeType *.pdf 
         <Location /pge01>
               SetHandler weblogic-handler
               WebLogicHost 192.168.0.13
               WebLogicPort 7101
         </Location>              
     </IfModule>        
ErrorLog /var/apache/logs/pge01/pge01-error_log
         CustomLog /var/apache/logs/pge01/pge01-access_log combined          

</VirtualHost>

Dans cet exemple, tous les documents comportant l’extension spécifiée dans les directives WLExcludePathOrMimeType  ne seront pas traités par WebLogic, mais par Apache. Toutes les URL  comportant /pge01 seront routées vers WebLogic. Une URL d’appel pourra être la suivante :

         http://pge01.cloud-test.com/pge01

Exemple de fichier log http de WebLogic lorsque ce dernier est configuré pour servir exclusivement les pages dynamiques. On observe que seules les pages jsp y apparaissent.


163.104.31.205 - - [02/Nov/2006:15:51:37 +0100] "GET /pge01/index.jsp HTTP/1.1" 200 192
163.104.31.205 - - [02/Nov/2006:15:51:38 +0100] "GET /pge01/main.jsp?displayJSP=home HTTP/1.1" 200 0
163.104.31.205 - - [02/Nov/2006:15:55:49 +0100] "GET /pge01/index.jsp HTTP/1.1" 200 192
163.104.31.205 - - [02/Nov/2006:15:55:49 +0100] "GET /pge01/main.jsp?displayJSP=home HTTP/1.1" 200 0
163.104.31.205 - - [02/Nov/2006:15:55:51 +0100] "GET /pge01/loginLink.do HTTP/1.1" 200 0
Dans le fichier log d’Apache, apparaissent les éléments statiques: .gif, .css, …


163.104.29.152 - - [02/Nov/2006:15:55:48 +0100] "GET /pge01/index.jsp HTTP/1.1" 200 192 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"
163.104.29.152 - - [02/Nov/2006:15:55:49 +0100] "GET /pge01/main.jsp?displayJSP=home HTTP/1.1" 200 2271 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"
163.104.29.152 - - [02/Nov/2006:15:55:49 +0100] "GET /pge01/images/logo.gif HTTP/1.1" 304 - "http://pge01.rte-france.com/pge01/main.jsp?displayJSP=home" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"
163.104.29.152 - - [02/Nov/2006:15:55:49 +0100] "GET /pge01/rte_cct.css HTTP/1.1" 304 - "http://pge01.rte-france.com/pge01/main.jsp?displayJSP=home" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"
163.104.29.152 - - [02/Nov/2006:15:55:49 +0100] "GET /pge01/images/fond.jpg HTTP/1.1" 304 - "http://pge01.rte-france.com/pge01/main.jsp?displayJSP=home" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"
163.104.29.152 - - [02/Nov/2006:15:55:51 +0100] "GET /pge01/loginLink.do HTTP/1.1" 200 2985 "http://pge01.rte-france.com/pge01/main.jsp?displayJSP=home" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"



Exemples extraits de mes configurations

  
# ---------------------------------
#
#
# Configuration des virtualhosts
# pour les applications WebLogic
#
#
# --------------------------------
#
# --- Application pge01
#
<VirtualHost 163.104.31.205>
     ServerAdmin webmaster@fxe-free.com
     DocumentRoot /appli/httpd
     ServerName pge01.fxe-free.com
     <Directory "appli/httpd">
       Options Indexes FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from All
     </Directory>
        <IfModule mod_weblogic.c>
             WLExcludePathOrMimeType *.html
             WLExcludePathOrMimeType *.htm
             WLExcludePathOrMimeType *.gif
             WLExcludePathOrMimeType *.jpg
             WLExcludePathOrMimeType *.css
             WLExcludePathOrMimeType *.js
             WLExcludePathOrMimeType *.php
             WLExcludePathOrMimeType *.pdf    
             <Location /pge01>
             SetHandler weblogic-handler
             WebLogicCluster 163.104.115.232:7101,163.104.114.147:7101,163.104.115.239:7101
             </Location>               
        </IfModule>
             ErrorLog /var/apache/logs/pge01/error.log
       CustomLog /var/apache/logs/pge01/access.log combined       
</VirtualHost>
#
# --- Application pge10
#
<VirtualHost 163.104.31.205>
     ServerAdmin webmaster@fxe-free.com
     DocumentRoot /appli/httpd
     ServerName pge10.fxe-free.com
     <Directory "appli/httpd">
       Options Indexes FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from All
     </Directory>
        <IfModule mod_weblogic.c>
             WLExcludePathOrMimeType *.html
             WLExcludePathOrMimeType *.htm
             WLExcludePathOrMimeType *.gif
             WLExcludePathOrMimeType *.jpg
             WLExcludePathOrMimeType *.css
             WLExcludePathOrMimeType *.js
             WLExcludePathOrMimeType *.php
             WLExcludePathOrMimeType *.pdf    
             <Location /pge10>
             SetHandler weblogic-handler
             WebLogicCluster 163.104.115.232:7101,163.104.114.147:7101,163.104.115.239:7101
             </Location>               
        </IfModule>
             ErrorLog /var/apache/logs/pge10/error.log
       CustomLog /var/apache/logs/pge10/access.log combined       
</VirtualHost>
#
# --- Application pge20
#
<VirtualHost 163.104.31.205>
     ServerAdmin webmaster@fxe-free.com
     DocumentRoot /appli/httpd
     ServerName pge20.fxe-free.com
     <Directory "appli/httpd">
       Options Indexes FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from All
     </Directory>
        <IfModule mod_weblogic.c>
             WLExcludePathOrMimeType *.html
             WLExcludePathOrMimeType *.htm
             WLExcludePathOrMimeType *.gif
             WLExcludePathOrMimeType *.jpg
             WLExcludePathOrMimeType *.css
             WLExcludePathOrMimeType *.js
             WLExcludePathOrMimeType *.php
             WLExcludePathOrMimeType *.pdf    
             <Location /pge20>
             SetHandler weblogic-handler
             WebLogicCluster 163.104.115.232:7101,163.104.114.147:7101,163.104.115.239:7101
             </Location>               
        </IfModule>
             ErrorLog /var/apache/logs/pge20/error.log
       CustomLog /var/apache/logs/pge20/access.log combined       
</VirtualHost>


Bibliographie

  • ASP.NET Data Web Controls(Scott Michell)
  • Building Custom PHP Extensions(Blake Schwendiman)
  • Développer avec CORBA en JAVA ET C++(David Acremann)
  • Java Native Interface(Sheng Liang)
  • Mastering WebLogic Server(Gregory Nyberg; Robert Patrick)
  • Oracle Database 10g RAC on Linux(Julian Dyke; Steve Shaw)
  • Test Process Improvement(Martin Pol)
Back to top