Top Banner
Dirk Weil | GEDOPLAN Java EE hochverfügbar
35

Java EE hochverfügbar

Jun 19, 2015

Download

Documents

gedoplan

Folien zum Vortrag auf der JAX 2013
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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]