7. dirk.weil@gedoplan.de
Cluster-Architekturen
• Segmentierter
Cluster-Aufbau
7
Cluster 1
Server 1
Web Logic
Server 1
Web Logic
Serv-
let
EJB
CDI
JPA
JMS
Server 2
Web Logic
Server 2
Web Logic
Serv-
let
EJB
CDI
JPA
JMS
Cluster 2
Server 3
Web Logic
Server 3
Web Logic
Serv-
let
EJB
CDI
JPA
JMS
Server 4
Web Logic
Server 4
Web Logic
Serv-
let
EJB
CDI
JPA
JMS
DBClient
LoadBalancer
Java EE hochverfügbar
8. dirk.weil@gedoplan.de
Cluster-Architekturen
• Load-Balancer = Illusion „1 Server“
• Implementierungsvarianten:
– Hardware
– Webserver-Proxy
– Cluster-aware Proxies
8
Load BalancerClient
10.1.2.101
Server 1
10.1.2.102
Server 2
10.1.2.103
Server 3
Java EE hochverfügbar
10. dirk.weil@gedoplan.de
JBoss 7 im Clusterbetrieb
• „Work in Progress“
• Viele Änderungen
7.0.x 7.1.0 7.1.1 ( 7.1.3)
• Dokumentation
unvollständig,
teilweise
veraltet
10 Java EE hochverfügbar
11. dirk.weil@gedoplan.de
JBoss 7 im Clusterbetrieb
• Standalone-Modus
– Konfiguration …-ha.xml
– Kein gemeinsames Deployment!
– Autodeployment möglich.
11
Standalone
Server
Standalone
Server
Standalone
Server
Java EE hochverfügbar
12. dirk.weil@gedoplan.de
JBoss 7 im Clusterbetrieb
• Domänen-Modus
– Profil ha oder full-ha
– Gemeinsames Deployment
mittels Admin-Tools
– Kein Autodeployment
12 Java EE hochverfügbar
13. dirk.weil@gedoplan.de
JBoss 7 im Clusterbetrieb
13
JGroups
Infinispan
Stateful
SessionBeans
Hibernate(JPA)
Web
Session
HornetQ(JMS)
18. dirk.weil@gedoplan.de
EJBs im JBoss-7-Cluster
• Proxies implementieren
Lastverteilungsverfahren
• Erster Zugriff auf beliebigen Knoten
• Weitere Zugriffe durch Proxy verteilt
• Kein externer Loadbalancer nötig!
• Lastverteilung nur bei Remote-Zugriffen
18
Node 2
EJB
Node 1
EJBClient
Proxy
Java EE hochverfügbar
20. dirk.weil@gedoplan.de
Messaging im JBoss-7-Cluster
• Verbindungsaufbau
(ConnectionFactory, Connection)
geschieht zufällig zu einem Knoten
• Meldungsversand
– PtP-Meldungen werden lastverteilt
– Pub/Sub-Meldungen gehen an alle Knoten
– Knoten ohne passende Consumer werden
nicht bedient
20 Java EE hochverfügbar
22. dirk.weil@gedoplan.de
Messaging im JBoss-7-Cluster
• Ein Ausfall eines Knotens …
• … wird serverseitig automatisch
behandelt
– Das Lastverteilungsverfahren wird
reorganisiert
– Zwischenzeitlich für den ausgefallenen
Knoten vorgesehene Meldungen werden
zugestellt, wenn er wieder läuft
22 Java EE hochverfügbar
23. dirk.weil@gedoplan.de
Messaging im JBoss-7-Cluster
• Ein Ausfall eines Knotens …
• … führt clientseitig zum Abbruch
– sofortiges Reconnect (an anderen Knoten)
möglich
• Keine Meldung geht verloren, wenn
Auslieferung persistent!
23 Java EE hochverfügbar
25. dirk.weil@gedoplan.de
JPA-Entities
im JBoss-7-Cluster
• Default-Verfahren: Cache mit Invalidierung
– Jeder Knoten füllt den 2nd Level Cache
selbsttätig
– Schreiboperation invalidiert betroffene
Einträge auf den anderen
Cluster-Knoten
• Andere Verfahren
möglich, aber
selten sinnvoll
25
JBoss1
L2C
JBoss2
L2C
JBoss3
L2C
Java EE hochverfügbar
27. dirk.weil@gedoplan.de
Session Replication
• Für Web-App in
web.xml aktivieren
• Für EJBs serverabhängig
Java EE hochverfügbar27
<web-app …>
…
<distributable />
<jboss …>
<jee:assembly-descriptor>
<c:clustering>
<jee:ejb-name>CounterBean</jee:ejb-name>
<c:clustered>true</c:clustered>
</c:clustering>
28. dirk.weil@gedoplan.de
Session Replication
• Nur Serializable!
• Fat Session Problem
• Braucht N-fach Speicher
• Skaliert nicht, wenn Replikation an alle
• Unterschiedliche Trigger
• Verschiedene Granularitäten
Java EE hochverfügbar28