Given that LiveMotion, etc give you high availability in the event of a server failure, why would you put a SQL cluster on VMs?
This question comes up every once and a while when designing a virtualization solution for someone. When building a virtualization solution (either Hyper-V or VMware) you get some great free HA solutions included when you build a cluster so why would you want to go through the pain of creating a Windows cluster under an already clustered solution?
Creating a Windows cluster under the hypervisor gives you some additional protection. If you only have the host HA solution while you can live migration or vMotion from one host to another easily you aren’t protected from a guest OS failure or from a host failure (sort of). If the host fails, yes the platform will restart the VM on another host pretty quickly, but pretty quickly may not be good enough for you. You may need it to restart within seconds of a host failure.
What happens on patch Tuesday when all the security patches are rolled out? The Windows OS within the guest still needs to be rebooted after the patching and the HA solutions of the host won’t do anything for you here.
However if you need to ensure that very high up time of a SQL Server database (or any other cluster-able service) then building a Windows Cluster under the hypervisor of choice is a viable solution for you to use. Just make sure that you use the rules engine of the host to ensure that both nodes of the cluster are never running on the same host server, because if they are then the whole point of the cluster will be lost in the event of a host failure.
P.S. This post and the next bunch of posts are all questions and answers which I have received from online sessions at either SQL PASS Virtual Chapters or the 24 Hours of PASS virtual event.