View
277
Download
1
Category
Preview:
DESCRIPTION
Vortrag von Dirk Wei dem auf Expertenkreis Java am 14.3.2013, GEDOPLAN GmbH, Bielefeld
Citation preview
JBoss 7 als Plattform fürhochverfügbare Anwendungen
Expertenkreis Java14.03.2013, GEDOPLAN
Dirk Weil, GEDOPLAN GmbH
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
Cluster-Architekturen
Einfacher Cluster-Aufbau
3
Cluster
JBoss 2
JSPs
Servlets
EJBs
JDBC
JBoss 2
JSPs
Servlets
EJBs
JDBC
JBoss 1
JSPs
Servlets
EJBs
JDBC
JBoss 1
JSPs
Servlets
EJBs
JDBC
Client
Load
Bal
ance
r
Datenbank
Cluster-Architekturen
Mehrstufiger Cluster-Aufbau
4
Cluster 1
JBoss 2
JSPs
Servlets
JBoss 1
JSPs
Servlets
Cluster 2
JBoss 4
EJBs
JDBC
JBoss 3
EJBs
JDBCClient
Load
Bal
ance
rDatenbank
Cluster-Architekturen
Segmentierter Cluster-Aufbau
5
Cluster 1
JBoss 2
JSPs
Servlets
EJBs
JDBC
JBoss 2
JSPs
Servlets
EJBs
JDBC
JBoss 1
JSPs
Servlets
EJBs
JDBC
JBoss 1
JSPs
Servlets
EJBs
JDBC
Cluster 2
JBoss 4
JSPs
Servlets
EJBs
JDBC
JBoss 4
JSPs
Servlets
EJBs
JDBC
JBoss 3
JSPs
Servlets
EJBs
JDBC
JBoss 3
JSPs
Servlets
EJBs
JDBC
DatenbankClientLo
ad B
alan
cer
Cluster-Architekturen
Load-Balancer erzeugt Illusion „einzelner Server“
Implementierungsvarianten:
Hardware
Webserver-Proxy
Cluster-aware Proxies
Lastverteilungsverfahren:
Round-Robin
Random
Gewichtet
Sticky Session
6
Load BalancerClient
10.1.2.100JBoss1
10.1.2.101JBoss2
10.1.2.102JBoss3
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
JBoss 7 im Clusterbetrieb
Standalone-Modus
Konfiguration …-ha.xml
Kein gemeinsames Deployment!
Autodeployment möglich.
Domänen-Modus
Profil ha oder full-ha
Gemeinsames Deploymentmittels Admin-Tools
Kein Autodeployment
8
StandaloneServer
StandaloneServer
StandaloneServer
JBoss 7 im Clusterbetrieb
9
JGroups
Infinispan
Stat
eful
Sess
ion B
eans
Hib
ernat
e(J
PA)
Web
Sess
ion
Hor
net
Q(J
MS)
Konfiguration eines Clusters
Domain
Server Group imProfil ha oder full-ha
10
Konfiguration eines Clusters
Demo:
Master auf Windows-PC
2 virtuelle Linux-Maschinen mit je 2 Slaves
11
Web-Anwendungen im JBoss-7-Cluster
Lastverteilung mittels mod_cluster möglich
Dynamische Konfiguration
Lastverteilung mit serverbasierten Metriken
HTTP, HTTPS oder AJP
12
Apache HTTP Server
10.1.2.100JBoss1
10.1.2.101JBoss2
10.1.2.102JBoss3
HTTP/HTTPS/AJPHTTP/HTTPS
Web-Anwendungen im JBoss-7-Cluster
Demo:
Clusterfähige Web-Anwendung im JBoss-Cluster
Apache Webserver mit mod_cluster auf Windows-PC
13
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
14
Node 2EJB
Node 1EJBClient
Proxy
EJBs im JBoss-7-Cluster
Demo:
Remote-Aufruf einer Stateless Session Bean
Remote-Aufruf einer Stateful Session Bean
15
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
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
JPA-Entities im JBoss-7-Cluster
Profitieren nur indirekt
Lastverteilung �Webanwendung bzw. EJBs
Failover � Datenbank
Performanceerhöhung2nd Level Cache
Query Cache
18
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
Andere Verfahrenmöglich, aberselten sinnvoll
19
JBoss1
L2C
JBoss2
L2C
JBoss3
L2C
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
Recommended