Contenu connexe
Similaire à 10 Clustering (20)
10 Clustering
- 2. 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) Java EE cluster
Par paire (BackupManager)
Application Ejb avec le service HA
Stateful EJB2 (EJB3 à venir)
Administration
JASMINe tooling
2 ©Bull, 2009 JOnAS Day 5.1
- 3. 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
- 4. 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
- 5. 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
- 6. 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
- 7. Support multi-protocoles
CMIv2 indépendant de Carol et du protocole sous-
jacent appli
Vue cluster = registre CMI
carol
ClusteredObject
Liste des url de registre RMI contenant l'objet cmi
Synchronisée dans le cluster avec Jgroups 2.6
(support ipv6) jrmp iiop irmi
Supporte les protocoles jrmp, iiop, irmi
JGroups
7 ©Bull, 2009 JOnAS Day 5.1
- 8. 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
- 9. 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 V1
V2
Ctrl flow Ma
ste
r no
de
Update J1
Cluster logic
9 ©Bull, 2009 JOnAS Day 5.1
- 10. 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
- 11. 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
- 12. 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
- 15. 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
- 16. 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
- 17. democluste
r
JAR
Architecture démo
democluste
r
CLIENT
democluste
r
JAR
node 1
JMX Remote
master laptop
17 ©Bull, 2009 JOnAS Day 5.1