JOnAS Day 5.1 Clustering
Solution complète de clustering Répartition de charge & bascule sur échec Application Web avec mod_jk/mod_proxy Connecteur http pour md_proxy Application Ejb avec CMIv2 Réplication Application Web avec tomcat Tous les noeuds (DeltaManager) Par paire (BackupManager) Application Ejb avec le service HA Stateful EJB2 (EJB3 à venir) Administration Java EE cluster JASMINe tooling 2 Bull, 2009 JOnAS Day 5.1
Ferme Web Répartiteur de niveau TCP Apache 2.2 / mod_jk Mise en œuvre de modules éprouvés Sert les pages statiques Gère l affinité de session Avantages: Quelques serveurs Apache suffisent pour beaucoup de serveurs JOnAS. 3 Bull, 2009 JOnAS Day 5.1
Ferme EJB Séparation présentation,services métier Adapté au passage à l échelle Meilleur usage des ressources système Meilleur controle des contraintes sur backends ( ex : datasource) 4 Bull, 2009 JOnAS Day 5.1
Clustering EJB HA JNDI et réplication des annuaires & fail-over sur lookup() Load-balancing & fail-over EJB avec les proxy CMI Home EJB2.1 (SSB, SFSB, EB) Remote EJB2.1 (SSB) EJB3 (SSB,SFSB) HA EJB avec le service HA EJB2.1 (SFSB) 5 Bull, 2009 JOnAS Day 5.1
Support des EJB2 & EJB3 Integration avec les conteneurs EJB2 et EJB3 Proxies, plus de classes _cmi dans le classpath du client HA EJB avec le service HA EJB2.1 (SFSB) 6 Bull, 2009 JOnAS Day 5.1
Support multi-protocoles CMIv2 indépendant de Carol et du protocole sousjacent Vue cluster = registre CMI ClusteredObject Liste des url de registre RMI contenant l'objet Synchronisée dans le cluster avec Jgroups 2.6 (support ipv6) Supporte les protocoles jrmp, iiop, irmi appli carol cmi jrmp iiop irmi JGroups 7 Bull, 2009 JOnAS Day 5.1
Conception orientée performance Séparation flux de service/ flux de contrôle Allocation d'un thread dédié pour le flux de contrôle côté client Gestion pool de stubs cote client Control flow Service flow Stubs pool 8 Bull, 2009 JOnAS Day 5.1
Logique cluster dynamique Politique de répartition gérée coté serveur Simple POJO Politiques prédéfinies : round robin, first available, ha singleton, random Stratégies : local preference, load factor, Possibilité de personnaliser la politique Mise à jour à chaud depuis la console jonasadmin Cluster logic V2 V1 Ctrl flow Update Cluster logic 9 Bull, 2009 JOnAS Day 5.1 Ma ste r no de J1
Arrêt en douceur d'un membre du cluster Arrêt programmé/opération de maintenance Arrêt sans interruption de service Désactive le serveur : les nouvelles connexions sont refusées, seules les connexions existantes sont servies Via la fonctionnalité 'blacklist' 10 Bull, 2009 JOnAS Day 5.1
Mode cluster transparent pour les clients Un client EJB n'a pas à être conscient du mode cluster L'activation du service CMI s'effectue côté serveur La configuration par défaut du client suffit pour un fonctionnement en mode nominal nécessite une liste d'urls pour un support de la reprise sur échec 11 Bull, 2009 JOnAS Day 5.1
API réduite & stable pour les clients lourds Indépendante de la version JOnAS (~50ko) Les classes sont téléchargées depuis le serveur (service smartclient) 3. API download 4. Lookup processing 1.First lookup APP API CMI SF 2. Socket connection Cluster Client JVM 12 Bull, 2009 JOnAS Day 5.1
Configuration tier web/ejb - mode serveur (défaut) 13 Bull, 2009 JOnAS Day 5.1
Configuration tier web/ejb - mode client 14 Bull, 2009 JOnAS Day 5.1
Configuration cluster d'un EJB3 Annotations spécifiques package org.ow2.easybeans.examples.cluster; import javax.ejb.remote; import javax.ejb.stateless; import org.ow2.cmi.annotation.cluster; import org.ow2.cmi.annotation.pool; import org.ow2.cmi.annotation.policy; import org.ow2.cmi.lb.policy.roundrobin; import org.ow2.cmi.lb.strategy.localpreference; import org.ow2.easybeans.api.bean.easybeansbean; @Stateless @Remote(ClusterRemote.class) @Cluster(name="test_cluster",pool=@Pool(max=10, maxwaiters=15, timeout=2000)) @Policy(RoundRobin.class) @Strategy(LocalPreference.class) public class ClusterBeanAN implements ClusterRemote {... } 15 Bull, 2009 JOnAS Day 5.1
Configuration cluster d'un EJB3 Descripteur de déploiement spécifique Surcharge les éventuelles annotations easybeans.xml, élément 'cluster:cluster' <easybeans xmlns="http://org.ow2.easybeans.deployment.ejb" xmlns:cluster="http://org.ow2.cmi.info.mapping"> <ejb> <session> <ejb-name>clusterxmlbean</ejb-name> <cluster:cluster name="easybeans-cmi"> <cluster:policy>org.ow2.cmi.lb.policy.firstavailable</cluster:policy> <cluster:strategy>org.ow2.cmi.lb.strategy.localpreference</cluster:strategy> <pool> <max-size>10</max-size> <max-waiters>15</max-waiters> <timeout>2000</timeout> </pool> </cluster:cluster> </session> </ejb> </easybeans> 16 Bull, 2009 JOnAS Day 5.1
JMX Remote Architecture démo democluste r CLIENT democluste r JAR democluste r JAR node 1 master laptop 17 Bull, 2009 JOnAS Day 5.1