Had a interesting “discussion” the other day with someone who
wasis convinced that it is a best practice is to always deploy vCenter as a separate physical Windows server. One of the reasons for this, in his opinion, was that the vCenter Server could not be protected with vSphere High Availability (HA) since vCenter is required for vSphere HA to function. This is a common misunderstanding of how vSphere HA functions. vCenter is required to configure vSphere HA but once vSphere HA is configured vCenter is NOT required for vSphere HA to protect virtual machines in the cluster.
The ability to provide HA protection of the vCenter Server is one of benefit of deploying vCenter as a virtual machine. Virtualizing vCenter Server also allows you to use the vCenter Server Appliance (VCSA) which saves you a Windows license. vSphere HA can also be used to protect a vCenter Server deployed on a Windows Virtual Machine.
Here is a quick video I did in my lab environment running vSphere 6.5 (I have also tested this on 5.5 and 6.0) which demonstrates how vSphere HA will restart the PSC and vCenter Server in the event of a host failure.
I am running the VCSA in the lab with two VCSAs deployed, one as an external PSC and one a the vCenter Server. For the purpose of the demo I have vSphere DRS set to partially automated to keep VMs from moving around and I have both the VCSA running the PSC and the VCSA running the vCenter Server on the same host. The vSphere HA configuration is the default, except I have disabled admission control due to my resource constraints in the lab. When I power off the host running the VCSAs, they restart on the surviving host in my management cluster.
The little Python script I used in the demo to check if the servers were up or down can be found here: https://github.com/herseyc/PythonScripts/blob/master/upordown.py
Post any questions in the comments. Thanks!