Hochverfügbarkeit	
  mit	
  der	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Enterprise	
  Applica9on	
  	
  
Pla;orm	
  
	
  
	
  
Heinz	
  Wilming	
  
	
  
heinz.wilming@akquinet.de	
  
	
  
akquinet	
  AG	
  
Eigenscha:en	
  Java	
  Enterprise	
  Edi?on	
  	
  
zuverlässig	
  
sicher	
  skalierbar	
  
wartbar	
  
EAP6	
  !=	
  EAP5	
  +1	
  	
  
Clustering	
  
Gruppe	
  von	
  Servern,	
  die	
  gleiche	
  Dienste	
  erbringen.	
  
Client	
  sieht	
  nur	
  den	
  Cluster	
  nicht	
  die	
  Server.	
  
Ziele:	
  
§  Fehlertoleranz	
  durch	
  Ausblenden	
  	
  
fehlerha:er	
  Server	
  
(⇒	
  Hochverfügbarkeit,	
  HA)	
  
§  Lastausgleich	
  durch	
  Verteilung	
  	
  
an	
  Server	
  Knoten	
  
(⇒	
  Skalierbarkeit)	
  
Lastverteilung	
  ohne	
  Session	
  
Replika?on	
  
	
  
	
  
	
  
Skalierung	
  
Demo	
  
mod_cluster	
  
AJP	
  Request	
  MCMP	
  
Worker,	
  Context,	
  Load-­‐Metrics	
  
HTTP	
  /	
  HTTPS	
  
mod_cluster	
  
§  Dynamische	
  Konfigura?on	
  der	
  HTTPD	
  worker	
  
Adver?se	
  mi`els	
  Mul?cast	
  
§  Intelligente	
  Lastverteilung	
  
Einbezug	
  von	
  Lastverteilungsmetriken	
  	
  
(cpu,	
  mem,	
  heap,	
  sessions,	
  receive-­‐traffic,	
  send-­‐traffic,	
  requests,	
  
busyness)	
  
§  Load-­‐Balancing	
  Groups	
  (aka.	
  Domäne)	
  	
  
mod_cluster	
  vs.	
  mod_jk	
  
§  mod_jk	
  benö?gt	
  sta?sche	
  Konfigura?on	
  
§  Cluster	
  Knoten	
  hinzufügen	
  oder	
  engernen	
  (worker.proper?es)	
  
§  Anwendung	
  hinzufügen	
  oder	
  engernen	
  
(uriworkermap.proper?es)	
  
Session	
  Replika?on	
  
Demo	
  
Subsysteme	
  
Cluster–fähige	
  Applika?onen	
  
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	
  
Zustandsbeha:ete	
  Session	
  Beans	
  	
  
à  Session	
  Affinity	
  
à  Failover	
  
Alterna?v:	
  Deployment-­‐Descriptor	
  (	
  META-­‐INF/jboss-­‐ejb3.xml)	
  
HTTP	
  Session	
  Replika?on	
  
Replika?on	
  der	
  HTTP-­‐Session	
  stellt	
  sicher,	
  dass	
  die	
  
Sessions	
  der	
  Klienten	
  auf	
  anderen	
  Cluster-­‐Knoten	
  
verfügbar	
  sind	
  
<web-app>
<distributable/>
</web-app>
à	
  WEB-­‐INF/web.xml	
  
Cluster	
  Kommunika?on	
  
JGroups	
  
Transport	
  
UDP	
  
TCP	
  
TUNNEL	
  
Replica?on	
  
Um	
  Hochverfügbarkeit	
  zu	
  unterstützen,	
  	
  
müssen	
  die	
  Daten	
  innerhalb	
  des	
  Clusters	
  	
  
repliziert	
  werden	
  
Infinispan	
  wird	
  intern	
  für	
  die	
  	
  
Replika?on	
  verwendet	
  
Replica?on	
  -­‐	
  Cache	
  mode	
  
Distribu?on-­‐	
  Cache	
  mode	
  
L1	
  -­‐	
  Cache	
  mode	
  
Invalida?on	
  -­‐	
  Cache	
  mode	
  
Cluster	
  Par??onen	
  
Op?mierung	
  
•  JGroups	
  Distribu?on	
  enthält	
  vorkonfigurierte	
  
Stacks	
  für	
  unterschiedliche	
  Cluster	
  Topologien	
  
– UDP	
  vs.	
  TCP	
  
•  Infinispan	
  
– ASYNC	
  vs.	
  SYNC	
  
– HTTP	
  Session	
  Replica?on	
  
•  Replica?on	
  Trigger	
  
•  Replica?on	
  Granularity	
  
Messaging	
  (HornetQ)	
  
1. Zuverlässigkeit	
  	
  
bereits	
  empfangene	
  Nachrichten	
  werden	
  
garan?ert	
  zugestellt	
  (gehen	
  nicht	
  verloren)	
  
2. 	
  höherer	
  Nachrichtendurchsatz	
  
3. 	
  Lastverteilung	
  
4. 	
  automa9sches	
  Failover	
  bestehender	
  
Verbindungen	
  
HornetQ	
  -­‐	
  Lastverteilung	
  
HornetQ	
  -­‐	
  Failover	
  
•  Ab	
  JBoss	
  EAP	
  6.1	
  (HornetQ	
  2.3)	
  -­‐	
  In-­‐Memory	
  
Message	
  Replica?on	
  
7.2.0.Final	
  
	
  
8.0.0	
  
alpha1	
  
6.1.0	
  
alpha	
  
6.1.0	
  
beta	
  
6.1.0	
  
Final	
  
7.x	
  
	
  
QA	
  
	
  
Zero-­‐Dollar-­‐
Subscrip9on	
  
for	
  Development	
  
	
  
Payed-­‐
Subscrip9on	
  with	
  
Support	
  for	
  
Produc9on	
  
Free	
  
akquinet	
  AG	
  –	
  Standort	
  Berlin	
  
JAVA	
  
Beratung	
  und	
  
Coaching	
  
Individuelle	
  
Lösungen	
  
Betriebsführung	
  
Schulungen	
  
Produktberatung	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  

JBoss EAP clustering

  • 1.
    Hochverfügbarkeit  mit  der                                                                                                              Enterprise  Applica9on     Pla;orm       Heinz  Wilming     heinz.wilming@akquinet.de     akquinet  AG  
  • 2.
    Eigenscha:en  Java  Enterprise  Edi?on     zuverlässig   sicher  skalierbar   wartbar  
  • 3.
  • 4.
    Clustering   Gruppe  von  Servern,  die  gleiche  Dienste  erbringen.   Client  sieht  nur  den  Cluster  nicht  die  Server.   Ziele:   §  Fehlertoleranz  durch  Ausblenden     fehlerha:er  Server   (⇒  Hochverfügbarkeit,  HA)   §  Lastausgleich  durch  Verteilung     an  Server  Knoten   (⇒  Skalierbarkeit)  
  • 5.
    Lastverteilung  ohne  Session   Replika?on         Skalierung  
  • 6.
  • 7.
    mod_cluster   AJP  Request  MCMP   Worker,  Context,  Load-­‐Metrics   HTTP  /  HTTPS  
  • 8.
    mod_cluster   §  Dynamische  Konfigura?on  der  HTTPD  worker   Adver?se  mi`els  Mul?cast   §  Intelligente  Lastverteilung   Einbezug  von  Lastverteilungsmetriken     (cpu,  mem,  heap,  sessions,  receive-­‐traffic,  send-­‐traffic,  requests,   busyness)   §  Load-­‐Balancing  Groups  (aka.  Domäne)    
  • 9.
    mod_cluster  vs.  mod_jk   §  mod_jk  benö?gt  sta?sche  Konfigura?on   §  Cluster  Knoten  hinzufügen  oder  engernen  (worker.proper?es)   §  Anwendung  hinzufügen  oder  engernen   (uriworkermap.proper?es)  
  • 10.
  • 11.
  • 12.
  • 13.
    Cluster–fähige  Applika?onen   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   Zustandsbeha:ete  Session  Beans     à  Session  Affinity   à  Failover   Alterna?v:  Deployment-­‐Descriptor  (  META-­‐INF/jboss-­‐ejb3.xml)  
  • 14.
    HTTP  Session  Replika?on   Replika?on  der  HTTP-­‐Session  stellt  sicher,  dass  die   Sessions  der  Klienten  auf  anderen  Cluster-­‐Knoten   verfügbar  sind   <web-app> <distributable/> </web-app> à  WEB-­‐INF/web.xml  
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    Replica?on   Um  Hochverfügbarkeit  zu  unterstützen,     müssen  die  Daten  innerhalb  des  Clusters     repliziert  werden   Infinispan  wird  intern  für  die     Replika?on  verwendet  
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
    Op?mierung   •  JGroups  Distribu?on  enthält  vorkonfigurierte   Stacks  für  unterschiedliche  Cluster  Topologien   – UDP  vs.  TCP   •  Infinispan   – ASYNC  vs.  SYNC   – HTTP  Session  Replica?on   •  Replica?on  Trigger   •  Replica?on  Granularity  
  • 27.
    Messaging  (HornetQ)   1. Zuverlässigkeit     bereits  empfangene  Nachrichten  werden   garan?ert  zugestellt  (gehen  nicht  verloren)   2.   höherer  Nachrichtendurchsatz   3.   Lastverteilung   4.   automa9sches  Failover  bestehender   Verbindungen  
  • 28.
  • 29.
    HornetQ  -­‐  Failover   •  Ab  JBoss  EAP  6.1  (HornetQ  2.3)  -­‐  In-­‐Memory   Message  Replica?on  
  • 30.
    7.2.0.Final     8.0.0   alpha1   6.1.0   alpha   6.1.0   beta   6.1.0   Final   7.x     QA     Zero-­‐Dollar-­‐ Subscrip9on   for  Development     Payed-­‐ Subscrip9on  with   Support  for   Produc9on   Free  
  • 31.
    akquinet  AG  –  Standort  Berlin   JAVA   Beratung  und   Coaching   Individuelle   Lösungen   Betriebsführung   Schulungen   Produktberatung