Using tags or custom fields for VM placement
-
So placement on boot falls under XAPI realm: where to start a VM (eg you have affinity host). But when the VM is up, XAPI won't do anything else, and it's up to the XO LB plugin. If your problem is on boot, then use affinity host setting in XAPI (you can configure it from XO UI). If it's after boot, then we can discuss how to deal with it in XO LB
-
@olivierlambert The LB plugin is what I'm referring to. I'd like to keep XO on the master but currently there's no way to do that. As you mentioned, if I set boot affinity there's nothing preventing it from getting load balanced to another host.
-
Okay so to have the LB taking into account the XAPI host affinity if possible, right?
-
@olivierlambert I was thinking of tags like the anti-affinity ones but the XAPI host affinity would work as well. I'm not sure if it would work for the OP's use case, though.
-
For my original use case, "affinity" isn't quite strong enough. This VM "X" MUST run on a host with tag "Y". If no resource is available on a host with tag Y, don't start X.
-
So it's better to NOT have the VM running than running on another host, right?
-
@olivierlambert in my original case - yes.
For example, if the VM needs PCI passthrough to a specific device (or very fast network or fast CPU in one or two servers in the larger pool) it is absolutely better not to start the VM, because the VM is useless without this resource.
(Like a hard affinity to a tag - not a single host - which takes priority over general softer affinity settings).
(I do realise that this is complex and a big ask!)
-
It's already the case: you won't be able to boot a VM on another host with hard requirements (like local SR or PCI passthrough). It will simply not boot.
-
@olivierlambert Well we haven't actually got round to using PCI passthrough yet - but even forgetting that for the moment - say I have two servers in a larger pool with mega fast network and fast CPU. How can I guarantee that my special VM always runs on one of these servers? At the moment I believe that I can prefer that they run on one of them but cannot guarantee it.
-
The easiest way to guarantee it is to depend on a local resource (local SR or ISO).