One of the big new features that was introduced in vSphere 6.5, exclusively for vCenter Server Appliance (VCSA), is the vCenter Server High Availability (VCHA) capablilty. Feidhlim O'Leary has an excllent blog post covering what VCHA provides as well as a couple of demo videos on how it works, definitely worth checking out! After upgrading one of my home lab enviornments to vSphere 6.5, I wanted to try out this feature from an educational standpoint and specifically around using new VCHA vSphere APIs.
Like most vSphere Home Labbers, I have limited hardware and if you try to enable VCHA with only a single ESXi host, you will see the following error:
This operation would violate a virtual machine affinity/anti-affinity rule.
As you might expect, VCHA will automatically provision affinity rules to ensure that the active, passive and witness node are not all running on the same physical ESXi host. For a production deployment this is completely valid but for lab and testing purposes, this might be a tough requirement to satisfy. I was hoping there might be an override option and searching for the word "ha" in the vCenter Server Advanced Settings lead me to an interesting property called config.vpxd.vcha.drsAntiAffinity. This discovery was purely by luck and I had noticed it was set to true by default, so I decided to change it to false and see what would happen.
To my surprise, changing this setting worked and I was able to successfully enable VCHA in my lab with all three nodes just running on a single ESXi host 😀
An alternative solution would be to deploy a 3-Node Nested ESXi cluster which would not require this modification, but my physical ESXi host was limited on memory, only 16GB and would have been a lot slower.