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.






Aucun commentaire :

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