Hi,
It is easy to cluster most databases. You'll have to read up on the particular one you are using.
JBoss/Tomcat have solutions for load balancing and so forth. If you are running multiple servers for load balancing, then you need to configure that in JBoss or Tomcat. Then the Alfresco apps within that need to be configured to talk to each other. It is also possible to have a read-only Alfresco on the cluster or a replicated server for backup, etc.
In essence, the following components need to be replicated between Alfresco applications:
* caches
* content store
Indexes are maintained individually on each server and will therefore follow the database replication by some configurable time. Each server must have access to its own Lucene indexes.
The functionality to replicate the caches is part of the OpenSource distribution. The functionality to replicate the content is Enterprise, but you could use your own tools or 3rd party tools to do. The functionality to keep the indexes synchronized is part of the Enterprise distribution.
Regards