I'm running Magento CE on multiple web node. The Admin Backend is always running on the same server, so all the images are uploaded on this server. On my
The simplest method would be to use rsync with inotify on your admin server - so new images are distributed instantly around other nodes.
An application like http://code.google.com/p/lsyncd/ would work well and produce near-realtime replication.
You also have to bear in mind that on a cluster, you will have resized cached images generated on the fly, so it is also a good idea to rsync the
directory circularly between all nodes. This doesn't require inotify and can run on a lapsed ~10 minute cron.
This method will obviously become more and more inefficient the larger your media directory grows.
But if you have a BIG site
However, if your site is so large that it requires a cluster to begin with, it only seems sensible to be using a CDN for all media. Magento has a myriad of support for different CDN providers
When it comes to cache files, one possible effective way is to use a NFS share volume and mount it on all the webservers. This way you can ensure the availability of cached files for all the webservers and even this helps if you want to purge any.