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 Server 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.

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
  • 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

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 Server.

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 placement favorise les pools de ressources avec 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 Server, 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 Server 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 entre 0 et 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