Title: JBoss Clustering and Configuration Service Implementation
1JBoss Clustering and Configuration Service
Implementation Giorgia Lodi (lodig_at_cs.unibo.it)
Department of Computer Science University of
Bologna
2Summary
- Configuration Service
- JBoss Clustering
- load balancing and fail-over mechanisms
- Clustering Experiments
- Current work and Future works
- Concluding Remarks
- References
3Configuration Service (1/2)
- Configuration service exercises coarse-grained
configuration control - It can manage such macro resources as host
computers - It will not be able to view and manage the
activities of the resources at a finer
granularity than that - JVM does not allow a high-level programmer to
manage parameters such as CPU utilization, memory
usage, and disk space usage
4Configuration Service (2/2)
- It will not reserve and allocate a certain amount
of CPU or memory or disk for a particular
application - It will not change the scheduler of the machine
as well - It is responsible for setting up the platform and
distributing the load among the hosts
5JBoss Clustering Service (1/7)
- Clustering service
- useful for meeting such non-functional
requirements as availability and scalability - provides load-balancing and fail-over services
6JBoss Clustering Service (2/7)
- JBoss cluster set of nodes
- each node instance of JBoss AS
- several nodes in cluster can be grouped to form a
partition - partition
- identified by a unique name in cluster
- partition name defined in the AS configuration
files - a node may belong to one or more partitions
(i.e., partitions may overlap)
7JBoss Clustering Service (3/7)
8JBoss Clustering Service (4/7)
- JGroups open source project
- reliable group communication toolkit written in
Java - Highly Available Partition (HAPartition)
- abstracts the communication layer
- provides access to basic communication primitives
- gives informational data (e.g. the cluster name,
the name of the node, information about the
membership of the cluster) - two categories of primitives take place
- the state transfer
- RPC calls
9JBoss Clustering Service (5/7)
- Distributed Replicant Manager (DRM)
- responsible for managing replicated objects
through a given partition - assume to manage a list of stubs for a RMI
server. DRM allows sharing these stubs in the
cluster and knowing to which node a stub belongs - Distributed State Service (DS)
- manages replicated states (e.g. Stateful Session
Bean states, HTTP sessions) - allows sharing a set of dictionaries in the
cluster
10JBoss Clustering Service (6/7)
- HA JNDI
- global, shared, cluster-wide JNDI Context
- used by clients when they want to lookup and bind
objects - HA RMI
- responsible for implementing the smart proxies of
the JBoss clustering - HA EJB
- provides mechanisms to cluster the EJBs (i.e.
Stateless Session Bean, Stateful Session Bean,
Entity Bean) - Message Driven Beans no cluster version
currently implemented by the JBoss 3.x
11JBoss Clustering Service (7/7)
- Supports both so-called homogeneous and
heterogeneous deployment (in the cluster) - homogeneous each node contains the same beans
- heterogeneous each node contains different set
of beans
12Homogeneous Deployment
- Realized using JBoss farming service
- application copied into JBoss farm directory
13Heterogeneous Deployment
- No available documentation for that
- Realized defining to which node an EJB belongs
- Not recommended
- distributing transaction is a problem
- requires propagation of Tx Context and
synchronization of the transaction monitors
across nodes - requires distributed notifications
- it is currently missing a distributed transaction
manager - it has deep performance impact
- Conclusion (in every JBoss documentation)
- USE HOMOGENEOUS DEPLOYMENT!!
14Load Balancing Policies (1/3)
- JBoss adopts the third model
- motivations
- no single point of failure
- load balancing activity can only die when client
application dies - performance cost minimal (client pays the full
price)
15Load Balancing Policies (2/3)
- Defined at deployment time into Deployment
Descriptors (DDs)
16Load Balancing Policies (3/3)
- Four load balancing strategies already included
into JBoss clustering service - Random-robin, Round-robin, First available, First
available identical all proxies - Using the RMI mechanism (HA RMI)
- clients get references to remote EJB components
using the RMI mechanism - a stub (i.e. proxy) to objects is downloaded into
the client - the proxy code includes the clustering logic
(i.e. load balancing and fail-over) - the proxy contains the list of target nodes the
client can access and the load balancing policy
17Fail-over Mechanism
- If the cluster topology changes
- the JBoss server will piggyback a new list of
target nodes - The proxy, before returning the response to the
client code - unpacks the list of target nodes from the
response - updates the list with the new one and returns the
real invocation result to the client code
18Positioning the clustering logic
- Clustering logic (i.e. load balancing and
fail-over) located in the last interceptor of the
client-side proxy
Client JVM
Client
Invocation Handler
Clustered Interceptor
Security
Transaction
Invokers to target nodes
Run time generated interfaces
19What we are investigating
- Currently, we are investigating
- use of homogeneous deployment
- use of notion of partition for
configuration/reconfiguration purposes
20Clustering Experiments (1/2)
- Very simple application implemented
Entity relationship
21Clustering Experiments (2/2)
Cluster
Account Application
Account Application
JBoss AS
JBoss AS
Client
22Clustering Experiments Results
- The state is correctly transferred among the
nodes of the cluster - Each update is seen in every node of the cluster
- Cluster membership correctly updated and seen by
the cluster nodes - Fail-over guarantees that application instances
continue to operate in survived nodes of the
cluster
23JBoss Clustering Limitations
- Synchronization
- no distributed locking mechanisms for
synchronization of concurrent Entity Beans - these beans can only be synchronized by using
locking at the database level - Missing cluster-wide configuration management
- cluster administration connect directly to each
nodes JMX console - Load balancing
- current implementation embodies non-adaptive
strategies, only (i.e. none of them considers
dynamic load conditions of the machines in the
cluster)
24Current work (1/2)
- Experimental assessment of the extent to which
JBoss can be programmed, so as to distribute the
computational load dynamically at run time - extension to JBoss load balancing mechanism
- integration of dynamic/adaptive load balancing
strategies, to be defined at deployment time (for
the time being) - testbed cluster of machines, running JBoss,
which will be subjected to variable load
conditions (e.g. use of ECPerf for simulation
purposes)
25Current work (2/2)
- Configuration service driven, run time management
of faulty/overloaded nodes - assume application homogeneously deployed in
JBoss (partition of) cluster (i.e., each node
runs a full instance of the application) - node failure
- JBoss fail-over mechanism guarantees that
surviving application instances continue to
operate normally - in contrast, TAPAS configuration service
guarantees that new node replaces the failed one
(and state of failed node is restored) - motivation assume partition consists of two
nodes, only,
26Future works (1/2)
- Current JBoss
- cluster used completely (i.e. all its nodes) when
deploying the application (i.e. no dynamic
Farming Service) - application components cannot be deployed in a
sub-set of nodes of the initial cluster - TAPAS Configuration Service selects sub-set of
nodes (of the cluster) on which deploying and
running applications
27Future works (2/2)
- Geographical clustering
- evaluation of VPN technology to support
geographically clustered AS - experimental evaluation of geographically
clustered AS
28SLA Interpreter
- Two phases
- pure parsing process using either SAX or DOM XML
parsers - final result Java object with as many attributes
as the elements of the original XML document - Java object processed again to obtain low-level
QoS requirements (it may require statistical
analysis) - Currently
- first phase (i.e. SLA parser) implemented
- using DOM XML parser as applied in all JBoss
source code - using old SLA version
- SLA file included into META-INF application
directory with DDs
29Concluding Remarks
- SLA parser must be re-viewed with the new SLA
- If possible, use of distributed transactions from
Arjuna - overcome JBoss problems for the heterogeneous
deployment?
30References
- JBoss group Feature Matrix JBossClustering
(Rabbit Hole), 19th of March 2002. - S.Labourey and B.Burke JBoss Clustering 2nd
Edition, 2002. - http//www.javagroups.com/
- G.Ferrari and G.Lodi Implementing the TAPAS
Architecture, TAPAS Internal Draft, December
2003. - S. Labourey Load Balancing and Failover in the
JBoss Application Server, 2001-2004 IEEE Task
Force on Cluster Computing, Available at
http//www.clusteringcomputing.org/ - B.Burke and S.Lauborey Clustering with JBoss
3.0, ONJava.com, October 2002.