I had a question about HA Admission Control today and as this is something that has come up multiple times I figured I would dedicate an article to it. This customer had enabled HA Admission Control and artificially wanted to control the amount of virtual machines a single host could run by manually specifying the slot size. (For more details on Admission Control slot sizes and how to configure these read the Deepdive page.) When they simulated a failure they were surprised that some host had more virtual machines running than should be allowed according to the configured slot size… This is however, contrary to their beliefs, by design. Let me copy/paste a paragraph from our book which talks about admission control.
What is HA Admission Control about? Why does HA contain this concept called Admission Control? The “Availability Guide” a.k.a HA bible states the following:
“vCenter Server uses admission control to ensure that sufficient resources are available in a cluster to provide failover protection and to ensure that virtual machine resource reservations are respected.”
Please read that quote again and especially the first two words. Indeed it is vCenter Server that is responsible for Admission Control. Although this might seem like a trivial fact it is important to understand that this means that Admission Control will not disallow HA initiated restarts. HA initiated restarts are done on a host level and not through vCenter. It is Admission Control’s task to ensure sufficient resources are available for HA to restart virtual machines, hence the reason HA does not take Admission Control in to account.
I hope this clears things up. I was pretty sure I have discussed this in multiple articles but as it comes up fairly often I figured dedicating and article to it would make it easier to find. I know it is not really clear in our documentation and I’ve requested this to be changed to reflect the actual behavior and avoid misunderstandings like these.
Thanks for post!
We had another issue with Adm.Contol. And also opened a ticket in VMware.
So, we have 3 hosts, AC is set to 33% for memory. We also used das.vmMemoryMinMB params set to 5000.
Current mem failover capacity – 59%
So we have 26% of available resources due to AC policy.
We initiated the failure of one host. All VMs were restarted on the rest two hosts. And here is an isssue – Current mem failover capacity retain 59%!! So AC talk to us – You can power on VMs yet! But we get an error of unsufficient resources when poweron.
But if we poweron VM directly from the host, it is succeeded and Current mem failover capacity changes to 54%.
So we can’t understand why AC show incorrect values…
Thanks a lot for answer
Duncan, this article seems a little confusing, and might not get at the heart of what people don’t understand about admission control. This actually almost reads as if Admission Control doesn’t do what it’s supposed to do, which is exactly contrary to what you’re saying. i.e. what is the point of admission control if it’s allowed to violate it’s own constraints? Does the quote mean that admission control does not use slot sizes? How about adding a little treatment of what Admission Control does do?
made a minor change, hope this clarifies things. Not sure how else I can explain it.
Admission Control does exactly what it needs to do, guarantee resources for HA initiated restarts. This happens on a vCenter level and the HA agent is not aware of it because it only cares about availability of the VM.
I this is one of those cases where the name of the feature is a source of misdirection.
Admission control behaves exactly like Duncan describes. However, when most people think of the word “admission”, they think of “preventing entry” or “gatekeeper”. If the feature were called “HA Reserve” or “HA Capacity KeepBack” then I think confusion could be lessened.
My other nomination for misnamed feature is EVC. Instead of Enhanced vMotion Compatibility I think it should be called “CPU Feature Masking”.
Let me try share my understanding. AC will only kick in if vcenter\cluster does not have enough resources to can allocate to the virtual machines that have been successfully started up thus no resource for the pending start up. Adding to the algorithm is the restart priority as configured in HA. vCenter\cluster will allow machines to be started up for as long as it can allocate resources to them. In the event of insufficient resources in the cluster AC will either allow the continual boot ups or deny them according to the configured AC settings.
Another thing is that when HA initiates the restarts it does not wait for vcenter (which controls the AC configured policy\settings) to acknowledge as successful or failed startup, it continues with the registered machines
Remember the beauty of VMware virtualization has the power of over commitment.
I understand what you are trying to say but don’t agree with how it is formulated.
When Admission Control is enabled it is always on! It will with every virtual machine check if enough free resources (slots or unreserved capacity) is available to allow the power on.
Not even sure what the second paragraph refers to. The HA Master or the Active Primary asks one of the other nodes to power on the VM. Irregardless of vCenter.
Apologies, I confused myself there for a while. The whole purpose of specifying reserved capacity is to ensure that surviving hosts will be able to bring up ALL PROTECTED vms.
Admission Control guards against the health state of the HA cluster in that it when adding machines to the cluster they can also be protected successfully.
So when the failure occurs HA is already ready to bring up the PROTECTED machines. This is why AC would not get engaged or consulted.
Am I corrected?
Interesting sometimes you need to read stuff like this again in case you forget this valuable tool
One thing I’ve found that when having 2 hosts and defining VM Affinity Rules and testing maintenance mode I never get the server on maintenance mode and to be able to be able to have VM Affinity rules (2 VMs should be on different hosts – only 2 hosts in this cluster) so I set should rules but when putting one of the servers in maintenance mode is not possible so I have to disable Admission Control….
Duncan,
The following VM article doesn’t concur with what you are saying please see link.
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1007006
In general, using VMware HA strict admission control ensures that you cannot power on a virtual machine if doing so would violate availability constraints (in other words, cause the current failover level to become less than the configured failover level). When such an attempt is made, a message informs you that the virtual machine cannot be powered on.
Thanks
Irfan
@Irfan: Did you read my post? HA Admission Control does NOT stop HA fail-overs. The KB article you are referring to describes how you cannot power on new VMs through vCenter. Completely different concept.
Seem to have misread the article!
Is the following correct?
So when admission control is set it will stop newly provisioned VM’s from joining the cluster if they reach the amount of resource that’s reserved. However it wont affect current running VM’s from migrating to a new host as they are already included in the total amount of resource.