JBoss 7 als Plattform für hochverfügbare Anwendungen

Post on 19-Jun-2015

277 views 1 download

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

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