Don't want to get off topic, but we have our SQL running on a VM and would like to have another running SQL ready to go in case of emergency. I have another server running SQL, but they aren't in synch. I've looked into log shipping, but saw a little flak on that topic, also. Any preferences between clustering and log shipping?
To do clustering, the server has to be setup to be clustered. SQL has to be installed as a cluster and there is a lot of work to do there. There's more than just two solutions here though.
availability groups, see clustering. http://www.brentozar.com/archive/2010/11/sql-server-denali-database-mirroring-rocks/
Clustering (two servers, shared storage, requires quorum, semi-complicated setup, few other things you should read into first)
Mirroring (two servers, independent storage, requires a third witness instance if you want automatic failovers, simple setup, async and sync replication, should still read into more)
VM, If I'm not mistaken, you can have V-Sphere setup so that a VM is being mirrored on another host to be spun up in case something breaks. I'm not a VM person.
Replication (snapshot subscription based) requires a bit of setup, timed replication. good if you have daily static data. not a normal scenario, good for some reporting.
log shipping not difficult to setup, you can even set in delays on the shipping if you want to make sure you have a secondary site to role back. still takes two servers.
Please correct me people if I have something wrong. I know I left a lot out here. As always, there's more than one way to skin a cat.
I personally like Mirroring. but that's just me.