HAProxy, WebLogic Server et T3

Le problème posé : Comment masquer les serveurs WebLogic auxquels doivent se connecter des partenaires externes afin de poster des messages JMS ?

Une solution possible consiste à placer un ou plusieurs serveurs HAProxy devant les serveurs WebLogic.

HAProxy est un load-balancer logicel de plus en plus répandu.
Référence : http://www.haproxy.org/
Version actuelle : 1.7
OS :Linux uniquement.

Une de ses caractéristiques est qu’il assure la répartition de charge et la tolérance aux pannes au niveau HTTP. Il est donc possible de l’utiliser devant des applications web hébergées dans des serveurs WebLogic, en cluster ou non, comme on le ferai avec un serveur Apache.

 

HAProxy est surtout connu pour sa capacité d’agir au niveau TCP. Il devient donc possible de l’utiliser devant des tout objet RMI tels que des EJBs ou des ressources JMS.

Grâce à cette solution, les partenaires externes ne sont plus en contact qu’avec le serveur HAProxy ; les urls des serveurs WebLogic deviennent alors invisible renforçant ainsi la sécurité. Cette solution permet de limiter les impacts pour les partenaires lorsque les URLs des serveurs WebLogic changent…

L’exemple suivant illustre une configuration d’un HAProxy devant 2 serveurs WebLogic. Ces 2 serveurs hébergent une application web, accessible en HTTP, ainsi que des ressources JMS, accessibles via T3.

Le serveur HAProxy écoute sur les ports 5000 (t3) et 80 (HTTP)

Les serveurs WebLogic écoutent sur les URLs suivantes :

  • 192.168.56.1:8101
  • 192.168.56.1:8201

[pastacode lang= »apacheconf » manual= »…%0A%23———————————————————————%20%0A%23%20main%20frontend%20which%20proxys%20to%20the%20backends%20%0A%23———————————————————————%20%0Afrontend%C2%A0%C2%A0main%20*%3A5000%20%0Amode%20tcp%20%0Aoption%20tcp-check%20%0Adefault_backend%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0app%20%0A%0Afrontend%20check%20*%3A80%20%0Amode%20http%20%0Adefault_backend%20checkWebApp%20%0A%0A%23———————————————————————%20%0A%23%20round%20robin%20balancing%20between%20the%20various%20backends%20%0A%23———————————————————————%20%0Abackend%20app%20%0Abalance%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0roundrobin%20%0Amode%20tcp%20%0Aserver%C2%A0%C2%A0ms1%20192.168.56.1%3A8101%20check%20%0Aserver%C2%A0%C2%A0ms2%20192.168.56.1%3A8201%20check%20%0A%0Abackend%20checkWebApp%20%0Abalance%20roundrobin%20%0Amode%20http%20%0Aserver%20ms1%20192.168.56.1%3A8101%20check%20%0Aserver%20ms2%20192.168.56.1%3A8201%20check%20%0A%0A… » message= »Extrait du fichier de configuration haproxy /etc/haproxy/haproxy.cfg » highlight= » » provider= »manual »/]

Une dernière chose, il est nécessaire d’ajouter la propriété suivante aux serveurs WebLogic sous peine de déclencher l’exception javax.naming.CommunicationException lors de la connexion.

[pastacode lang= »bash » manual= »-Dweblogic.rjvm.enableprotocolswitch%3Dtrue » message= » » highlight= » » provider= »manual »/]