JBoss 7 als Plattform für hochverfügbare Anwendungen

20
JBoss 7 als Plattform für hochverfügbare Anwendungen Expertenkreis Java 14.03.2013, GEDOPLAN Dirk Weil, GEDOPLAN GmbH

description

Vortrag von Dirk Wei dem auf Expertenkreis Java am 14.3.2013, GEDOPLAN GmbH, Bielefeld

Transcript of JBoss 7 als Plattform für hochverfügbare Anwendungen

Page 1: JBoss 7 als Plattform für hochverfügbare Anwendungen

JBoss 7 als Plattform fürhochverfügbare Anwendungen

Expertenkreis Java14.03.2013, GEDOPLAN

Dirk Weil, GEDOPLAN GmbH

Page 2: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 3: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 4: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 5: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 6: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 7: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 8: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 9: JBoss 7 als Plattform für hochverfügbare Anwendungen

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)

Page 10: JBoss 7 als Plattform für hochverfügbare Anwendungen

Konfiguration eines Clusters

Domain

Server Group imProfil ha oder full-ha

10

Page 11: JBoss 7 als Plattform für hochverfügbare Anwendungen

Konfiguration eines Clusters

Demo:

Master auf Windows-PC

2 virtuelle Linux-Maschinen mit je 2 Slaves

11

Page 12: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 13: JBoss 7 als Plattform für hochverfügbare Anwendungen

Web-Anwendungen im JBoss-7-Cluster

Demo:

Clusterfähige Web-Anwendung im JBoss-Cluster

Apache Webserver mit mod_cluster auf Windows-PC

13

Page 14: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 15: JBoss 7 als Plattform für hochverfügbare Anwendungen

EJBs im JBoss-7-Cluster

Demo:

Remote-Aufruf einer Stateless Session Bean

Remote-Aufruf einer Stateful Session Bean

15

Page 16: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 17: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 18: JBoss 7 als Plattform für hochverfügbare Anwendungen

JPA-Entities im JBoss-7-Cluster

Profitieren nur indirekt

Lastverteilung �Webanwendung bzw. EJBs

Failover � Datenbank

Performanceerhöhung2nd Level Cache

Query Cache

18

Page 19: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

Page 20: JBoss 7 als Plattform für hochverfügbare Anwendungen

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

[email protected]