pic
Dans un précédent post, nous avions vu les grands concepts d’Hadoop (cf. http://www.opensides.fr/2011/03/10/hadoop-en-moins-de-5-minutes).  Aujourd'hui nous allons consacrer 5 nouvelles minutes avec Hadoop pour passer à la pratique. Les objectifs: Monter un environnement opérationnel en moins de 2 minutes Tour d'horizon de Cloudera en 1 minute Tester quelques commandes HDFS en 1 minute Tester un Map Reduce en 1 minute Monter un environnement opérationnel en 2 minutes 30 secondes pour parler de Cloudera Apache distribue une version packagée de l'écosystème complet Had...
pic
Dans ce tutorial, nous allons découvrir Hadoop au travers de son système de fichiers distribués et son mécanisme de Map/Reduce. Objectifs Comprendre les grands concepts de Hadoop Comprendre le HDFS et le mécanisme de Map/Reduce 2 minutes 30 pour comprendre les grands concepts Hadoop est un projet Open Source écrit en java, distribué par la fondation Apache. Ce framework est adapté dans le stockage et le traitement par lots de très grandes quantités de données (à partir du pétaoctet). Il a été mis en avant par des grands noms du web comme Yahoo! ou Facebook. Son sys...
pic
Dans cet article nous allons faire la connaissance rapide des serveurs web asynchrones. Le but de ce post est de vous faire découvrir cette nouvelle génération de serveur en montrant comment installer et configurer de façon basique celui qui me semble le plus aboutit et le plus performant. Nous verrons plus tard tirer profit de ce type d'architecture pour servir de hautes volumétries. Quelques rappels Un serveur http a pour vocation de servir du contenu en fonction des requêtes clientes. Ce contenu est distribué via le protocole http et peut être statique (images, css, javascript, â€...
pic
Tout le monde connaît Memcached ? Non ? Memcached est un cache Open Source distribué et non répliqué. Cela veut dire que que nous pouvons utiliser plusieurs instances de Memcached mais que chaque instance est autonome. Si l'une d'elle tombe, ses données seront donc perdues (pas de réplication entre instance). Pour aller plus loin, je vous conseille le wiki de Memcached: http://memcached.org/ Nous allons voir maintenant comment l'installer sur un unix: Installation de libEvent (une dépendance de Memcached) Vérifier que libEvent ne soit pas déja installé en tapant la ...
pic
Dans cet article nous allons voir comment apporter très facilement une solution de haute disponibilité à une application avec HAProxy. Quelques définitions Haute disponibilité (cf. wikipedia) La haute disponibilité est un terme souvent utilisé en informatique, à propos d'architecture de système ou d'un service pour désigner le fait que cette architecture ou ce service a un taux de disponibilité convenable. La disponibilité est aujourd'hui un enjeu important des infrastructures informatiques. On estime aujourd'hui que la non-disponibilité d'un service informatique peut avoi...
oct

03

Dans cet article nous allons voir comment apporter très facilement une solution de haute disponibilité à une application avec HAProxy.

Quelques définitions

Haute disponibilité (cf. wikipedia)

La haute disponibilité est un terme souvent utilisé en informatique, à propos d’architecture de système ou d’un service pour désigner le fait que cette architecture ou ce service a un taux de disponibilité convenable.

La disponibilité est aujourd’hui un enjeu important des infrastructures informatiques. On estime aujourd’hui que la non-disponibilité d’un service informatique peut avoir des coûts se chiffrant en millions, particulièrement dans le domaine de l’industrie où l’arrêt d’une chaîne de production peut avoir un effet dévastateur.

HAProxy (cf.wikipedia)

HAProxy est un logiciel libre de répartition de charge écrit par Willy Tarreau. Il est disponible sous Unix (on trouve très facilement des binaires précompilés pour LinuxSolaris). et

HAProxy peut aider à mettre en place des solutions de hautes disponibilités, de répartition de charge et de proxy pour tous les types de protocole (TCP ou HTTP). Il est particulièrement bien adapté pour la gestion des très fortes charges sur un site Web tout en gérant la notion de persistance ou la manipulation des données de la couche 7 du Modèle OSI.

Description de l’application

Pour l’exemple, nous allons developper le classique HelloWorld, un WS-* dont le rôle va être de saluer l’internaute qui aura indiqué son nom en paramètre.

Voici la PI:

MyService

  • sayOla
  • sayHallo
  • sayHi
  • sayPriviet
Endpoint address: http://localhost:8080/backend/MyService
WSDL : {http://backend.opensides.fr/}MyServiceImplService
Target namespace: http://backend.opensides.fr/

-> ajoutons une petite spécificité au service de façon à ce qu’il renvoie le port de l’instance qui va traiter la demande de façon à déterminer facilement quel serveur aura traité la requête lorsque nous ferons un déploiement sur plusieurs instances.

ex: « (8080) – Hello John »

Mise en place de HAProxy

Voila le service est maintenant opérationnel. A ce stade, il fonctionne mais si le serveur tombe le service ne fonctionne plus. C’est là que HAProxy va intervenir. Nous allons deployer ce service sur plusieurs serveur et le rôle de HAProxy va être de jouer un peu le chef d’orchestre en:

- assurant une distribution des requêtes sur les différents serveurs (LOADBALANCING)

- Évincer une instance DOWN en transférant la charge sur les serveurs UP (FAILOVER)

Installation & configuration

Installation sur Mac

sudo port install haproxy

Installation sur Ubuntu

sudo apt-get install haproxy

Récupérer un exemple de fichier de configuration basic

wget http://layer1.rack911.com/haproxy/haproxy-standard.cfg haproxy.cfg

Editer le fichier de config:

global
 maxconn     4096 # Total Max Connections. This is dependent on ulimit
 daemon
 nbproc      4 # Number of processing cores. Dual Dual-core Opteron is 4 cores for example.
 defaults
 mode        http
 clitimeout  60000
 srvtimeout  30000
 contimeout  4000
 option      httpclose # Disable Keepalive
listen  http_proxy 127.0.0.1:9999
 balance roundrobin # Load Balancing algorithm
 option httpchk
 option forwardfor # This sets X-Forwarded-For
## Define your servers to balance
 server server1 127.0.0.1:8080 weight 1 maxconn 512 check
 server server2 127.0.0.1:8181 weight 1 maxconn 512 check

Démarrer HaProxy

haproxy -f haproxy.cfg

Valider que la solution fonctionne

Maintenant HAProxy est démarré. Il écoute les requetes sur le port 9999 et les redirige sur les 2 instances Tomcat 8080 et 81818.

Il suffit maintenant de lancer des requêtes sur les le port 9999 et observons que HAProxy redispacth bien les requêtes sur les 2 instances:

(8080) - Hello John (#287)
 1 oct. 2010 10:28:33 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
 INFO: Creating Service {http://pi.opensides.fr/}MyServiceService from class fr.opensides.pi.MyService
 (8080) - Hello John (#288)
 1 oct. 2010 10:28:33 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
 INFO: Creating Service {http://pi.opensides.fr/}MyServiceService from class fr.opensides.pi.MyService
 (8181) - Hello John (#252)
 1 oct. 2010 10:28:33 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
 INFO: Creating Service {http://pi.opensides.fr/}MyServiceService from class fr.opensides.pi.MyService
 1 oct. 2010 10:28:33 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
 INFO: Creating Service {http://pi.opensides.fr/}MyServiceService from class fr.opensides.pi.MyService
 (8181) - Hello John (#253)
 (8181) - Hello John (#254)
 1 oct. 2010 10:28:33 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
 INFO: Creating Service {http://pi.opensides.fr/}MyServiceService from class fr.opensides.pi.MyService
 (8080) - Hello John (#289)
 1 oct. 2010 10:28:33 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
 INFO: Creating Service {http://pi.opensides.fr/}MyServiceService from class fr.opensides.pi.MyService
 (8181) - Hello John (#255)

Nous pouvons observer les stats de l’interface d’amin HAProxy:

Conclusion

Nous avons vu comment installer et configurer HAProxy pour assurer Loadbalacong et failover sur un WS-*. Nous pouvons observer la puissance et la simplicité de l’outil.

Pour plus d’informations rendez-vous sur le site de l’éditeur http://haproxy.1wt.eu/

Leave a Reply