JBoss 7 als Plattform für hochverfügbare Anwendungen
1. JBoss 7 als Plattform für
hochverfügbare Anwendungen
Expertenkreis Java
14.03.2013, GEDOPLAN
Dirk Weil, GEDOPLAN GmbH
2. Hochverfügbarkeit
Lastverteilung
Große Menge von Anfragen
Verteilung auf mehrere Cluster-Knoten
Verschiedene Lastverteilungsverfahren
Einzelne Anfrage wird i. d. R. verlangsamt!
Ausfallsicherheit
Mehrere redundante Cluster-Knoten
Transparentes „Fail-Over“ bei Knotenausfall
Replikation von Sitzungsdaten
2
7. JBoss 7 im Clusterbetrieb
„Work in Progress“
Viele Änderungen 7.0.x 7.1.0 7.1.1 ( 7.1.2)
Dokumentation unvollständig, teilweise veraltet
7
8. JBoss 7 im Clusterbetrieb
Standalone-Modus
Standalone
Konfiguration …-ha.xml Server
Kein gemeinsames Deployment! Standalone
Server
Autodeployment möglich.
Standalone
Server
Domänen-Modus
Profil ha oder full-ha
Gemeinsames Deployment
mittels Admin-Tools
Kein Autodeployment
8
9. Web
Session
JBoss 7 im Clusterbetrieb
Stateful
Session Beans
JGroups
Infinispan
Hibernate (JPA)
HornetQ (JMS)
9
12. Web-Anwendungen im JBoss-7-Cluster
Lastverteilung mittels mod_cluster möglich
Dynamische Konfiguration
Lastverteilung mit serverbasierten Metriken
HTTP, HTTPS oder AJP 10.1.2.100
JBoss1
Apache HTTP Server
10.1.2.101
HTTP/HTTPS HTTP/HTTPS/AJP JBoss2
10.1.2.102
JBoss3
12
13. Web-Anwendungen im JBoss-7-Cluster
Demo:
Clusterfähige Web-Anwendung im JBoss-Cluster
Apache Webserver mit mod_cluster auf Windows-PC
13
14. EJBs im JBoss-7-Cluster
Proxies implementieren Lastverteilungsverfahren
Erster Zugriff auf beliebigen Knoten
Weitere Zugriffe durch Proxy verteilt
Kein externer Loadbalancer nötig! Node 1
Client EJB
Proxy
Node 2
EJB
Lastverteilung nur bei Remote-Zugriffen
14
15. EJBs im JBoss-7-Cluster
Demo:
Remote-Aufruf einer Stateless Session Bean
Remote-Aufruf einer Stateful Session Bean
15
16. 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
Meldungsempfang
Nur von einem Knoten
aber: Knoten ohne passende Consumer erhalten keine Meldungen
16
17. Messaging im JBoss-7-Cluster
Ein Ausfall eines Knotens …
… wird serverseitig nach einigen Sekunden bemerkt
Das Lastverteilungsverfahren wird reorganisiert
Zwischenzeitlich für den ausgefallenen Knoten vorgesehene
Meldungen werden zugestellt, wenn er wieder läuft
… führt clientseitig zum Verbindungsabbruch
sofortiges Reconnect (an anderen Knoten) möglich
Keine Meldung geht verloren, wenn Auslieferung persistent!
17
18. JPA-Entities im JBoss-7-Cluster
Profitieren nur indirekt
Lastverteilung Webanwendung bzw. EJBs
Failover Datenbank
Performanceerhöhung
2nd Level Cache
Query Cache
18
19. JPA-Entities im JBoss-7-Cluster
Default-Verfahren: Caching mit Invalidierung
Jeder Knoten füllt den 2nd Level Cache selbsttätig
Schreiboperation invalidiert betroffene Einträge auf den anderen
Cluster-Knoten
L2C
Andere Verfahren JBoss2
möglich, aber L2C
selten sinnvoll JBoss1
L2C
JBoss3
19
20. Schön, dass Sie da waren!
Unsere nächsten Termine:
16.05.2013: Desktop Usability im Browser - GWT in Business Anwendungen
04.07.2013: jBPM und Drools: Prozess- und Regelgestützte Fachanwendungen
dirk.weil@gedoplan.de