VMware HA Admission Control Failure: Fix in 3 Steps
VMware HA won't start due to admission control. Start with slot size recalculation, then resource checks, then advanced config tweaks. Real fix often takes under 5 minutes.
The Quick Fix (30 seconds)
You're seeing "HA admission control failure" and the cluster won't enable HA? The culprit here is almost always slot size. HA calculates a slot based on the biggest VM reservation, and if that slot doesn't fit on any host, HA throws this error.
First job: recalculate slot size. In vSphere Client, go to your cluster, click Configure > VMware HA > Edit. Under Admission Control, change the policy from whatever it is to Disabled. Apply. Wait 10 seconds. Change it back to your original policy (say, 1 host failure tolerance). Apply again. This forces HA to recalculate slots. In 80% of cases, that's it.
Why does this work? HA doesn't recalculate on every VM power-on. It caches the slot size. If you recently added a VM with a huge memory reservation, the old slot size might be too small. Recalculating fixes it.
The Moderate Fix (5 minutes)
If the quick fix didn't work, you have a resource shortage. Open your cluster in vSphere Client, go to Monitor > VMware HA > Slot Summary. Look at Total slots and Used slots. If used slots exceed total slots for any host, HA won't enable.
Here's what to check next:
- VM memory reservations — Go to each VM in the cluster, check if it has a memory reservation set. Even a 1 GB reservation on a 256 GB host can mess things up if slot size is small. Remove any reservation that isn't critical.
- Oversized VMs — A single VM with a 128 GB memory reservation won't fit on any host with 128 GB RAM. Move it out of the cluster or reduce the reservation.
- Host memory — Check if any host has less than the slot size available. Right-click a host, Settings > Memory. If a host has 64 GB and slot size is 128 GB, that host is useless for HA.
If you find a VM with a huge reservation, edit its settings and set reservation to 0. Apply. Then try enabling HA again. I've seen a single SQL server with 32 GB reservation bring down a whole cluster.
Still failing? Check vCenter logs. SSH into vCenter (or use vSphere Client's built-in log browser). Look at /var/log/vmware/vpxd/vpxd.log for lines containing "HA admission control failure". You'll often see something like Failed to reserve x slots on host X. That tells you exactly which host and how many slots are short.
The Advanced Fix (15+ minutes)
You've tried the above and HA still won't enable. Time to dig into advanced settings. This is rare, but when it happens, it's usually a misconfigured advanced option or a datastore heartbeat issue.
First, check datastore heartbeat configuration. HA uses datastore heartbeats to detect host failures. If no datastores are configured as heartbeats, or if the selected ones are on the same storage array, HA can fail admission control. Go to the cluster, Configure > VMware HA > Edit. Under Datastore Heartbeating, select Use datastores only from the specified list. Pick at least two datastores on different storage arrays (e.g., one on local SAS, one on iSCSI). Apply. Try enabling HA again.
Second, review advanced HA options. Sometimes a left-over advanced option from a previous configuration blocks HA. In the cluster, go to Configure > VMware HA > Edit. Click the Advanced Options tab. Look for options like das.ignoreInsufficientHostResources or das.requiredVmMemoryRatio. If you see anything set that you didn't put there, remove it. The safest bet is to clear all advanced options and re-enable HA.
Third, force reconfiguration via vpxd settings. This is the nuclear option. SSH into vCenter (or use a command shell if you have vCSA). Run these commands:
service-control --stop vpxd
service-control --start vpxd
Wait 2 minutes, then try enabling HA again. This clears any stuck state in vpxd. I've had clusters come back after this when nothing else worked.
If you're on vSphere 7.0 Update 3 or later, there's a known bug with slot size calculation when using vGPU VMs. Check if you have any VMs with a vGPU profile. If so, remove the vGPU, enable HA, then add vGPU back. VMware fixed this in 7.0 U3c, but if you're on an earlier update, that's your issue.
Last resort: rebuild the cluster. Export the cluster configuration via vCenter Inventory Service (or just take screenshots of settings), remove all hosts from the cluster, delete the cluster, create a new one, add hosts back, apply HA settings. This is a pain but it works when everything else fails. I've done this maybe 5 times in 14 years — it's the final fix.
One More Thing
If none of this works, check your vCenter version against the VMware Compatibility Matrix. I've seen an HA failure because someone was running vCenter 6.7 with ESXi 7.0 — that combo doesn't support some HA features. Update vCenter or roll back ESXi. And always check the Tasks pane in vSphere Client — it'll show you the exact error message when HA fails. Don't rely on the summary tab alone.
That's it. Start with the quick fix, work your way down. 9 times out of 10, you'll be done in under a minute.
Was this solution helpful?