JBoss AS / EAP Clustering

35
AS 7 / EAP 6 Clustering [email protected] @akquinet h3p://blog.akquinet.de

description

Der JBoss AS 7 / EAP enthält ausgereifte Technologien um kritische Java EE Anwendungen Hochverfügbar auf Ebene der Middleware zu betreiben. Die enthaltenen Profile sind bereits für kleinere Cluster Topologien entsprechend konfiguriert. Mit dem Domain Mode des Applikationsservers lassen sich mehrere Server Instanzen komfortabel verwalten. Jedoch birgt ein Cluster eine hohe Komplexität, die Detailkenntnisse der grundlegenden Technologien wie JGroups und Infinispan erfordern.

Transcript of JBoss AS / EAP Clustering

Page 1: JBoss AS / EAP  Clustering

                       AS  7  /  EAP  6  -­‐  Clustering  

 [email protected]  @akquinet  h3p://blog.akquinet.de      

Page 2: JBoss AS / EAP  Clustering

Was  ist  die  EAP  6?  

EAP6  !=  EAP5  +1      JBoss  Enterprise  ApplicaBon  PlaCorm  6  ¡  Stabile  und  unterstützte  Pla>orm  ¡  Basiert  auf  JBoss  ApplicaDon  Server  7.1.3  ¡  ImplemenDert  die  Java  Enterprise  EdiDon  6  SpezifikaDon  

–  Web  Profile  –  Full  Profile  

¡  EAP6  ist  für  beide  Profile  zerDfiziert  

2  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 3: JBoss AS / EAP  Clustering

Enterprise  ApplicaBon  PlaCorm  6  

3  03.04.13  Copyright  ©  2012  –  akquinet  AG  

7.1.1  7.1.2  

7.2.0    

7.1.3  

8.0.0  alpha1  

6.0.0  6.0.1  6.1.0  alpha  Bugfixes  

 

Page 4: JBoss AS / EAP  Clustering

EAP6  /  JBoss  AS  7  

Ein  kompleN  neuer  Kernel  ¡  Einsatz  von  JBoss  Modules  und  JBoss  Modular  Service  Container  (MSC)  ¡  Sehr  schnelle  Startzeiten  ¡  Geringer  Speicherverbrauch  ¡  Bessere  Trennung  von  Diensten  

(z.B.  zwei  unterschiedliche  Nachrichtendienste  in  einer  JVM  möglich)  

¡  Einfache  Verwaltung  und  KonfiguraDon  

4  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 5: JBoss AS / EAP  Clustering

Domain  vs.  Standalone  KonfiguraBon  und  Verwaltung  

Page 6: JBoss AS / EAP  Clustering

Verwaltungskonzept  

Domain  Mode    §  zentrales  Management  mehrerer  

Serverinstanzen  und  physikalischer  Hosts  

§  Zentraler  Domain-­‐Controller  §  Verwaltung  mehrerer  Server  (Hosts)  §  Zentrale  KonfiguraBon    §  Zentrales  Deployment  via  

MangemenNools,  z.B.  CLI        

6  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Standalone  Mode    §  Verwaltung  genau  einer  Serverinstanz  §  Verhalten  wie  JBoss  4/5/6  §  Eine  Server-­‐Instanz  pro  JVM  §  Kein  Farm-­‐Deployment  §  Deployment  via  Filesystem  und  CLI          

⇒ Unabhängig  von  den  Serverfunk3onen  und  Eigenscha7en        ⇒ Unabhängig  von  HA,  nur  ein  Verwaltungskonzept  

Page 7: JBoss AS / EAP  Clustering

Host  und  Domain  Controller  

7  03.04.13  Copyright  ©  2012  –  akquinet  AG  

   

Page 8: JBoss AS / EAP  Clustering

EAP  6  Clustering  

Cluster  =  Gruppe  von  Servern,  die  gleiche  Dienste  erbringen  Client  sieht  nur  den  Cluster  nicht  die  Server      Ziele:  §  Fehlertoleranz  durch  Ausblenden    

fehlerha`er  Server  (⇒  Hochverfügbarkeit;  High  Availability,  HA)  

§  Lastausgleich  durch  Verteilung    an  Server  Knoten  (⇒  Skalierbarkeit,  Performanz)  

   

8  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 9: JBoss AS / EAP  Clustering

EAP  6  -­‐  KonfiguraBonsprofile  

§  default  Java  EE  Web  Profile  +  Erweiterungen  wie  z.B.:  JAX-­‐RS,  EJB  Remote  InvocaDon  

§  ha  default  +  Clustering  FunkDonen  

§  full  Java  EE  Full  Profile    +  Alle  ServerfunkDonen  ohne  HA  

§  full-­‐ha  Full  Profile  +  Clustering  

     

 Clustering  Services  (Channel,  Cache)  werden  nur  gestartet    wenn  eine  abhängiger  Service  Cluster-­‐FunkBonalitäten  benöBgt.  

    9  03.04.13  Copyright  ©  2012  –  akquinet  AG  

<domain> <extensions> ... </extensions>

<profiles> <profile name="ha"> <subsystem xmlns="urn:"> ... </subsystem> ... </profile>

<profile name="full-ha"> <subsystem xmlns="urn:"> ... </subsystem> </profile> </profiles> </domain>

Page 10: JBoss AS / EAP  Clustering

Cluster–fähige  ApplikaBonen  

Page 11: JBoss AS / EAP  Clustering

Cluster-­‐fähige  ApplikaBonen  

Clustering  einer  EJB  Session-­‐Bean    @Stateless @Remote(ClusteredStateless.class) @org.jboss.ejb3.annotation.Clustered public class ClusteredStatelessBean implements ClusteredStateless { ... }  Zustandslose  Session  Beans  à  dynamische  Lastverteilung  auf  Clusterknoten  

Zustandsbehagete  Session  Beans    à  Session  Affinity  à  Failover  

AlternaBv:  Deployment-­‐Descriptor  (  META-­‐INF/jboss-­‐ejb3.xml)  

11  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 12: JBoss AS / EAP  Clustering

 HTTP  Session-­‐ReplikaBon    

ReplikaBon  der  HTTP-­‐Session  stellt  sicher,  dass  die  Sessions  der  Klienten  auf  anderen  Cluster-­‐Knoten  verfügbar  sind  

 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <distributable/> </web-app>  WEB-­‐INF/web.xml  

12  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 13: JBoss AS / EAP  Clustering

JPA/Hibernate  2nd  Level  Cache  

Infinispan  ist  der  Standard  2nd  Level  Cache  ab  Hibernate  3.5    AkBvierung  in  der  Persistence  Unit  (persistence.xml)    

<property name="hibernate.cache.use_second_level_cache" value="true" />  full-­‐  und  default-­‐Profil    §  Local  Cache  Container  für  EnDtäten  /  CollecDons  

ha-­‐Profil  §  InvalidaDon  Cache  Container  für  EnDtäten  /  CollecDons    Überschreiben  der  Default-­‐KonfiguraBon  Cache-­‐Container  <property name="hibernate.cache.infinispan.cachemanager“ value="java:jboss/infinispan/mycache"/> Cache  Region  <property name="hibernate.cache.infinispan.entity.cfg" value="entity"/> <property name="hibernate.cache.infinispan.collection.cfg" value="entity"/> <property name="hibernate.cache.infinispan.query.cfg" value="local-query"/> <property name="hibernate.cache.infinispan.timestamp.cfg" value="timestamp"/>

 13  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 14: JBoss AS / EAP  Clustering

EAP6  –  Cluster-­‐relevante  Subsysteme  

JGroups    GruppenkommunikaDon  

Infinispan  Verteilter  Cache  

mod_cluster  HTTP  Load-­‐Balancer  

 EJB  Client  Library    

Remote  EJB  InvocaDon            

14  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 15: JBoss AS / EAP  Clustering

JGroups  

JGroups  ist  ein  Framework  für  GruppenkommunikaBon.      Eigenständiges  Projekt  unter  dem  Dach  von  JBoss  

hNp://www.jgroups.org/    JGroups  wird  seit  JBoss  AS  3.x  für  die  GruppenkommunikaBon  verwendet    Eigenschagen/Fähigkeiten:  ¡  fehlertolerantes  Verschicken  von  Nachrichten  in  einer  Gruppe  von  Sendern/

Empfängern;    sowohl  Punkt-­‐zu-­‐Punkt  als  auch  Punkt-­‐zu-­‐Gruppe  

¡  Die  Gruppe  kann  dynamisch  vergrößert  und  verkleinert  werden  ¡  AutomaDsche  Erkennung  von  funkDonsunfähigen  Teilnehmern  ¡  Verschlüsselung  und  AuthenDfizierung  ¡  Unterschiedliche  Protokollpipelines  (JGroup  Stack)    

15  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 16: JBoss AS / EAP  Clustering

JGroups  -­‐  Transport  

UDP  §  UDP-­‐Unicast  für  Unicast-­‐KommunikaDon  §  IP-­‐MulDcast  für  MulDcast-­‐KommunikaDon  

TCP  §  TCP-­‐Unicast  für  Unicast-­‐KommunikaDon  §  mehrere  TCP-­‐Unicasts    

für  MulDcast-­‐KommunikaDon  

TUNNEL  §  TCP-­‐Unicast  (über  GossipRouter)  für  Unicast-­‐KommunikaDon  §  mehrere  TCP-­‐Unicasts  (Host  nur  einer,  GossipRouter  mehrere)  

für  MulDcast-­‐KommunikaDon  

16  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 17: JBoss AS / EAP  Clustering

JGroups  –  JBoss  AS  7  –  KonfiguraBon  

JGroups  Subsystem-­‐Module  enthält  eine  Standard-­‐KonfiguraBon  des  JGroups  Stacks    JBOSS_HOME/modules/org/jboss/as/clustering/jgroups/main/

jboss-as-clustering-jgroups-7.x.x.Final.jar à jgroups-defaults.xml  Überschreiben  der  Standard-­‐KonfiguraBon  im  JGroups  Subsystem:    <subsystem xmlns="urn:jboss:domain:jgroups:1.1" default-

stack="udp"> <stack name="udp"> ... </stack> <stack name="tcp"> ... </stack> </subsystem>  

17  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 18: JBoss AS / EAP  Clustering

JGroups  -­‐  Wahl  des  KommunikaBonsprotokolls    

UDP  über  IP-­‐MulBcast  §  Parameter:  MulDcastadresse  §  Gruppenmitglieder  finden  sich  ohne  weitere  KonfiguraDon  selbstständig    AlternaBv  kann  UDP  (Unicast)  oder  TCP  benutzt  werden,  

dann  müssen  die  einzelnen  IP-­‐Adressen  gepflegt  werden   <protocol type="TCPPING"> <property name="initial_hosts"> 192.168.0.1[7600], 192.168.0.2[7600] </property> <property name="num_initial_members">2</property> <property name="port_range">0</property> <property name="timeout">2000</property> </protocol>      

18  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 19: JBoss AS / EAP  Clustering

Infinispan  

Um  Hochverfügbarkeit  zu  unterstützen,  müssen  die  Daten  innerhalb  des  Clusters  repliziert  werden  

 Infinispan  wird  intern  für  die  ReplikaBon  verwendet    Eigenschagen  §  JSR-­‐107  kompaDble  Cache  Schni3stelle    §  Map  §  Schlüssel-­‐Wert  Paaren  

19  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 20: JBoss AS / EAP  Clustering

Local  -­‐  Cache  mode  

Lokaler  In-­‐memory  Cache  ähnlich  wie  JBoss  Cache  und  EHCache    Hibernate  2nd  Level  Cache      

20  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 21: JBoss AS / EAP  Clustering

InvalidaBon  -­‐  Cache  mode  

z.B.:  Hibernate  2nd  Level  Cache  in  einer  Cluster  Umgebung      

21  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 22: JBoss AS / EAP  Clustering

ReplicaBon  -­‐  Cache  mode  

22  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 23: JBoss AS / EAP  Clustering

DistribuBon  -­‐  Cache  mode  

23  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Konfigurierbare  Anzahl  von  Kopien  (Gute  Skalierbarkeit)  Basiert  auf  Consistent  Hash  Algorithmus    

Page 24: JBoss AS / EAP  Clustering

L1  -­‐  Cache  mode  

First  Level  Cache  um  Netzwerkaufrufe  zu  verringern      

24  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 25: JBoss AS / EAP  Clustering

Lastverteilung  

25  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 26: JBoss AS / EAP  Clustering

HTTP  Lastverteilung  -­‐  mod_cluster  vs.  mod_jk  

mod_jk  benöBgt  staBsche  KonfiguraBon  §  Cluster  Knoten  hinzufügen  oder  enpernen  (worker.properDes)  §  Anwendung  hinzufügen  oder  enpernen  (uriworkermap.properDes)  

mod_cluster  §  Dynamische  KonfiguraDon  der  HTTPD  worker  

AdverDse  mi3els  MulDcast  §  Intelligente  Lastverteilung  

Einbezug  von  Lastverteilungsmetriken    (cpu,  mem,  heap,  sessions,  receive-­‐traffic,  send-­‐traffic,  requests,  busyness)  

§  Load-­‐Balancing  Groups  (früher  Domäne)        

26  03.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 27: JBoss AS / EAP  Clustering

Load-­‐balancing  Groups  und  ParBBonen  

27  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 28: JBoss AS / EAP  Clustering

mod_cluster  Manager  

28  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 29: JBoss AS / EAP  Clustering

EnCernte  EJB  Aufrufe  

29  03.04.13  Copyright  ©  2012  –  akquinet  AG  

 Remote  JNDI    JBoss  Remote  Naming  

¡   enpernter  Zugriff  auf  JNDI    Client  JNDI    JBoss  EJB  Client  

¡  Nur  für  EJB-­‐Aufrufe  ¡  OpDmiert  

         

Page 30: JBoss AS / EAP  Clustering

HornetQ    Clustering  und  HA  

Page 31: JBoss AS / EAP  Clustering

MoBvaBon  

1.    Zuverlässigkeit    bereits  empfangene  Nachrichten  werden  garanBert  zugestellt  (gehen  nicht  verloren)  

2.    höherer  Nachrichtendurchsatz  3.    Lastverteilung  4.    automaBsches  Failover  bestehender  Verbindungen  

     1.   Bietet  bereits  JMS  2.   Auch  möglich  ohne  HA  und  Clustering  3.   Clustering  4.   HA  

31  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 32: JBoss AS / EAP  Clustering

Clustering  /  Lastverteilung  

32  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Cluster-­‐ConnecBon  zu  jedem  Nachbarn  §  empfangene  Nachrichten  werden  

weitergeleitet  (RoundRobin)  §  wenn  kein  passender  Consumer:  

Message-­‐RedistribuDon    

§  RoundRobin  kann  opDmiert  werden:  nur  an  Knoten  mit  passendem  Consumer  

Page 33: JBoss AS / EAP  Clustering

Hochverfügbarkeit  (HA)  mit  HornetQ  

mehrere  Server  teilen  ein  Journal  §  gemeinsames  Dateisystem  

§  ReplikaDon  über  Netzwerk    (ab  Version  2.3  bzw.  EAP  6.1)  

   Live-­‐Backup  Prinzip  §  1        Live  §  0-­‐1  Backup  §  0-­‐*  bereit  Backup  zu  werden    Backup  Server  ist  eine  JBoss  AS  7  

Instanz  mit  HornetQ  Subsystem  

33  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 34: JBoss AS / EAP  Clustering

HornetQ  –  Server  Discovery  

Server  Discovery  mehrere  Server  §  UDP  MulBcast  (oder    JGroups  Stack  ,  ab  2.3)  

–  Broadcast-­‐Group:  Verbindungsdaten  senden  –  Discovery-­‐Group:  Verbindungsdaten  empfangen  

¡  oder  staBsch  konfigurierte  Nachbarn  (Connectors)  

34  04.04.13  Copyright  ©  2012  –  akquinet  AG  

Page 35: JBoss AS / EAP  Clustering

Diskussion,  Fragen  und  Antworten  akquinet  AG    [email protected]  @akquinet  h3p://blog.akquinet.de