I am interested on Java Clustering recently. A Cluster is a group of application servers that transparently run your J2EE application as if it were a single entity. To scale, you should include additional machines within the cluster. To minimize downtime, make sure every component of the cluster is redundant.

So first we need to understand what’s the basic.

J2EE clustering, Part 1
J2EE clustering, Part 2

Advance reading

Java EE clustering
High-Availability Clustering in Java Applications
Client Side Load Balancing for Web 2.0 Applications

Open source clustering software:

Web Applications with Spring Web Flow and Terracotta for Spring

Terracotta improves failover support, adds clustering for 5 more frameworks

Google: Cluster Computing and MapReduce