High Availability and Scalability in JBossRequirements
Stable Throughput - Scalability
Provide consistent response times in light of increased system load
Manageability of Servers
Server upgrade with no service interruptions
Clustering: General understanding
A cluster is a set of nodes that communicate with each other and work toward a common goal
A Cluster provide these functionalities:
Scalability (can we handle more users? can we add hardware to our system?)
Load Balancing (share the load between servers)
High Availability (our application has to be uptime close to 100%)
Fault Tolerance (High Availability and Reliability)
State is conserved even if one server in the cluster crashes
High Availability and numbers
|Uptime||Downtime per year|
Interested in mastering JBOSS?Check out this blog post to learn more JBOSS Tutorials.
Clustering and JBoss
Support clustering with a built in configuration ⇒ all configuration
Can also be integrated to an external balancer
A cluster is defined by:
Multicast is the protocol which allow nodes inside to a cluster to communicate without knowing each other.You can think of multicast of a radio or a TV channel, only those who are tuned received the information. Communication between nodes is provided by JGroups, which is library for multicast communication.
|All JBoss clustering services are built on top of JGroups|
Base element to communicate is the Channel (quite equivalent to a socket).
All messages received and sent over a Channel have to pass through the protocol stack.
JBoss AS serves both static and dynamic content.
Not scalable. Additional users can only be handled by improving the performance of the server (e.g. adding additional CPUs, more memory).
No fault tolerance. If the JBoss AS server goes down, the entire service becomes unavailable.
External Load Balancer Architecture
Add one or many web servers to balance the load to multiple JBoss AS nodes typically running on separate physical servers.
Additional user load can be handled by adding another server running JBoss AS.
If any one of the JBoss AS nodes fail, the service is still available through other JBoss AS servers.
General configuration for the following examples
Copy the all directory and create two directory (e.g. node1 and node2)
To run the first node : ./run.sh -c node1 -b 127.0.0.1 -Djboss.messaging.ServerPeerID=1
To run the second node : ./run.sh -c node2 -b 192.168.1.180 -Djboss.messaging.ServerPeerID=2
|You need to bind the servers to different address or else one of the JBoss instances won’t start. jboss.messaging.ServerPeerID has a unique value for each instances, this is required for JMS clustering services.|
For indepth understanding on JBoss click on: