Some options from easiest to hardest (in my opinion)
There are a few ways to update the 2 sites. By far the easiest way would be to update them using a procedure which "does the same operation" on each node, for example executing the commands locally and across an SSH connection, or using subversion and checking the code out to both nodes, or maybe just setting up the first one and doing an rsync.
Setting up NFS - one server would be the NFS server, the second a client. This may negate the purpose of having a load balancer if the system is IO bound or the purpose of balancing is for fault tolerance (what happens if the box running the NFS server dies ?)
An alternative would be to run DRBD in dual primary mode (not trivial, but thats what its designed to do), which will mirror the block interface - ie a kind of network raid, where each half of the raid is available as the primary disk to 1 server, replicating to the other. (You will need to additionally run a filesystem which supports writes to 2 locations, from memory GFS2 does this)
There are various systems which can be set up, I assume, to look for filesystem changes - if you can hook them up to a script you can automate replication on change. I've never attempted this, but Lsyncd might be an option here (actually this might not be to hard, look at http://www.thisisnotsupported.com/lsyncd/)?
The "Cloud" has no real meaning - yes, you can call this system a cloud. (I believe that the term Cloud originates from techos drawing the Internet as a cloud in technical diagrams, and this was co-opted by marketing people - basically anything "on the Internet" can be called "in the cloud" - The closest I have ascertained to finding a meaning for the term is "stuff stored where the end users don't need to worry about it" - Certainly at least 1 company I provide services to see themselves as a "cloud services provider", and is doing something not a lot different to what you are talking about.