clustering von application servern am beispiel von bea ... · clustering von application servern am...

35
Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7 60489 Frankfurt/Main www.iternum.com 2 Agenda • Clustertechnik Allgemein Was ist Clustering ? Wozu Clustering ? Wie funktioniert Clustering von J2EE Komponenten ? Nachteile von Clustering Zusammenfassung

Upload: vudat

Post on 04-Jun-2018

249 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

Clustering vonApplication Servern

am Beispiel vonBEA WebLogic 8.1

Cluster Workshopiternum GmbHAlexanderstraße 760489 Frankfurt/Mainwww.iternum.com

2

Agenda

• Clustertechnik Allgemein• Was ist Clustering ?• Wozu Clustering ?• Wie funktioniert Clustering von J2EE

Komponenten ?• Nachteile von Clustering• Zusammenfassung

Page 2: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

3

Agenda

• Clustertechnik BEA WebLogic 8.1• Einleitung• Kommunikation im Cluster• HTTP Session• Stateless Session Bean• Stateful Session Bean• Entity Bean

4

Was ist Clustering

• Definition:• Ein Cluster besteht aus einer Gruppe von

gekoppelten Komponenten, die nach außen einen einheitlichen Service anbieten.

Page 3: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

5

Agenda

• Clustertechnik Allgemein• Was ist Clustering ?• Gründe für Clustering ?• Wie funktioniert Clustering von J2EE

Komponenten ?• Nachteile von Clustering• Zusammenfassung

6

Gründe für Clustering ?

• High availability• Maximierung der Verfügbarkeit eines Services,

durch Ausweichen auf Alternativkomponenten bei Ausfall einer Komponente

• Die geclusterten Komponenten des Service müssen in verschiedenen gleichartigen Umfeldern zur Verfügung stehen

• Scalability• Die Fähigkeit durch Hinzufügen von

Komponenten transparent auf Änderungen im Kapazitätsbedarf zu reagieren

Page 4: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

7

Was bedeutet High Availability konkret?

53 Minuten99,99

8,76 Stunden99,9

43,8 Stunden99,5

87,6 Stunden99

7,3 Tage98

Maximale Ausfallzeit im Jahr

Verfügbarkeit in %

8

Womit wird High Availability und Scalability erreicht?

• Grundprinzip: Redundantes Vorhalten sensibler Komponenten

• Failover• Andere Komponente springt bei Ausfall ein.• Statusübergabe

• Load Balancing• gleichmäßige Verteilung von

• Rechenlast• Kommunikaton

Page 5: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

9

Agenda

• Clustertechnik Allgemein• Was ist Clustering ?• Gründe für Clustering ?• Wie funktioniert Clustering von J2EE

Komponenten ?• Nachteile von Clustering• Zusammenfassung

10

Wie funktioniert Clustering von J2EE Komponenten ?

• Webkomponenten• Servlets• Java Server Pages

• Enterprise Java Beans

Page 6: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

11

Clustering von Webkomponenten

• Servlets oder Java Server Pages werden durch HTTP – Requests angesprochen.

• Clustering von Webkomponenten heißt:

• Load Balancing von HTTP – Requests

• HTTP Session Replication für Failover

12

Load Balancing

• Lastenverteilung zwischen redundanten Instanzen

• Load Balancing Algorithmen• Round Robin• First Available• Weitere .....

• Etablieren von „Sticky“ Sessions

Page 7: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

13

Wie funktioniert Load Balancing

Node b

jsp1

Node A

jsp1

Load Balancer

WebClient1

WebClient2

WebClient3

Cluster

Session ?

14

Was bedeutet „Sticky Session“ ?

Node b

jsp1

Node A

jsp1

Load Balancer

Webclient1Cluster

Session

Page 8: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

15

Gründe Session State replication ?

Node b

jsp1

Node A

jsp1

Load Balancer

Webclient1Cluster

Session

???????

16

Wie funktioniert Clustering von J2EE Komponenten ?

• Webkomponenten• Servlets• Java Server Pages

• Enterprise Java Beans• Failover Stateless Session Bean• Failover Statefull Session Bean• Failover Entity Bean• Ansatzpunkte für Clusterlogik• Einschub Idempotenz• Arten von Failover• Verwaltung des JNDI – Context im Cluster

Page 9: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

17

Wie funktioniert EJB Clustering ?Failover Stateless Session Bean (SLSB)

Node b

Node A

SLSB1Client1

Cluster

Client2

SLSB2

SLSB1SLSB2

18

Wie funktioniert EJB Clustering ?Failover Stateful Session Bean (SFSB)

Node b

Node A

SFSB1Client1

Cluster

Client2

SFSB2

SFSB1SFSB2

State Client 2

State Client 1

State Client 2

Page 10: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

19

Wie funktioniert EJB Clustering ?Failover Entity Bean (EB)

Node b

Node A

EB1Client1

Cluster

Client2

EB2

EB1EB2

20

Wie funktioniert EJB – Clustering ?Ansatzpunkte für Clusterlogik

• EJB Container• JNDI Naming Server • Home Stub• Remote Stub

• Alle diese Stellen besitzen Logik, die zumClustern von EJB´s benutzt oder erweitert werden können.

Page 11: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

21

Die möglichen Ansatzpunkte im Überblick

22

Clustering auf EJB Container Ebene

• Load Balancing• Container leitet Aufruf an anderen Container

weiter

• Fail over• State Replikation zwischen Containern

notwendig

Page 12: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

23

Clustering auf JNDI - Basis

• JNDI Naming Server übernimmt Clustering• Ansatzpunkt als Zwischenschicht• Abhängigkeit von Application Server und

Implementierungen• Einheitliche Schnittstelle zu Namens- und

Verzeichnisdiensten• Basisdienst von J2EE basisierten Application

Servern

24

Clustering auf Home und Remote Stub Ebene

• Unterschiedliche Strategien für Home- und Remote- Interface möglich

• Logik muss bereits im Code des Stubimplementiert sein

• Unterschiedliche Betrachtungen bei unterschiedlichen EJB- Arten (Entity/Session)

Page 13: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

25

Einschub Idempotenz

• Eine Methode ist idempotent, wenn der Methodenaufruf wiederholbar ausgeführt werden kann ohne, dass sich am Zustand oder Verhalten der Applikation etwas ändert.

• Lesen Kontostand: idempotent• Abbuchung: nicht idempotent

• = Methode ohne Auswirkung wiederholbar!• Transaktionale Methoden sind nicht automatisch

idempotent• Alle Methoden, die Daten manipulieren sind

nicht idempotent

26

Arten von Failover

• Client Managed

Page 14: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

27

Arten von Failover

• Dispatcher Managed

28

Arten von Failover

• Mit dynamischen Proxy

Page 15: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

29

Verwaltung des JNDI – Context im Cluster

• Zentraler JNDI – Baum

• Shared globaler JNDI – Baum

30

Zentraler JNDI - Baum

• JNDI – Baum zentral im Cluster über einen „Name Server“ verfügbar

• Alle anderen Server fragen beim Name Server die Objekte nach

• Nachteile• Ausfallsicherheit: Ausfall Name Server• Verdopplung Anzahl JNDI – Aufrufe• Vergrößerung des Clusters schwierig

Page 16: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

31

Shared global JNDI - Baum

• Verwenden von IP – Multicast• Neuer Server => JNDI – Baum übertragen

• Objekte werden gebunden im• Shared global JNDI – Baum• Lokalen JNDI – Baum

• Spezielle Home Objekte für mehrfach im Clusterverfügbare Objekte

• Home Objekt weiß wo alle Objekte zu finden sind

32

Shared global JNDI - Baum

• Vorteile• Einfachere Skalierbarkeit als bei zentralen JNDI

– Baum• Kein Name – Server vorhanden• Geringere Netzwerkbelastung auf Grund

weniger Kommunikation

• Nachteil• Hohe Netzlast bei Hochfahren des Servers

abhängig von der Anzahl der Server

Page 17: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

33

Agenda

• Was ist Clustering ?• Gründe für Clustering ?• Wie funktioniert Clustering von J2EE

Komponenten ?• Nachteile von Clustering• Zusammenfassung

34

Nachteile von Clustern

• Hohe Anforderungen an Applikationsentwickler• Hohe Anforderungen an Administrator• Fehler sehr schwer nachvollziehbar• Erhöhte Kommunikation im Netzwerk• Deadlooks• Datenkonsistenz sicherstellen• Clusterweites Deployment erforderlich

Page 18: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

35

Agenda

• Was ist Clustering ?• Gründe für Clustering ?• Wie funktioniert Clustering von J2EE

Komponenten ?• Nachteile von Clustering• Zusammenfassung

36

Zusammenfassung

• Verwaltung von redundanten Komponenten im Rechnerverbund

• Wichtige Szenarien

• Load Balancing

• Failover

Page 19: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

37

Agenda

• Clustertechnik BEA WebLogic 8.1• Einleitung• Kommunikation im Cluster• HTTP Session• Stateless Session Bean• Stateful Session Bean• Entity Bean

38

BEA WebLogic 8.1

• Kommerzieller Java J2EE Application Server• WebLogic Server (WLS) seit 1996• Großer Marktanteil• Aufbauende Produktpalette

Page 20: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

39

BEA WebLogic 8.1Features

• J2EE 1.3 zertifiziert• Standards basiert• Hoch-Optimiert• Vielfältiges Clustering• Gute Administration• Guter Web Support. Freier Download von:

• Produkte und Tools• Dokumentation

• Typischer Einsatz:• Komplexe und Kritische Systeme• SUN Solaris Multiprozessor Rechner

40

BEA WebLogic 8.1

• Aufteilung ClusterRechner 1 Rechner 2 Rechner 3

Page 21: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

41

BEA WebLogic 8.1

• Typischer Aufbau

Rechner 1

Rechner 2

Rechner 3

Rechner 4

42

BEA WebLogic 8.1

• Aufbau Beispielcluster

Notebook 1bea-wl-1

Clie nt 1

JSPs

Admin Se rve r

Clie nt 2

Clie nt n

HTTP Lo a dBa la nc ing

EJBs

be a -wl-1

EJBs

b e a -wl-2

Cluste r

Notebook 2bea-wl-2

DBOracle

Notebook 3bea-admin

Page 22: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

43

BEA WebLogic 8.1

• Cluster Administration über Web Interface• Admin Server verwaltet alle anderen Server• Konfiguration• Resourcenmanagement• Monitoring

• Alternativ über JMX

44

Agenda

• Clustertechnik BEA WebLogic 8.1• Einleitung• Kommunikation im Cluster• HTTP Session• Stateless Session Bean• Stateful Session Bean• Entity Bean

Page 23: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

45

Kommunikation im Cluster

• Kommunikation im ClusterMulticast (One-To-Many):• Heart-Beat: Ich lebe noch!• Multicast JNDI: Biete meine EJB an!

Socket (Peer-To-Peer):• EJB Aufrufe: Mach das bitte für mich!• Replikation von Session und Zuständen: Merke dir das bitte!

46

Kommunikation im Cluster

Kommunikationsfehler:• Werden zur Identifizierung von Serverausfällen benutzt• Bei EJB Aufrufe:

• Führen zum automatisch und transparent Failover wenn Connection oder Marshaling Exception (alle EJB Typen)

Page 24: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

47

Kommunikation im ClusterJNDI

Wie biete ich meine EJB an?• JNDI Multicast (One-To-Many)

48

Kommunikation im ClusterJNDI

Entweder:• EJB Dienst noch nicht bekannt: Home wird

übernommen

Object X

A

Object X

A

Page 25: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

49

Kommunikation im ClusterJNDI

Oder:• EJB Dienst schon bekannt: Home wird geupdatet

Object X

A

Object X

A

, A

50

Kommunikation im ClusterJNDI

Oder:• EJB Dienst schon bekannt: Home wird geupdatet

Page 26: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

51

Agenda

• Clustertechnik BEA WebLogic 8.1• Einleitung• Kommunikation im Cluster• HTTP Session• Stateless Session Bean• Stateful Session Bean• Entity Bean

52

HTTP Session im WebLogic Cluster

Wo wird HTTP Session repliziert?• Primäre Session auf angesprochenen Server• Replizierte Session auf sekundärem Server• Definition von Replikationsgruppen und Replikationslogik

Page 27: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

53

HTTP Session im WebLogic Cluster

HTTP Session Verwaltung

Clie ntFi

rew

all HTTP Se rve r

Proxy Plug -In

JSPSe rvle t

Prim ä re r Se ssionZusta nd

We bLog ic Se rve r

54

HTTP Session im WebLogic Cluster

Clie nt

Fire

wa

ll HTTP Se rve r

Proxy Plug -In

JSPSe rvle t

Prim ä re r Se ssionZusta nd

We bLo gic Se rve rCluste r

JSPSe rvle t

Se kund ä re r Se ssionZusta nd

JSPSe rvle t

Replikationsgruppe 1

Page 28: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

55

HTTP Session im WebLogic Cluster

Wann wird Session repliziert?• Replikation sobald Session Parameter gesetzt wird

Wie wird Session repliziert?• Übertragung NUR der Änderungen• Serialisierter Byte-Strom

56

HTTP Session im WebLogic Cluster

Failover Beispiel:• Software / Hardware erkennt Ausfall Server 1• Schaltung auf beliebigem Server im Cluster

Clie nt

Firew

all

HTTP Se rve r

Proxy Plug -In

JSPSe rvle t

Prim ä re r Se ssionZusta nd

We bLog ic Se rve rCluste r

JSPSe rvle t

Se kund ä re r Se ssionZusta nd

JSPSe rvle t

Page 29: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

57

HTTP Session im WebLogic Cluster

Failover Beispiel:• Failover Server holt sich Session von

sekundärem Server• Failover Server wird zum primären Server

Clie nt

Fire

wal

l

HTTP Se rve r

Proxy Plug-In

JSPSe rvle t

Prim ä re r Se ssionZusta nd

We bLo g ic Se rve rCluste r

JSPSe rvle t

Se kund ä re r Se ssionZusta nd

JSPSe rvle t

Clie nt

Fire

wa

ll HTTP Se rve r

Proxy Plug -In

JSPSe rvle t

We bLo gic Se rve rCluste r

JSPSe rvle t

Se kund ä re r Se ssionZusta nd

JSPSe rvle t

Prim ä re r Se ssionZusta nd

58

HTTP Session im WebLogic Cluster

• Sekundärer Server ist bekannt:• Durch Session Cookie:

sessionid!primary_server_id!secondary_server_id• Durch Konfiguration

Page 30: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

59

HTTP Session im WebLogic Cluster

Load Balancing• Abhängig von angewandten Hardware / Software:

• Load Balancer• WebServer PlugIn• HTTPServletProxy

• Wenn kein Load Balancer:• Round-Robin

60

Agenda

• Clustertechnik BEA WebLogic 8.1• Einleitung• Kommunikation im Cluster• HTTP Session• Stateless Session Bean• Stateful Session Bean• Entity Bean

Page 31: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

61

Stateless Session Bean im WebLogic Cluster

Failover• Kein Zustand, d.h. noch mal versuchen• Wenn idempotent:

Für Client transparent

Clie nt

B

We bLog ic Se rve rCluste r

Sta te le ss EJBOb je c t X

Sta te le ss EJBOb je c t X

A

62

Stateless Session Bean im WebLogic Cluster

Failover:• Wenn idempotent:

1. Keine Exception2. Gleicher Aufruf wird auf neuem Server wiederholt

• Sonst:1. Exception an Aufrufer2. Nächster Aufruf wählt neuen Server im Cluster

• Auf Ebenen: • EBJHome

• create()• find()

• EJBObject

Page 32: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

63

Stateless Session Bean im WebLogic Cluster

Load Balancing• Algorithmen:

• Round-Robin• Random• Weight-Based• Mit und ohne Server afinity• Selbstentwickelt

64

We bLo gic Se rve rCluste r

A B C

LegacyAnwendungz.B. SAP/R3

Stateless Session Bean im WebLogic Cluster

Weight-Based Load Balancing:• Bei heterogenen CPU-Kapazitäten

P4 1GHz P4 2GHz P4 2GHzWeight 100 Weight 200 Weight 100

Page 33: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

65

Agenda

• Clustertechnik BEA WebLogic 8.1• Einleitung• Kommunikation im Cluster• HTTP Session• Stateless Session Bean• Stateful Session Bean• Entity Bean

66

Statefull Session Bean im WebLogic Cluster

Failover:• Zustand muss repliziert werden• Verfahren ähnlich wie HTTP Session Replikation

1. Zustandsdaten werden repliziert (nicht EJB)

Page 34: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

67

Statefull Session Bean im WebLogic Cluster

Failover:2. Server A fällt aus3. Client wechselt auf sekundären Server4. EJB Instanz wird erzeugt5. Neuer sekundärer Server wird ausgewählt

68

Statefull Session Bean im WebLogic Cluster

Failover:• Zustandsreplikation nicht 100% Ausfallsicher

Load Balancing:• Beim erzeugen einer neuen EJB Instanz (Home Ebene)• Nicht beim Aufruf der EJB Methoden

Page 35: Clustering von Application Servern am Beispiel von BEA ... · Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7

69

Agenda

• Clustertechnik BEA WebLogic 8.1• Einleitung• Kommunikation im Cluster• HTTP Session• Stateless Session Bean• Stateful Session Bean• Entity Bean

70

Statefull Session Bean im WebLogic Cluster

Failover und Load Balancing:• Zustand der Bean steht immer in der DB:

Kein Zustandsreplikation nötig• Kein automatisches Failover (nur bei bestimmten

Kommunikationsfehlern)• Load Balancing

• Read-Only: bei jedem Aufruf• Read-Write: nur auf Home Ebene