Mettez en œuvre un cluster vertical Jboss. Découvrez les techniques permettant d’assurer avec Jboss (4/5) la répartition de charge (load balancingà) et la reprise sur incident (fail over).
Pré-requis
Hypothèse : vous savez mettre en oeuvre une intégration Apache avec 1 instance de Jboss. Si ce n’est pas le cas, mettez en oeuvre le Tutoriel suivant.
Programme
Partie 1 : démarrage 2 instances de Jboss sur 1 machine
Partie 2 : configuration de Jboss (affinité session + valve ‘RequestDumper)’
Partie 3 : configuration Apache / mod_jk
Partie 4 : configuration et déploeiement de l’application
Partie 5 : test de l’affinité de session
Partie 6 : test du load balancing
Partie 7 : test de la reprise sur incident
Partie 8 : supervison
Partie 1 : démarrage 2 instances JBOSS sur la même machine
en utilisant la configuration ‘all’ de JBOSS, démarrez 2 instances de Jboss (noeud1 et noeud2) sur la même machine.
QUESTION : comment est gérée la problématique de conflit de ports avec Jboss 4 ? et avec Jboss 5 ?
INFO : pour Jboss 4.2.x, gérer le conflit de ports via le service BindingManager à configurer dans /conf/jboss-service.xml . Ce service gère automatiquement la translation (+100 pour ports-01, +200 pour ports-02) des ports d’une instance par rapport à l’instance de le configuration ‘default’. Par exemple, le port web de l’instance 1 sera 8180 (= 8080 +100) et le port web de l’instance 2 sera 8280 (= 8080 +200)
Expliquez
Partie 2 : Configuration Jboss
Noeud 1
Dans le fichier server.xml du nœud 1 :
— Ajoutez à la balise Engine l’attribut jvmRoute= »noeud1″ (même libellé que httpd.conf)
Ce paramètre est utile pour le concept d’affinité de session. Expliquez.
— Si vous ne souhaitez pas utiliser le service de Binding , modifiez manuellement l’attribut port du connecteur AJP de 8080 vers 81009
Noeud 2
Faire idem pour le fichier server.xml du noeud2 , avec cette fois-ci :
— jvmRoute= »noeud2″
— port AJP = 8280
Valve ‘RequestDumper’
— (OPTIONNEL) Décommentez pour chaque instance la valve requestDumper présente et par défaut commentée dans le server.xml. Ceci nous permettra de voir lors des tests sur la console quel noeud est sollicité suite à requête.
Partie 3 : configuration Apache / mod_jk
Configurer workers.properties
Expliquez.
Configurer httpd.conf
Expliquez
Partie 4 : préparation de la livraison
Afin de permettre la réplication de session pour un war , vous devez ajouter la balise ‘distributable’ dans le web.xml
Packager et déployez l’application dans les répertoires ‘deploy’ de chaque noeud
Partie 5 : test affinité de session
Arréter puis démarrer Jboss
Arréter puis démarrer Apache
Analysez dans log mod_jk puis dans logs console des nœuds le résultat des requêtes suivantes :
— http://localhost
— http://localhost/hellostruts/
Sur quel nœud se trouve t’on ?
Quelle est le numéro de session utilisateur ?
Rafraichissez la page. En déduire que l’affinité de session fonctionne.
Partie 6 : test load balancing
Ouvrez une nouvelle fenêtre de navigateur
Analysez dans logs console des noeuds le résultat des requêtes suivantes :
— http://localhost/hellostruts/
Montrez que c’est l’autre nœud qui répond.
En déduire que la répartition de charge est effective
Modifiez la pondération : 5 requête pour le nœud 1 pour 1 requête pour le nœud 2.
Partie 7 : test reprise sur incident
Arrêtez le noeud sur lequel l’application répond.
Rafraichissez à nouveau la page.
Montrez via les logs de la console de l’autre noeud que celui ci répond avec la même session qu’avant .
Partie 8 : Supervision
En utilisant la documentation de Tomcat, expliquer ce qu’est le worker ‘status’
Configurez le worker status
Fichiers corrigés de configuration
Jboss 7
Noeud1 : standalone.bat -c standalone-ha.xml -b 192.168.0.2 -bmanagement 192.168.0.2 -Djboss.node.name=noeud1
Node2 (ajout d’un Offset) standalone.bat -c standalone-ha.xml -b 192.168.0.2 -bmanagement 192.168.0.2 -Djboss.node.name=noeud1 -Djboss.socket.binding.port-offset=100