Le moteur de placement VMware Cloud Director détermine sur quelles ressources, y compris les pools de ressources, les banques de données et les réseaux ou les pools de réseaux, seront placées les machines virtuelles dans un vApp. En fonction des exigences de chaque machine virtuelle, le moteur prend la décision de placement de manière indépendante pour chaque machine virtuelle dans un vApp.

Le moteur de placement s'exécute dans les scénarios suivants.
Note : VMware Cloud Director place les machines virtuelles dans un vApp de manière indépendante en fonction des exigences de chaque VM.
  • Lorsque vous créez une machine virtuelle, le moteur de placement détermine sur quels pool de ressources, banque de données et pool de réseaux elle sera placée.
  • Lorsque vous démarrez une machine virtuelle, si elle ne parvient pas à se mettre sous tension, VMware Cloud Director peut déplacer de manière sélective la machine virtuelle vers un autre pool de ressources, une autre banque de données ou un autre pool de réseaux.
  • Lorsque vous modifiez une machine virtuelle en modifiant ses configurations de banque de données, de ressources ou de réseau, VMware Cloud Director peut déplacer la machine virtuelle vers une autre banque de données et vers un autre pool de ressources qui prennent en charge ses nouveaux paramètres. VMware Cloud Director déplace une machine virtuelle uniquement lorsque les ressources actuelles ne peuvent pas répondre aux nouvelles exigences.
  • Lorsque vous migrez des machines virtuelles vers des pools de ressources différents.
  • Lorsqu'un centre de données virtuel (VDC, Virtual Data Center) d'organisation détecte des machines virtuelles créées dans un pool de ressources vCenter sur lequel repose le VDC, et que le système crée un vApp simplifié pour contenir chaque machine virtuelle détectée.
Le moteur de placement utilise les critères suivants pour sélectionner des pools de ressources candidats pour une machine virtuelle.
  • Capacité de processeur
  • Capacité de mémoire
  • Nombre de processeurs virtuels
  • Version matérielle prise en charge par l'hôte et autorisée par le VDC fournisseur
  • Règles d'affinité

Le moteur de placement filtre les pools de ressources désactivés de la liste de candidats. Si possible, VMware Cloud Director place les machines virtuelles sur le même cluster d'hôtes que les autres machines virtuelles dans le VDC d'organisation.

Important : Les règles d'affinité machine virtuelle/hôte doivent comporter une condition selon laquelle la règle must run sur les hôtes du groupe. Les règles d'anti-affinité VM-hôte doivent comporter une condition selon laquelle la règle must not run sur les hôtes du groupe.
Le moteur de placement utilise les critères suivants pour sélectionner des banques de données candidates pour les machines virtuelles.
  • Capacité de stockage et seuils
  • Stratégies de stockage
  • Exigences d'affinité entre les machines virtuelles
  • Si les IOPS sont activées, capacité d'IOPS et IOPS de disques de VM
Il existe deux seuils de banque de données dans VMware Cloud Director.
  • Seuil rouge : quantité d'espace libre sur une banque de données au-dessous de laquelle VMware Cloud Director filtre la banque de données lors du positionnement d'une entité telle qu'une machine virtuelle, un modèle ou un disque.

    Lorsqu'une banque de données atteint son seuil rouge, le moteur de positionnement des charges de travail cesse de placer de nouvelles machines virtuelles sur la banque de données, sauf lors de l'importation de machines virtuelles à partir du système vCenter. En cas d'importation de machine virtuelle, si la machine virtuelle vCenter est déjà présente sur la banque de données de seuil rouge, le moteur de positionnement préfère la banque de données existante.

    Le moteur de positionnement des charges de travail utilise le seuil rouge pour tous les workflows. Lorsque vous effectuez une demande de nouveau positionnement, le moteur de positionnement filtre d'abord les banques de données ou les espaces de stockage qui ont dépassé le seuil rouge. Lors d'une demande de positionnement pour une entité existante, si les disques résident sur les banques de données qui franchissent le seuil rouge, VMware Cloud Director déplace les disques vers d'autres banques de données disponibles. Ensuite, le moteur sélectionne une banque de données parmi les banques de données ou les espaces de stockage restants, soit via la logique de sélection de VMware Cloud Director, soit à partir des recommandations vSphere Storage DRS.

  • Seuil jaune : quantité d'espace libre sur la banque de données, en dessous de laquelle VMware Cloud Director filtre la banque de données lors du positionnement des machines virtuelles fantômes à partir desquelles VMware Cloud Director crée des machines virtuelles à provisionnement rapide. Pour plus d'informations sur les machines virtuelles fantômes, reportez-vous à la section Provisionnement rapide des machines virtuelles.

    Le seuil jaune ne s'applique pas aux clones liés que VMware Cloud Director utilise pour le provisionnement rapide des machines virtuelles. Lorsque le moteur de positionnement sélectionne une banque de données pour un clone lié, si la banque de données sélectionnée ne dispose pas d'une machine virtuelle fantôme, VMware Cloud Director crée une machine virtuelle fantôme sur la banque de données. Dans ce cas, le seuil ne s'applique pas à la machine virtuelle fantôme.

    Le seuil jaune s'applique uniquement à la tâche périodique en arrière-plan créant des machines virtuelles fantômes. S'il est activé, la tâche s'exécute toutes les 24 heures et utilise la création immédiate de machines virtuelles sur chaque banque de données pour une paire de hub et de stratégie de stockage donnée. Pour activer la tâche de provisionnement immédiat des machines virtuelles fantômes, vous devez définir la propriété suivante sur true.
    valc.catalog.fastProvisioning=true
    Note : La tâche périodique en arrière-plan crée des machines virtuelles fantômes sur toutes les banques de données pour tous les modèles. La tâche augmente la consommation de stockage même lorsque vous n'utilisez pas les banques de données ou les machines virtuelles fantômes.

Dans la plupart des cas, le moteur de placement filtre les banques de données de seuil désactivées et rouges de la liste des candidats. Le moteur ne filtre pas ces banques de données lorsque vous importez une machine virtuelle à partir du système vCenter.

Lors de la mise en œuvre de la logique de seuil, VMware Cloud Director n'évalue pas les exigences du sujet de positionnement actuel. Pour que le moteur de positionnement des charges de travail place un sujet sur une banque de données, l'espace disponible en octets doit être supérieur au seuil en octets. Par exemple, pour une banque de données d'une capacité disponible de 5 Go avec un seuil rouge défini sur 4 Go, le moteur de positionnement peut placer une machine virtuelle avec une configuration requise de 2 Go. Si la création de la machine virtuelle dépasse le seuil, le moteur de positionnement filtre la banque de données pour d'autres positionnements.

Le moteur de placement utilise le nom de réseau pour sélectionner des pools de réseaux candidats pour un vApp et ses machines virtuelles.

Une fois que le moteur de placement a sélectionné un ensemble de ressources candidates, il classe les ressources et choisit le meilleur emplacement pour chaque machine virtuelle en fonction de la configuration du processeur, de la RAM virtuelle et du stockage de chaque machine virtuelle.

Lors du classement des ressources, le moteur de placement examine l'utilisation actuelle des ressources et l'estimation de l'utilisation future des ressources. L'estimation de l'utilisation future est calculée en fonction des machines virtuelles hors tension actuellement placées sur un pool de ressources donné et de leur utilisation attendue une fois qu'elles sont sous tension. Pour le CPU et la mémoire, le moteur de placement prend en compte la capacité non réservée actuelle, l'utilisation maximale et l'estimation future de la capacité non réservée. Pour le stockage, le moteur tient compte de la capacité provisionnée agrégée fournie par le cluster auquel chaque pool de ressources appartient. Le moteur de placement prend ensuite en compte les mesures pondérées de l'adéquation actuelle et future de chaque pool de ressources.

Lorsqu'un déplacement est nécessaire, le moteur de positionnement favorise les pools de ressources ayant la capacité la moins réservée en termes de CPU, de mémoire et de stockage. Il accorde également une préférence moindre aux clusters jaunes pour que les clusters jaunes ne soient sélectionnés que si aucun cluster d'intégrité répondant aux critères de placement n'est disponible. Lors de l'importation d'une machine virtuelle à partir du système vCenter, si le placement de la machine virtuelle est satisfaisant, pour réduire les déplacements, le moteur ignore les seuils.

Lorsque vous mettez sous tension une machine virtuelle, VMware Cloud Director essaie de la mettre sous tension à son emplacement actuel. Si le système vCenter signale une erreur avec le CPU de l'hôte et la capacité de mémoire, VMware Cloud Director essaie le pool de ressources deux fois avant de tenter de déplacer la machine virtuelle vers les autres pools de ressources compatibles sur le VDC d'organisation. Lors de la réexécution du moteur de placement pour essayer de trouver un pool de ressources compatible, VMware Cloud Director exclut les pools de ressources précédemment tentés et ayant abouti à un échec. Si aucun pool de ressources approprié n'est connecté à la banque de données sur laquelle se trouvent les VMDK, le déplacement d'une machine virtuelle vers un autre pool de ressources peut entraîner la migration des VMDK de la machine virtuelle vers une autre banque de données. Si le placement de la machine virtuelle échoue dans tous les emplacements qui répondent aux exigences de la machine virtuelle, VMware Cloud Director renvoie un message d'erreur indiquant que le placement n'est pas possible. S'il existe une affinité avec la banque de données actuelle et que cette dernière n'est pas disponible, le moteur de placement renvoie une erreur indiquant que le placement n'est pas possible. Il s'agit d'un état normal du système lorsqu'il fonctionne presque à pleine capacité et que la solution proposée ne répond pas à toutes les exigences à ce moment donné. Pour corriger l'erreur, vous pouvez ajouter ou libérer des ressources et effectuer une nouvelle tentative. Lorsqu'aucune banque de données spécifique n'est requise, le moteur de placement sélectionne une banque de données dans le cluster d'hôtes ou le pool de ressources candidat qui répond aux autres exigences, telles que la stratégie de stockage, la capacité de stockage et la capacité d'IOPS.

En cas de déploiements simultanés lorsqu'un pool de ressources est proche de sa capacité maximale, la validation de celui-ci peut réussir même s'il manque de ressources pour prendre en charge la machine virtuelle. Dans de telles situations, la machine virtuelle ne peut pas se mettre sous tension. Si la mise sous tension d'une machine virtuelle échoue dans cette situation et que le VDC repose sur plusieurs pools de ressources, redémarrez l'opération de mise sous tension pour inviter VMware Cloud Director à migrer la machine virtuelle vers un autre pool de ressources.

Lorsqu'un cluster auquel appartient un pool de ressources est proche de sa capacité maximale, une machine virtuelle sur ce pool de ressources risque de ne pas pouvoir se mettre sous tension si aucun hôte individuel n'a la capacité de mettre la machine virtuelle sous tension. Cela se produit en raison de la fragmentation de capacité au niveau du cluster. Dans de telles situations, un administrateur système doit migrer quelques machines virtuelles en dehors du cluster pour que celui-ci conserve une capacité disponible suffisante.

Algorithme du moteur de placement de machine virtuelle

L'algorithme de placement sélectionne un cluster d'hôtes dans la liste des clusters d'hôtes pour lesquels des profils de stockage requis sont disponibles et qui répondent aux règles existantes d'affinité ou d'anti-affinité VM-VM ou VM-hôte. VMware Cloud Director calcule la solution de placement via différents scores. Pour modifier le comportement du moteur, vous pouvez utiliser l'outil de gestion des cellules pour modifier les paramètres configurables qui commencent par le symbole de soulignement (_).
  1. Pour chaque cluster d'hôtes, le moteur de positionnement des charges de travail calcule un capacityScore, un futureCapacityScore et un reservationScore. Le moteur de placement calcule chaque score séparément pour le CPU, la mémoire et le stockage.
    capacityScore: (not available in some cases ) 
    
    CPU = (cpuUnreservedCapacityMHz - (cupBurstMHz * _cpuBurstRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memBurstMB * _memoryBurstRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    futureCapacityScore (not available in some cases) 
    
    CPU = (cpuUnreservedCapacityMHz - (cpuUndeployedReservationMHz * _futureDeployRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memUndeployedReservationMB * _futureDeployRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    reservationScore: (used for capacityScore and futureCapacityScore when those scores are unavailable) 
    
    CPU = cpuUnreservedCapacityMHz / cpuRequirementMHz 
    Memory = memoryUnreservedCapacityMB / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
  2. Pour chaque cluster d'hôtes, le moteur de placement calcule un weightedCapacityScore pour le CPU, la mémoire et le stockage.
    weightedCapacityScore = capacityScore * _currentScoreWeight + futureCapacityScore * (1 - _currentScoreWeight)

    Chaque weightedCapacityScore est un rapport allant de 0 à 1 pour lequel les valeurs les plus élevées représentent une plus grande disponibilité des ressources. Les valeurs de weightedCapacityScore peuvent être comparées entre différents types de ressources (par exemple, CPU, mémoire et stockage), car elles représentent une mesure de disponibilité sans unité. Un weightedCapacityScore plus élevé signifie une plus grande disponibilité de la ressource correspondante dans le cluster d'hôtes.

  3. Le moteur de placement vérifie qu'il y a suffisamment de ressources pour le CPU, la mémoire et le stockage.
    totalAvailable * _[memory|cpu|storage]headRoom < free / UnreservedCapacity
  4. Le moteur de placement trie la liste des clusters d'hôtes selon le weightedCapacityScore afin que le cluster d'hôtes le moins limité soit le premier et que le plus limité soit le dernier.
  5. Le moteur de placement traite chaque cluster d'hôtes dans la liste.
    • S'il faut éviter le cluster d'hôtes, par exemple en raison d'une règle d'anti-affinité, le moteur l'ajoute à avoidHubList.
    • Si le cluster d'hôtes ne dispose pas de ressources supplémentaires suffisantes, le moteur l'ajoute à noHeadRoomHubList.
    • Si le cluster d'hôtes est préféré (par exemple, en raison d'une règle d'affinité forte ou du cluster d'hôtes actuel), le moteur l'ajoute à preferredHubList.
    • Tous les autres clusters d'hôtes sont placés dans la liste acceptableHubList.

    Dans chaque liste, le cluster d'hôtes préféré est le premier et le cluster d'hôtes le moins préféré est le dernier.

  6. Le moteur intègre les quatre listes.

    preferredHubList + acceptableHubList + noHeadRoomHubList + avoidHubList

    Le moteur trie la liste de résultats, du cluster d'hôtes préféré au cluster d'hôtes le moins préféré.

  7. Il choisit le cluster d'hôtes principal dans la liste et le définit en tant que hub cible.

Paramètres ajustables

Pour influencer les différents seuils d'algorithme de sélection, vous pouvez personnaliser plusieurs paramètres. Cependant, seuls les administrateurs du fournisseur de services disposant de connaissances avancées sur les opérations de VMware Cloud Director peuvent tenter de modifier les valeurs par défaut de ces paramètres, car cela peut entraîner des résultats indésirables et inattendus. Testez d'abord les modifications apportées aux paramètres dans un environnement hors production.

Vous pouvez personnaliser les paramètres suivants à l'aide de l'outil de gestion des cellules.

Paramètre Description
vcloud.placement.ranking.currentScoreWeight Importance relative du composant actuel du score du cluster hôte. La valeur doit être comprise dans l'intervalle [0.1]. Avec une valeur de 0, le moteur classe le cluster d'hôtes uniquement en fonction du score futur. Avec une valeur de 1, le moteur classe le cluster d'hôtes uniquement en fonction du score actuel. La valeur par défaut est 0,5.

vcloud.placement.ranking.memoryBurstRatio

vcloud.placement.ranking.cpuBurstRatio

Pourcentage d'allocation au-delà de la réservation d'une machine virtuelle que le moteur de classement utilise pour estimer la charge du cluster. La valeur est comprise entre 0 et 1. 0 indique qu'une machine virtuelle utilise uniquement sa réservation. 1 indique que la machine virtuelle est entièrement occupée. La valeur par défaut est 0,67.
vcloud.placement.ranking.futureDeployRatio Pourcentage de machines virtuelles sur ce cluster d'hôtes qui doivent être déployées et qui consommeront de la mémoire et du CPU. La valeur est comprise entre 0 et 1. La valeur par défaut est 0,5.

vcloud.placement.ranking.memoryHeadRoom

vcloud.placement.ranking.cpuHeadRoom

vcloud.placement.ranking.storageHeadRoom

Ces paramètres permettent aux ressources supplémentaires de croître sur un cluster d'hôtes. Le moteur définit la marge sous la forme d'un rapport de ressources non réservées. Par exemple, si la valeur de vcloud.placement.ranking.memoryHeadRoom est 0,2, après qu'un cluster d'hôtes dispose de moins de 20 % de ressources disponibles, le moteur le considère comme un cluster disposant d'une marge de mémoire insuffisante et le classe à une position inférieure aux autres clusters d'hôtes. La valeur doit être comprise entre 0 et 1. La valeur par défaut est 0,2.

Exemple :
./cell-management-tool manage-config -n vcloud.placement.ranking.memoryHeadRoom -v 0.3 

Filtres de banque de données et algorithme de placement de stockage

Les filtres de banque de données et l'algorithme de placement de stockage de VMware Cloud Director déterminent le placement des fichiers et des disques de machine virtuelle sur les ressources de stockage sous-jacentes. Les conteneurs de stockage représentent les ressources de stockage, soit une banque de données, soit un cluster de banques de données.

Les filtres de banque de données font partie de la chaîne de filtre de stockage qui permet de réduire les conteneurs de stockage éligibles en fonction des exigences de l'objet de placement. Les filtres utilisent les conteneurs de stockage disponibles dans un VDC fournisseur comme liste d'entrée. Les filtres s'exécutent dans une séquence prédéfinie et chaque filtre transmet la liste affinée des conteneurs de stockage au filtre suivant. VMware Cloud Director ignore les filtres inapplicables. Par exemple, pour les machines virtuelles sans paramètre IOPS, VMware Cloud Director n'exécute pas le filtre d'IOPS.

Tableau 1. Filtres de banque de données
Filtrer Description
AffinityDatastoreFilter Filtre les conteneurs de stockage en fonction des règles d'affinité et d'anti-affinity définies pour les banques de données. VMware Cloud Director définit des règles d'affinité de banque de données dans des cas tels que l'importation de machines virtuelles à partir de l'instance de vCenter, la migration de locataires etc.
AlreadyOnValidDatastoreFilter Si un objet de placement est déjà placé sur une banque de données valide, le filtre rejette tous les autres conteneurs de stockage et conserve uniquement la banque de données valide.
BadHostsFilter Exclut les conteneurs de stockage qui ne disposent pas d'au moins un hôte connecté, opérationnel et sous tension. Exclut les conteneurs de stockage supprimés de l'inventaire.
DatastoreClusterFilter

Exclut tous les clusters de banques de données et les banques de données qui font partie d'un cluster de banques de données. Ce filtre est utilisé lorsque l'objet du placement ne requiert pas de clusters de banques de données. Par exemple, si les disques nommés partagés ne sont pas autorisés sur les clusters de banques de données, en fonction de config: vcloud.disk.shared.allowOnSpod.

DatastoreFsFilter Filtre tous les conteneurs de stockage faisant partie du système de fichiers spécifié. Par exemple, si les disques nommés partagés ne sont pas autorisés sur les banques de données NFS, en fonction de config: vcloud.disk.shared.allowOnNfs, l'algorithme de placement ajoute ce filtre à la chaîne.
DisabledDatastoreFilter Exclut par filtrage tous les conteneurs de stockage désactivés de la liste d'entrée.
IopsCapacityDatastoreFilter

Exclut toutes les banques de données qui ne disposent pas d'une capacité d'IOPS suffisante pour la machine virtuelle.

Le filtre s'exécute si les conditions préalables suivantes sont remplies.

  • La machine virtuelle dispose d'un paramètre IOPS.
  • Il n'y a aucun espace de stockage.
  • Toutes les banques de données ont iopsCapacities défini.
  • La machine virtuelle a activé la capacité VCD/IOPS de la stratégie de stockage et l'option Affecter le positionnement des paramètres de stratégie de stockage est activée.
LeastProvisionedFilter Sélectionne le conteneur de stockage le moins provisionné.
LinkedCloneFilter Exclut toutes les banques de données qui ne disposent pas d'une machine virtuelle source ou de machines virtuelles fantômes correspondantes sur une banque de données. Exclut les banques de données dont la longueur de chaîne maximale autorisée pour les disques virtuels des machines virtuelles est dépassée.
MinFreeSpaceFilter Exclut les conteneurs de stockage qui ne contiennent pas suffisamment d'espace libre pour l'objet de placement. Pour les espaces de stockage, l'espace libre maximal des banques de données enfants détermine l'espace libre et non l'espace libre total des banques de données enfants ou l'espace libre de l'espace de stockage. Par exemple, un espace de stockage dispose de deux banques de données avec 3 Go et 5 Go libres respectivement. VMware Cloud Director considère que l'espace libre de l'espace de stockage est de 5 Go. S'il n'y a aucun conteneur de ce type, le filtre conserve le conteneur avec la plus grande quantité d'espace libre.
MostFreeSpaceFilter Sélectionne le conteneur de stockage disposant de la plus grande quantité d'espace libre.
StorageClassFilter Exclut les conteneurs de stockage ou les espaces de stockage qui ne correspondent pas à la stratégie de stockage de l'objet de placement, définie dans ses conditions requises.
ThresholdFilter Filtre les conteneurs de stockage qui atteignent le seuil spécifié de capacité disponible. Des seuils jaune et rouge existent dans VMware Cloud Director. Reportez-vous à la section Configurer des seuils d'espace disque insuffisant pour un conteneur de stockage de centre de données virtuel fournisseur dans VMware Cloud Director.
VirtualMachineFilter Exclut tous les conteneurs de stockage auxquels la VM spécifiée n'a pas accès.

VMware Cloud Director transmet la liste finale des conteneurs de stockage filtrés à l'algorithme de placement de stockage qui tente de placer l'objet de placement dans les conteneurs de stockage sélectionnés.

Pour placer l'ensemble des objets de placement dans la meilleure banque de données possible pour eux, l'algorithme de placement de stockage utilise des critères configurables et la liste des banques de données valides. L' algorithme de placement de stockage utilise le workflow suivant.
  1. Reçoit du moteur de placement un ensemble d'objets de placement et un pool de ressources cible sur lesquels se repose le VDC fournisseur. Il y a deux possibilités.

    • En général, l'algorithme reçoit un fichier de base de machine virtuelle contenant des métadonnées, des informations de configuration et un ensemble de disques pour un placement standard et non rapide de machine virtuelle.
    • L'algorithme peut utiliser une approche de disque agrégé pour les disques nommés et les machines virtuelles provisionnées rapidement. En d'autres termes, pour chaque machine virtuelle provisionnée rapidement, l'algorithme reçoit une demande pour la machine virtuelle et tous ses disques.
  2. Reçoit l'ensemble des conteneurs de stockage éligibles pour ce hub qui inclut à la fois des banques de données et des espaces de stockage.
  3. Pour exclure les conteneurs de stockage qui ne peuvent pas contenir un objet, pour chaque objet de placement, l'algorithme passe par la chaîne statique des filtres de placement. Par exemple, si un disque de machine virtuelle ne peut pas être contenu sur une banque de données, l'algorithme marque la banque de données comme non éligible pour le disque de la machine virtuelle.
  4. Classe les conteneurs de stockage pour chaque objet dans l'ordre de leur préférence en fonction des considérations suivantes.
    1. si le conteneur est un espace de stockage ou une banque de données
    2. Combien d'autres objets de placement contiennent l'espace de stockage en tant que conteneur valide
    3. Taille du conteneur
  5. Si l'un des conteneurs est un espace de stockage, pour limiter les espaces de stockage à des banques de données, l'algorithme l'exécute l'algorithme d'appel vSphere Storage DRS.
  6. Après avoir placé les objets de placement et leur ensemble de banques de données valides, détermine où l'objet du placement doit résider.
  7. Renvoie un résultat de placement final qui détermine les banques de données sur lesquelles chaque objet de placement doit résider ou renvoie une erreur indiquant que l'algorithme VMware Cloud Director ne parvient pas à trouver un placement approprié.