Title: Oracle 9i AS Availability and Scalability
1Oracle 9i ASAvailability and Scalability Margare
t H. Mei Senior Product Manager, ST
2Agenda
- Brief 9iAS Overview
- Designing and Deploying Applications
- Scalability
- Availability
3Oracle9i Application Server
Create Personalized Portals
Portal
Run All Your Web Sites Applications
Connected Clients
CORBA
Perl
XML/XSL
J2EE
Oracle
Forms Services
Java Stored Procedures
PSPs PLSQL
BC4J
Web Cache
Oracle HTTP Server powered by Apache
Developer Kits LDAP, XML, Database
non-Oracle Data Sources
Oracle9iAS Wireless for wireless clients
Collaborate With Stakeholders
Email, Unified Messaging
Internet File System
non-Oracle Apps
Integrate Your Business
Oracle Applications Interconnect
Oracle Workflow
Oracle Gateways
Manage Your Web Infrastructure
Oracle Enteprise Manager
Oracle Internet Directory
Oracle Advanced Security
4Agenda
- Brief 9iAS Overview
- Designing and Deploying Applications
- Scalability
- Availability
5Layered Scaling
- Scale each tier independent of the other tiers
- Middle-tier Scale its two major components
- Front-end The web server and different plug-ins
that serve static files and route requests to the
back-end servers - Back-end Execute application logic written in
Java (JSPs, Servlets), PL/SQL (PSPs, Stored
Procedures) etc. - Data-tier Scale the data-tier
6Scaling Front-end
- Front-end Apache Web server Serves static
resources and acts as a dispatcher for dynamic
requests - The Apache server is stateless (static,
mod_plsql...) - Scale on SMP - Apache process based architecture
- Scale on Web Farm Run multiple instances on a
web farm (exact clones) and use a load balancing
solution - Software load balancers Oracle 9i AS Web Cache,
Network Dispatcher, NLBS etc. - Round-Robin DNS (RRDNS)
- Intelligent IP or Application aware load
balancing hardware like LocalDirector, BigIP,
ACEDirector etc. - Combination of one or more of the above
7Deploying Front-end
- Front-End Web Server Scalability
Front-end Web servers
Back-end servers
Load Balancer Oracle Web Cache
PL/SQL
PL/SQL
Database
Internet
PL/SQL
PL/SQL
Shared disk
8Deploying Front-end
- Multiple load balancers using RRDNS
Front-end Web servers
Back-end servers
Load Balancer 1
Database
Internet
Load Balancer 2
9Back-end Server Application Design
- Stateless vs. stateful applications
- A stateful application maintains session state
information within its runtime environment
between successive client calls. - A stateless application maintains no such
information within its environment. It may
persist state information in a common store such
as a database or in the client browser.
10Stateful Application Example
- Step-by-step example of client requests to a
stateful application
Node A
Load Balancer
Database
Client
Node B
11Stateful Application Example
- Step-by-step example of client requests to a
stateful application
Client issues request request gets routed for
service by Node A. Node A may access db to
service the request
Node A
Load Balancer
Database
Client
Node B
12Stateful Application Example
- Step-by-step example of client requests to a
stateful application
Node A services request maintains session state
for Clients session
Node A
Load Balancer
Database
Client
Node B
Clients session state
13Stateful Application Example
- Step-by-step example of client requests to a
stateful application
On any subsequent request, Client must be
serviced by Node A (and not Node B) to access
Clients session state
Node A
Load Balancer
Database
Client
Node B
Clients session state
14Stateless Application Example
- Step-by-step example of client requests to a
stateless application
Node A
Load Balancer
Database
Client
Node B
15Stateless Application Example
- Step-by-step example of client requests to a
stateless application
Client issues request request gets routed for
service by Node A
Node A
Load Balancer
Database
Client
Node B
16Stateless Application Example
- Step-by-step example of client requests to a
stateless application
Node A services request maintains session state
in Database
Node A
Load Balancer
Database
Client
Node B
Clients session state
17Stateless Application Example
- Step-by-step example of client requests to a
stateless application
On any subsequent request, Client may be serviced
by either Node A or Node B and access session
state
Node A
Load Balancer
Database
Client
Node B
Clients session state
18Deploying Back-end Stateless
- Write stateless applications that run on a
cluster - Front-end server(s) load balances across the
back-end servers
Front-end servers
Back-end servers
Load Balancer
JServ
JServ
Database
Internet
JServ
JServ
19Load-balancing Back-end Apache JServ on a cluster
- Example Load-balancing between multiple nodes
with Apache JServ.
The HTTP Server will load-balance requests to
Apache JServ instances. Bigger machines may be
allocated more requests
Apache JServ
Load Balancer
Apache JServ
20Deploying Back-end Server Stateful
- Stateful Applications Use sticky routing
- Use Oracle 8i JVM
Front-end servers
Back-end servers
8i JVM PL/SQL
Load Balancer
8i JVM PL/SQL
Database
Internet
8i JVM PL/SQL
8i JVM PL/SQL
21Load-balancing HTTP Server Oracle8i JVM
The Oracle8i JVM can load-balance over multiple
listener processes
Client
Network Load Balancer
Oracle8i Listeners
Oracle8i Dispatchers
Oracle8i Shared Servers
HTTP Servers
Ports
Processes
22Load-balancing HTTP Server Oracle8i JVM
A listener will be chosen at random
Client
Network Load Balancer
Oracle8i Listeners
Oracle8i Dispatchers
Oracle8i Shared Servers
HTTP Servers
Ports
Processes
23Load-balancing HTTP Server Oracle8i JVM
The listener will determine which Oracle8i JVM
node has the lightest load, and then which
dispatcher on that node is most available
Client
Network Load Balancer
Oracle8i Listeners
Oracle8i Dispatchers
Oracle8i Shared Servers
HTTP Servers
Ports
Processes
24Load-balancing HTTP Server Oracle8i JVM
The dispatcher will then route the request to one
of the server processes
Client
Network Load Balancer
Oracle8i Listeners
Oracle8i Dispatchers
Oracle8i Shared Servers
HTTP Servers
Ports
Processes
25Scaling Stateless Applications JDK JVM
- The JDK JVM scales by giving quick performance to
many clients. This works well for stateless Java
apps because the VM does not get weighted down by
holding onto a lot of state.
No state
Additional clients do not contribute additional
state to be managed between successive requests
26Application Design Scalability JDK JVM
- However, stateful applications force the VM to
perform a lot of concurrent memory management
when multiple users access the system. Managing
state may inhibit the scalability of the JDK JVM.
Managing this memory may slow down the
performance of the JDK JVM
27Application Design Scalability Oracle8i JVM
- The Oracle8i JVM is a session-based JVM that
handles stateful applications exceedingly well.
Performance does not degrade until the capacity
of the hardware is reached.
Oracle8i JVM
No concurrent GC because of segregated memory
spaces
28Scaling Back-end Server
- Oracle 9i AS provides scalability for both
stateless and stateful applications - Stateless Java applications scale well in the JDK
JVM - Stateful Java applications scale well in the
Oracle8i JVM (aka JServer) - Oracle 9i AS also provides a highly scalable
infrastructure for Oracle Forms, Oracle Reports,
PL/SQL and Perl applications
29Scaling Data Server Oracle 9i AS
- Middle-tier database cache
- Reduces load on back-end database
- Faster access by avoiding network round trips
- Works transparently with existing applications
- Does not slow updates etc..
30Scaling Data Server Oracle 9i AS
- Example Web site with catalog
Without Cache Static content served from middle
tier. All catalog queries are resolved on back
end.
Catalog data
Static content
HTTP Server
Data reads Data writes
With Cache Queries resolved at cache, reducing
load on back end. Cache data on many middle tier
nodes for higher Scalability.
Catalog data
Static content
HTTP Server
Oracle8i Cache
Data writes
Data reads
31Scaling Data Server Database Cache
Partitioned Data-tier
Front-end servers
Back-end servers
jserv
iCache
Load Balancer
OPS Database
jserv
iCache
Internet
jserv
iCache
OPS Database
jserv
iCache
32Scalability Putting it all together
Partitioned Data-tier
Front-end servers
Back-end servers
jserv
Apache
iCache
Load Balancer
OPS Database
jserv
Apache
iCache
Internet
jserv
Apache
iCache
OPS Database
jserv
Apache
iCache
33Scalability Putting it all together
Partitioned Data-tier
Front-end servers
Back-end servers
Apache
Load Balancer
OPS Database
iCache
OJVM
Apache
iCache
OJVM
Internet
iCache
OJVM
Apache
OPS Database
iCache
OJVM
Apache
34Oracle 9i AS Services for Scalability
- Oracle 9i AS enables scalable stateless and
stateful applications, front-end servers,
back-end servers and data servers - Oracle 9i AS makes it easy to build scalable web
applications
35Agenda
- Goals for PAS
- Designing and Deploying Applications
- Scalability
- Availability
36AvailabilityDeath-detection and restart
- Oracle 9i AS will detect the failure of given
threads or processes and restart them as
appropriate. - Watchdog in HTTP Server
- PMON in Oracle8i JVM, Oracle8i PL/SQL, and
Oracle8i Cache - HTTP Server will detect death of Apache JServ
instance and not route requests to it. Restart of
remote Apache JServ in a future release.
37Availability Redundancy Failover
- For web server failure, Oracle 9i AS web cache
can reroute requests to other web server
instances. - For failure of stateless services, Oracle 9i AS
will failover a request to an alternate instance
of the service. This is similar to connection
re-routing.
38Oracle 9i AS High Availability
- Oracle 9i AS can be deployed to create a system
with no single point of failure
No single point of failure in database tier with
OPS
HTTP Server
Network load-balancer
HTTP Server
HTTP Server
Network load-balancer
HTTP Server
39Oracle 9i AS Session Isolation
- There is no session isolation in a typical JDK
JVM. The failure of one users session may cause
all users sessions to fail.
BUG
One client may encounter a buggy session
40Oracle 9i AS Session Isolation
- There is no session isolation in a typical JDK
JVM. The failure of one users session may cause
all users sessions to fail.
The one bug could bring down all users sessions
41Oracle 9i AS Session Isolation
- JServer isolates sessions from one another. In
the case that one fails, the others are
unaffected.
BUG
Oracle8i JVM
One client may encounter a buggy session
42Oracle 9i AS Session Isolation
- JServer isolates sessions from one another. In
the case that one fails, the others are
unaffected.
Oracle8i JVM
Only the buggy session is lost. Other sessions
are unaffected
43Oracle 9i AS Connection Re-routing
- In the case of failure of a stateless service of
Oracle 9i AS, requests can be re-routed to
alternate instances of the service. - If a client is accessing a stateful application,
the client may be re-routed to the instance of
the application through an alternate route - Lets look at an example with the HTTP Server and
a stateful application running in Oracle8i JVM...
44Oracle 9i AS Connection Re-routing
- Example Failure of an HTTP Server node.
Subsequent requests can be re-routed through
alternate nodes.
Network load-balancer
45Oracle 9i AS Connection Re-routing
- Example Failure of an HTTP Server node.
Subsequent requests can be re-routed through
alternate nodes.
A client request comes in and is routed to an
HTTP Server instance and an Oracle8i JVM instance
Network load-balancer
46Oracle 9i AS Connection Re-routing
- Example Failure of an HTTP Server node.
Subsequent requests can be re-routed through
alternate nodes.
The application in Oracle8i JVM is stateful, and
session state is retained in the instance. Also,
a cookie may be returned to the clients browser
Network load-balancer
47Oracle 9i AS Connection Re-routing
- Example Failure of an HTTP Server node.
Subsequent requests can be re-routed through
alternate nodes.
Now, in between requests, the HTTP Server on
Node A goes down
Network load-balancer
48Oracle 9i AS Connection Re-routing
- Example Failure of an HTTP Server node.
Subsequent requests can be re-routed through
alternate nodes.
The next request can be routed to the destination
Oracle8i JVM instance through an alternate HTTP
Server
Network load-balancer
49Oracle 9i AS Connection Re-routing
- Example Failure of an HTTP Server node.
Subsequent requests can be re-routed through
alternate nodes.
If it were just an HTTP Server process that went
down, Oracle 9i AS would detect this and restart
it
Network load-balancer
50Oracle 9i AS Failover
- Oracle8i Cache features transparent application
failover (TAF). In the case that a cache node
goes down, client sessions will be automatically
recreated on an alternate instance.
A client has a stateful session with a cache
instance
Oracle8i Cache
Oracle8i Cache
51Oracle 9i AS Failover
- Oracle8i Cache features transparent application
failover (TAF). In the case that a cache node
goes down, client sessions will be automatically
recreated on an alternate instance.
The cache instance may go down
Oracle8i Cache
Oracle8i Cache
52Oracle 9i AS Failover
- Oracle8i Cache features transparent application
failover (TAF). In the case that a cache node
goes down, client sessions will be automatically
recreated on an alternate instance.
The session automatically re-connects to the new
instance. The cache session is transparently
recreated on the alternate instance
Oracle8i Cache
Oracle8i Cache
53Availability
- Minimize planned downtime
- No Single Point of Failure
- Session Isolation
- Automatic Death Detection And Restart
- Redundancy and Automatic Failover
- Oracle 9i AS makes it easy to build highly
available web applications
54(No Transcript)