The two classic design points for software high-availability are the master-slave model (where the backup server serves as a hot spare) and the active-active model, where two instances of the application actually communicate with each other during normal operation to replicate state.
By separating computation from storage, virtualization has since then introduce a new way form of availability (e.g. vSphere High Availability). In this model, a virtual machine can recover from a server failure by restarting execution on another compute node.
Describe how this this compares with the master-slave and active-active models. Emphasize both the benefits and the drawbacks of this third approach to software high-availability.