JBoss 7 als Plattform für hochverfügbare Anwendungen - OIO GmbH

25
JBoss 7 als Plattform für hochverfügbare Anwendungen Orientierungspunkt 04/2013 24.05.2013, OIO Dirk Weil, GEDOPLAN GmbH

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

JBoss 7 als Plattform fürhochverfügbare Anwendungen

Orientierungspunkt 04/2013

24.05.2013, OIO

Dirk Weil, GEDOPLAN GmbH

Dirk Weil

GEDOPLAN GmbH, Bielefeld

Java EE seit 1998

Konzeption undRealisierung

Vorträge

Seminare

Veröffentlichungen

2JBoss 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

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

Cluster-Architekturen

EinfacherCluster-Aufbau

4

Client

Load

Bal

ance

r

DB

Cluster

Server 1

Web Logic

Server 1

Web LogicServlet EJB

CDIJPAJMS

Server 2

Web Logic

Server 2

Web LogicServlet EJB

CDIJPAJMS

JBoss 7 als Plattform für hochverfügbare Anwendungen

Cluster-Architekturen

Mehrstufiger Cluster-Aufbau

5

Cluster 2

Client

Load

Bal

ance

r

DB

Server 3

Logic

Server 3

LogicEJBCDIJPAJMS

Server 4

Logic

Server 4

LogicEJBCDIJPAJMS

Cluster 1

Server 1

Web

Server 1

WebServlet

Server 2

Web

Server 2

WebServlet

JBoss 7 als Plattform für hochverfügbare Anwendungen

Cluster-Architekturen

SegmentierterCluster-Aufbau

6

Cluster 1

Server 1

Web Logic

Server 1

Web LogicServ-let

EJBCDIJPAJMS

Server 2

Web Logic

Server 2

Web LogicServ-let

EJBCDIJPAJMS

Cluster 2

Server 3

Web Logic

Server 3

Web LogicServ-let

EJBCDIJPAJMS

Server 4

Web Logic

Server 4

Web LogicServ-let

EJBCDIJPAJMS

DBClient

Load

Bal

ance

r

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

7

Load BalancerClient

10.1.2.100JBoss1

10.1.2.101JBoss2

10.1.2.102JBoss3

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.3)

Dokumentation unvollständig, teilweise veraltet

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

JBoss 7 im Clusterbetrieb

Standalone-Modus

Konfiguration …-ha.xml

Kein gemeinsames Deployment!

Autodeployment möglich.

9

StandaloneServer

StandaloneServer

StandaloneServer

JBoss 7 als Plattform für hochverfügbare Anwendungen

JBoss 7 im Clusterbetrieb

Domänen-Modus

Profil ha oder full-ha

Gemeinsames Deploymentmittels Admin-Tools

Kein Autodeployment

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

JBoss 7 im Clusterbetrieb

11

JGroups

Infinispan

Stat

eful

Sess

ion B

eans

Hib

ernat

e(J

PA)

Web

Sess

ion

Hor

net

Q(J

MS)

JBoss 7 als Plattform für hochverfügbare Anwendungen

Konfiguration eines Clusters

Domain

Server Group imProfil ha oder full-ha

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

Konfiguration eines Clusters

Demo:

Master auf Windows-PC

2 virtuelle Linux-Maschinen mit je 2 Slaves

13JBoss 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

14

Apache HTTP Server

10.1.2.100JBoss1

10.1.2.101JBoss2

10.1.2.102JBoss3

HTTP/HTTPS/AJPHTTP/HTTPS

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

15JBoss 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

16

Node 2EJB

Node 1EJBClient

Proxy

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

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

Messaging im JBoss-7-Cluster

Verbindungsaufbau (ConnectionFactory, Connection) kann beliebigen Knoten nutzen

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

18JBoss 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!

19JBoss 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

20JBoss 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

21

JBoss1

L2C

JBoss2

L2C

JBoss3

L2C

JBoss 7 als Plattform für hochverfügbare Anwendungen

Infinispan-Repl.-Verfahren

Session-Replikation

Default: An alle, asynchronSkaliert nicht

Hohe Verfügbarkeit

Synchron

Distributed1 … n Kopien

Skaliert

Verringerte Verfügbarkeit

22JBoss 7 als Plattform für hochverfügbare Anwendungen

Session Replication

Für Web-App in web.xml aktivieren

Für EJBs serverabhängig

23

<web-app …>

<distributable />

<jboss …>

<jee:assembly-descriptor>

<c:clustering>

<jee:ejb-name>CounterBean</jee:ejb-name>

<c:clustered>true</c:clustered>

</c:clustering>

JBoss 7 als Plattform für hochverfügbare Anwendungen

Session Replication

Nur Serializable!

Fat Session Problem

Braucht N-fach Speicher

Skaliert nicht, wenn Replikation an alle

Unterschiedliche Trigger

Verschiedene Granularitäten

24JBoss 7 als Plattform für hochverfügbare Anwendungen

Schön, dass Sie da waren!

Weitere Informationsmöglichkeiten:• Orientierungspunkte - powered by OIO

www.oio.de/vortrag-mannheim/orientierungspunkt-java-xml-vortrag-kostenlos.htm

• Expertenkreis Javahttp://expertenkreisjava.blogspot.de

• Schulung: Entwicklung und Betrieb von Anwendungen auf JBoss AS 7http://www.oio.de/seminar/open-source/jboss-schulung.htm

[email protected]