Using tags or custom fields for VM placement
-
Hi,
We are considering adopting XOA. We will have for example 10 hosts in one pool, 5 of Type A and 5 of Type B. Most VMs will run on any host. But some must run on a Type A host and some must run on a Type B host.
I was expecting to be able to use multiple custom fields or tags on a VM / template to define which host(s) the VM is placed upon. But I cannot see this functionality. Am I missing something?
(I see the docs about Plans and anti-affinity. Also that you can specify an affinity host. But this is not quite enough, and the Plans / anti-affinity are not yet available functionality.)
Many thanks,
Graham -
Hi,
You can use anti affinity with tags. For this, you need XOA Premium or to get the load balancing plugin
-
@olivierlambert Thanks for the reply,
We are running a premium trial at the moment.
Is it possible to add multiple hosts for the VM affinity host? (At the moment I only have simple setup with 2 servers and local storage. I can only select one affinity host.)
Thanks
Graham -
Affinity is only for one host. Also, affinity is just a preference on placement when you boot the VM, not after that. You must use the load balancer plugin to manage placement for running VMs.
-
@olivierlambert OK, then perhaps you could update the UI please, because it shows "host(s)", indicating that you can select more than one.
It would also be really helpful if the docs could show how to configure this, please.
I have multiple servers in one pool. There are two different types of servers, type A and type B. How can I guarantee that my special VMs with tags "type_a" ONLY run on the type A servers? I am not concerned with anti-affinity to the other VMs running on the host.
If we cannot do it, that is fine, we will find another solution. It is easy with VMware or CloudStack for example. However I would REALLY like to deploy XOA premium in our company. But this functionality is a showstopper for us.
Many thanks,
Graham -
I checked in XAPI, indeed it's one host only. For the UI, I'm afraid that's a component that will be hard to modify, but be assured we'll make it clear for our next UI revamp
About your request (enforce that VMs with specific tags running on specific hosts), it seems doable, like "tag affinity" or something, to monitor and enforce that during all the VM life (when running). On boot, it's not possible, but if it's quickly migrated afterward, is it OK? (you can also select to boot on a specific host manually, and then the load balancer will enforce it)
-
@graham_p Just write a simple script to check what host the VMs re running on and migrate them VMs as needed to the appropriate host. You can check the host its running on with a cron or similar scheduler as well as hard-code the migrtion options. There is no way to ensure what host a VM will start on in a pool, other than to some degree through WLB, and that still only will optimize according to its limited options.
-
@tjkreidl we have an XO plugin that is doing what WLB does I think it's not that hard to get an "tag affinity" feature, since we already have "anti affinity"
-
@olivierlambert @olivierlambert Yes, it is "tag affinity" that we need exactly in this case.
Agreed we could start the VM on one of the correct hosts, so that is good. The load balancer needs to keep it running on a host with the correct tags (and HA failover to the correct tagged hosts as well.)
@tjkreidl thanks for the information. We are trying to get away from the simple scripts which end up as a monster. But I do appreciate the suggestion.
To give you some more background examples of how we would use the tags:
-
CPU clock speed. We have some servers with much faster CPU that are used for running very long simulation jobs (over several days) on multiple cores in parallel. We would want to start the simulation VMs on any free host with the right clock tags.
-
Custom hardware. Some servers are fitted with custom PCIe cards and some VMs need to target the right hardware.
A lot of the config / VM startup will be done with automation. I will also have a look at the APIs as well.
Many thanks for your time.
Graham -
-
Thanks for the context. That would be wonderful if you can contact us via https://vates.tech/contact/ so we can have a phone call to understand most of the details, and talk about prioritizing this feature in our roadmap.
-
@graham_p Sounds like a configuration to do this would include the following:
- List of hosts in order of preference the VM should run on, with automatic fallback in order of priority.
- List of hosts to not start the VM on, no matter what
- Means of notifying sysadmins of changes (email?) or at least add additional logging information.
@olivierlambert , that would be great if those features could be incorporated!
-
The most straightforward path is to add an affinity mode in our existing load balancer plugin, with a "map" between tags and hosts. This way, the LB will enforce placement of VMs while they run.