Action caching can be configured to use a shared fragment store - DRb or Memcache fragment stores are supplied. Expiry from any server will expiry the action for all servers, and, with Memcache, the store can be distributed over a set of servers for redundancy.
Page caching will need some form of sharing of the cache directory across machines - NFS would be the obvious choice, but I don't know how reliable this is, or how Rails or Apache behave when there are network problems.