There are many types of caching solutions out there..
Are you talking about the simpler replicated cache? (same data replicated to multiple machines (or different VM's)?
if so - check out
Jboss Cache
Are you talking about a cache whose max size limit grows as the number of nodes (and VM's grow) increases? - Then you are talking about a partitioned cache - Check out Tangosol's Coherence