Java EE hochverfügbar

35
Dirk Weil | GEDOPLAN Java EE hochverfügbar

description

Folien zum Vortrag auf der JAX 2013

Transcript of Java EE hochverfügbar

Page 1: Java EE hochverfügbar

Dirk Weil | GEDOPLAN

Java EE hochverfügbar

Page 2: Java EE hochverfügbar

[email protected]

Dirk Weil

• GEDOPLAN GmbH, Bielefeld• Java EE seit 1998• Konzeption und

Realisierung• Vorträge• Seminare• Veröffentlichungen

2 Java EE hochverfügbar

Page 3: Java EE hochverfügbar

[email protected]

Hochverfügbarkeit

• Lastverteilung– Große Menge von Anfragen– Verteilung auf mehrere

Cluster-Knoten– Verschiedene

Lastverteilungsverfahren– Einzelne Anfrage wird i. d. R. verlangsamt!

3 Java EE hochverfügbar

Page 4: Java EE hochverfügbar

[email protected]

Hochverfügbarkeit

• Ausfallsicherheit– Mehrere redundante Cluster-Knoten– Transparentes „Fail-Over“ bei

Knotenausfall– Replikation von Sitzungsdaten

4 Java EE hochverfügbar

Page 5: Java EE hochverfügbar

[email protected]

Cluster-Architekturen

• EinfacherCluster-Aufbau

5

Client

Load

Bal

ance

r

DB

Cluster

Server 1Web Logic

Server 1Web Logic

Servlet EJBCDIJPAJMS

Server 2Web Logic

Server 2Web Logic

Servlet EJBCDIJPAJMS

Java EE hochverfügbar

Page 6: Java EE hochverfügbar

[email protected]

Cluster-Architekturen

• Mehrstufiger Cluster-Aufbau

6

Cluster 2

Client

Load

Bal

ance

r

DB

Server 3Logic

Server 3Logic

EJBCDIJPAJMS

Server 4Logic

Server 4Logic

EJBCDIJPAJMS

Cluster 1

Server 1Web

Server 1Web

Servlet

Server 2Web

Server 2Web

Servlet

Java EE hochverfügbar

Page 7: Java EE hochverfügbar

[email protected]

Cluster-Architekturen

• SegmentierterCluster-Aufbau

7

Cluster 1

Server 1Web Logic

Server 1Web Logic

Serv-let

EJBCDIJPAJMS

Server 2Web Logic

Server 2Web Logic

Serv-let

EJBCDIJPAJMS

Cluster 2

Server 3Web Logic

Server 3Web Logic

Serv-let

EJBCDIJPAJMS

Server 4Web Logic

Server 4Web Logic

Serv-let

EJBCDIJPAJMS

DBClient

Load

Bal

ance

r

Java EE hochverfügbar

Page 8: Java EE hochverfügbar

[email protected]

Cluster-Architekturen

• Load-Balancer = Illusion „1 Server“• Implementierungsvarianten:

– Hardware– Webserver-Proxy– Cluster-aware Proxies

8

Load BalancerClient

10.1.2.101Server 1

10.1.2.102Server 2

10.1.2.103Server 3

Java EE hochverfügbar

Page 9: Java EE hochverfügbar

[email protected]

Cluster-Architekturen

• Lastverteilungsverfahren:– Round-Robin– Random– Gewichtet

• Sticky Session

9

Load BalancerClient

10.1.2.101Server 1

10.1.2.102Server 2

10.1.2.103Server 3

Java EE hochverfügbar

Page 10: Java EE hochverfügbar

[email protected]

JBoss 7 im Clusterbetrieb

• „Work in Progress“• Viele Änderungen

7.0.x � 7.1.0 � 7.1.1 (� 7.1.3)• Dokumentation

unvollständig,teilweiseveraltet

10 Java EE hochverfügbar

Page 11: Java EE hochverfügbar

[email protected]

JBoss 7 im Clusterbetrieb

• Standalone-Modus– Konfiguration …-ha.xml– Kein gemeinsames Deployment!– Autodeployment möglich.

11

StandaloneServer

StandaloneServer

StandaloneServer

Java EE hochverfügbar

Page 12: Java EE hochverfügbar

[email protected]

JBoss 7 im Clusterbetrieb

• Domänen-Modus– Profil ha oder full-ha– Gemeinsames Deployment

mittels Admin-Tools– Kein Autodeployment

12 Java EE hochverfügbar

Page 13: Java EE hochverfügbar

[email protected]

JBoss 7 im Clusterbetrieb

13

JGroups

Infinispan

Stat

eful

Sess

ion B

eans

Hib

ernat

e(J

PA)

Web

Sess

ion

Hor

net

Q(J

MS)

Page 14: Java EE hochverfügbar

[email protected]

Konfiguration eines Clusters

• Domain• Server Group im

Profil haoder full-ha

14 Java EE hochverfügbar

Page 15: Java EE hochverfügbar

[email protected]

Konfiguration eines Clusters

• Demo:– Master auf

Windows-PC– 2 virtuelle

Linux-Maschinen mit je 2 Slaves

15 Java EE hochverfügbar

Page 16: Java EE hochverfügbar

[email protected]

Web-Anwendungenim JBoss-7-Cluster

• Lastverteilung mittelsmod_cluster möglich– Dynamische Konfiguration– Lastverteilung mit serverbasierten Metriken– HTTP, HTTPS oder AJP

16

ApacheHTTP Server

10.1.2.101JBoss1

10.1.2.102JBoss2

10.1.2.103JBoss3

HTTP/HTTPS/AJPHTTP/HTTPS

Java EE hochverfügbar

Page 17: Java EE hochverfügbar

[email protected]

Web-Anwendungenim JBoss-7-Cluster

• Demo:– Clusterfähige Web-Anwendung

im JBoss-Cluster– Apache Webserver mit mod_cluster auf

Windows-PC

17 Java EE hochverfügbar

Page 18: Java EE hochverfügbar

[email protected]

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

18

Node 2EJB

Node 1EJBClient

Proxy

Java EE hochverfügbar

Page 19: Java EE hochverfügbar

[email protected]

EJBs im JBoss-7-Cluster

• Demo:– Remote-Aufruf von Stateless und Stateful

Session Beans

19 Java EE hochverfügbar

Page 20: Java EE hochverfügbar

[email protected]

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 bedient20 Java EE hochverfügbar

Page 21: Java EE hochverfügbar

[email protected]

Messaging im JBoss-7-Cluster

• Meldungsempfang– Nur von einem Knoten– aber: Knoten ohne passende Consumer

erhalten keine Meldungen

21 Java EE hochverfügbar

Page 22: Java EE hochverfügbar

[email protected]

Messaging im JBoss-7-Cluster

• Ein Ausfall eines Knotens …

• … wird serverseitig automatisch behandelt– Das Lastverteilungsverfahren wird

reorganisiert– Zwischenzeitlich für den ausgefallenen

Knoten vorgesehene Meldungen werden zugestellt, wenn er wieder läuft

22 Java EE hochverfügbar

Page 23: Java EE hochverfügbar

[email protected]

Messaging im JBoss-7-Cluster

• Ein Ausfall eines Knotens …

• … führt clientseitig zum Abbruch– sofortiges Reconnect (an anderen Knoten)

möglich

• Keine Meldung geht verloren, wenn Auslieferung persistent!

23 Java EE hochverfügbar

Page 24: Java EE hochverfügbar

[email protected]

JPA-Entitiesim JBoss-7-Cluster

• Profitieren nur indirekt– Lastverteilung �Webanwendung bzw.

EJBs– Failover � Datenbank

– Performanceerhöhung• 2nd Level Cache• Query Cache

24 Java EE hochverfügbar

Page 25: Java EE hochverfügbar

[email protected]

JPA-Entitiesim JBoss-7-Cluster

• Default-Verfahren: Cache mit Invalidierung– Jeder Knoten füllt den 2nd Level Cache

selbsttätig– Schreiboperation invalidiert betroffene

Einträge auf den anderenCluster-Knoten

• Andere Verfahrenmöglich, aberselten sinnvoll

25

JBoss1

L2C

JBoss2

L2C

JBoss3

L2C

Java EE hochverfügbar

Page 26: Java EE hochverfügbar

[email protected]

Infinispan-Repl.-Verfahren

• Session-Replikation– Default: An alle, asynchron

• Skaliert nicht• Hohe Verfügbarkeit

– Synchron– Distributed

• 1 … n Kopien• Skaliert• Verringerte Verfügbarkeit

26 Java EE hochverfügbar

Page 27: Java EE hochverfügbar

[email protected]

Session Replication

• Für Web-App in web.xml aktivieren

• Für EJBs serverabhängig

Java EE hochverfügbar27

<web-app …>

<distributable />

<jboss …>

<jee:assembly-descriptor>

<c:clustering>

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

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

</c:clustering>

Page 28: Java EE hochverfügbar

[email protected]

Session Replication

• Nur Serializable!• Fat Session Problem• Braucht N-fach Speicher• Skaliert nicht, wenn Replikation an alle• Unterschiedliche Trigger• Verschiedene Granularitäten

Java EE hochverfügbar28

Page 29: Java EE hochverfügbar

[email protected]

GlassFish

• Domäne– Dedizierter

Admin-Server– Vollständige Kontrolle

der Cluster-Serverper SSH möglich

Java EE hochverfügbar29

Das Bild kann zurzeit nicht angezeigt werden.

Page 30: Java EE hochverfügbar

[email protected]

GlassFish

• Lastverteilung & Failover– Web-App: HTTP Load Balancer Plug-In– EJBs: InitialContext: Random node

EJB Proxy: Sticky / Per-Req. LBTransparent Failover

– JMS: Message BrokerVerteilte DestinationsTransparent Failover möglich

Java EE hochverfügbar30

Page 31: Java EE hochverfügbar

[email protected]

GlassFish

• Replikationsverfahren– In Memory– Je ein Replikat– Consistent Hash

Algorithm

Java EE hochverfügbar31

Page 32: Java EE hochverfügbar

[email protected]

WebLogic

• Domäne– Dedizierter Admin-Server– Rechnerübergreifend

mittels Node Manager– Deployment auch auf

Cluster-Teile möglich

Java EE hochverfügbar32

Page 33: Java EE hochverfügbar

[email protected]

WebLogic

• Lastverteilung & Failover– Web-App: Webserver-Plugin– EJBs: Replica-aware Stubs– JMS: Distributed Destinations

Migratable JMS Servers

Java EE hochverfügbar33

Page 34: Java EE hochverfügbar

[email protected]

WebLogic

• Replikationsverfahren– In Memory (Primär/Sekundär)– Filesystem– Datenbank

Java EE hochverfügbar34

Page 35: Java EE hochverfügbar

Schön, dass Sie da waren!

Fr, 15:30: Java EE – Lessons Learned

[email protected]