Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti
Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) Ing. Zdeněk Troníček, Ph.D. Katedra softwarového inženýrství Fakulta informačních technologií ČVUT v Praze Letní semestr 2010/2011, přednáška č. 10
© Zdeněk Troníček, 2011
Agenda Clustering Load balancing (rozdělování zátěže) Failover (překonání chyby)
GlassFish 3.1
2
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Cluster • Klastr je seskupení několika
server 2
instancí aplikačního serveru • Pro klienta vypadá klastr
server 1 server 3
jako jeden aplikační server
• Pro aplikaci je klastr téměř
server 4
transparentní
3
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Load Balancing
Client 1
Client 2
request 1 request 3
request 1 request 2
Load balancer request 2
Client 3
4
request 3
BI-EJA 10: Aplikační server, clustering
Instance 1
Instance 2
Ing. Zdeněk Troníček, Ph.D.
Distribuce požadavků round-robin algorithm response-time or first-available algorithm least-loaded algorithm
weighted algorithm random
5
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Failover
Client
request 1 request 2
request 1
Instance 1
request 2
Instance 2
Dispatcher
Požadavky, které nemají vedlejší efekt, lze bezpečně zopakovat
6
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Database Replication 2
Client
1,6 5
Dispatcher
Web App 3
7 failover
4 backup session
DB
Web App
8 restore session
• global HTTPSession ID • backup frequency and granularity
7
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Memory Replication (1) Web App
2
Client
1,6 5
4 backup session
3
Dispatcher
7 failover
Web App
• „restore session” není potřeba • výkonově lepší než ukládání do databáze
8
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Memory Replication (2) Multi-servers replication
Paired servers replication
Centralized server
backup server
9
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
EJB Clustering Smart stub
IIOP runtime library
client
Interceptor proxy
client proxy
stub
stub RMI/IIOP modified ORBSocketFactory
10
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Mýty • failover dokáže zcela eliminovat chyby – NE! • každou aplikaci lze pustit v klastru – NE! • distributed structure vs. collocated structure
Load balancer
11
Load balancer
Web container
Web container
Web container
Web container
EJB container
EJB container
EJB container
EJB container
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Machine Equivalence
12
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
GlassFish Components Domain Domain Administration Server (DAS) Server instance
Central repository Local repository cache
13
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Architecture
Domain Administration Server
Machine A
Machine B
Server Instance 1
Server Instance 2
Local Repository Cache
Local Repository Cache
Central Repository
14
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Load Balancing (1) GlassFish Web Server Server Instance 1 LB Plugin Server Instance 2
15
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Load Balancing (2) Sticky round-robin Reverse proxy functionality Health check mechanism
Idempotent URL retries Quiescence
16
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Session Persistence Frequency web method time-based
Scope session modified-session modified-attribute
17
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
JMS Cluster Client 1 Broker 2
Client 2
Broker 1
Broker 3
config
Client 3 master broker
18
BI-EJA 10: Aplikační server, clustering
Ing. Zdeněk Troníček, Ph.D.
Dedicated Brokers Each server instance has an associated broker
19
MQ 1
MQ 2
AS 1
AS 2
BI-EJA 10: Aplikační server, clustering
DAS
Ing. Zdeněk Troníček, Ph.D.
Otázky & odpovědi
[email protected]