Il motore di posizionamento di VMware Cloud Director determina in quali risorse, compresi pool di risorse, archivi dati e reti o pool di reti posizionare le macchine virtuali di una vApp. In base ai requisiti di ogni macchina virtuale, il motore decide il posizionamento in modo indipendente per ogni macchina virtuale in una vApp.

Il motore di posizionamento viene eseguito nelle seguenti situazioni.
Nota: VMware Cloud Director posiziona le macchine virtuali all'interno di una vApp in modo indipendente in base ai requisiti di ciascuna macchina virtuale.
  • Quando si crea una macchina virtuale, il motore di posizionamento determina in quale pool di risorse, archivio dati e pool di reti posizionarla.
  • Quando si avvia una macchina virtuale, se la macchina virtuale non viene attivata, VMware Cloud Director può spostare selettivamente la macchina virtuale in un altro pool di risorse, archivio dati o pool di reti.
  • Quando si modifica una macchina virtuale modificandone le configurazioni di archivio dati, risorse o rete, VMware Cloud Director potrebbe spostare la macchina virtuale in un archivio dati e un pool di risorse diversi che supportino le nuove impostazioni della macchina virtuale. VMware Cloud Director sposta una macchina virtuale solo quando le risorse correnti non sono in grado di supportare i nuovi requisiti.
  • Quando si esegue la migrazione di macchine virtuali in pool di risorse diversi.
  • Quando un data center virtuale (VDC) dell'organizzazione rileva macchine virtuali create in un pool di risorse di vCenter Server qualsiasi che supporta il VDC e il sistema crea una vApp semplificata per contenere ciascuna macchina virtuale rilevata.
Il motore di posizionamento utilizza i seguenti criteri per selezionare i pool di risorse candidati per una macchina virtuale.
  • Capacità della CPU
  • Capacità della memoria
  • Numero di CPU virtuali
  • Versione hardware supportata dall'host e consentita dal VDC del provider
  • Regole di affinità

Il motore di posizionamento filtra i pool di risorse disattivati dall'elenco dei candidati. Quando possibile, VMware Cloud Director posiziona le macchine virtuali nello stesso cluster host delle altre macchine virtuali nel VDC dell'organizzazione.

Il motore di posizionamento utilizza i seguenti criteri per selezionare gli archivi dati candidati per le macchine virtuali.
  • Capacità di storage
  • Criteri di storage
  • Requisiti di affinità tra macchine virtuali
  • Se IOPS è attivato, capacità di IOPS e IOPS dei dischi delle macchine virtuali

Nella maggior parte dei casi, il motore di posizionamento esclude dall'elenco dei candidati gli archivi dati disattivati e quelli con soglia rossa. Il motore non esclude questi archivi dati quando si importa una macchina virtuale da vCenter Server.

Il motore di posizionamento utilizza il nome della rete per selezionare i pool di reti candidati per una vApp e le relative macchine virtuali.

Dopo che il motore di posizionamento ha selezionato un set di risorse candidate, le classifica e sceglie la posizione migliore per ciascuna macchina virtuale in base alla configurazione di CPU, RAM virtuale e storage di ciascuna macchina virtuale.

Durante la classificazione delle risorse, il motore di posizionamento esamina l'utilizzo delle risorse corrente e l'utilizzo stimato futuro. L'utilizzo stimato futuro viene calcolato in base alle macchine virtuali disattivate attualmente posizionate in un dato pool di risorse e all'utilizzo previsto dopo la loro attivazione. Per la CPU e la memoria, il motore di posizionamento considera la capacità attuale non riservata, l'utilizzo massimo e la capacità non riservata futura stimata. Per lo storage, il motore considera la capacità di provisioning aggregata fornita dal cluster a cui ciascun pool di risorse appartiene. Il motore di posizionamento considera quindi i valori ponderati dell'idoneità corrente e futura di ciascun pool di risorse.

Quando è necessario uno spostamento, il motore di posizionamento privilegia i pool di risorse con la capacità più libera di CPU, memoria e storage. Assegna inoltre una preferenza inferiore ai cluster gialli, in modo che siano selezionati solo se non sono disponibili cluster integri che soddisfino i criteri di posizionamento. Quando si importa una macchina virtuale da vCenter Server, se il posizionamento della macchina virtuale è soddisfacente, per ridurre al minimo lo spostamento, il motore ignora le soglie.

Quando si attiva una macchina virtuale, VMware Cloud Director tenta di attivarla nella sua posizione corrente. Se vCenter Server segnala un errore con la capacità di memoria e CPU dell'host, VMware Cloud Director prova a utilizzare il pool di risorse due volte prima di provare a spostare la macchina virtuale negli altri pool di risorse compatibili nel VDC dell'organizzazione. Quando esegue nuovamente il motore di posizionamento nel tentativo di individuare un pool di risorse compatibile, VMware Cloud Director esclude i pool di risorse precedenti non riusciti. Se all'archivio dati in cui si trovano i VMDK non sono connessi pool di risorse idonei, lo spostamento di una macchina virtuale in un altro pool di risorse può causare la migrazione dei VMDK della macchina virtuale in un archivio dati diverso. Se il posizionamento della macchina virtuale non riesce in tutte le posizioni che soddisfano i requisiti della macchina virtuale, VMware Cloud Director restituisce un messaggio di errore che indica che il posizionamento non è possibile. Se c'è un'affinità con l'archivio dati corrente e l'archivio dati non è disponibile, il motore di posizionamento restituisce un errore che indica che il posizionamento non è possibile. Questo è uno stato normale del sistema quando funziona quasi a piena capacità e la soluzione proposta non soddisfa al momento tutti i requisiti. Per correggere l'errore, è possibile aggiungere o liberare risorse e avviare un nuovo tentativo. Quando non è necessario alcun archivio dati specifico, il motore di posizionamento seleziona nel pool di risorse o nel cluster host candidato un archivio dati che soddisfi gli altri requisiti, come il criterio di storage, la capacità di storage e la capacità di IOPS.

In caso di distribuzione contemporanea, quando un pool di risorse sta per esaurire la sua capacità, la convalida del pool di risorse potrebbe riuscire anche se il pool non dispone delle risorse per supportare la macchina virtuale. In questo caso, non è possibile attivare la macchina virtuale. Se una macchina virtuale non viene attivata in questa situazione e sono presenti più pool di risorse che supportano il VDC, per richiedere a VMware Cloud Director di effettuare la migrazione della macchina virtuale in un pool di risorse diverso, avviare di nuovo l'operazione di attivazione.

Quando la capacità di un cluster a cui un pool di risorse appartiene è quasi esaurita, potrebbe non essere possibile attivare una macchina virtuale in tale pool di risorse se nessun host singolo dispone della capacità sufficiente per attivarla. Ciò avviene come risultato della frammentazione di capacità a livello cluster. In questo caso, l'amministratore di sistema deve effettuare la migrazione di alcune macchine virtuali all'esterno del cluster, in modo che il cluster mantenga una capacità disponibile sufficiente.

Algoritmo del motore di posizionamento delle macchine virtuali

L'algoritmo di posizionamento seleziona un cluster host nell'elenco di cluster host che dispongono dei profili di storage richiesti e soddisfano le regole di affinità o anti-affinità esistenti tra macchina virtuale e macchina virtuale e tra macchina virtuale e host. VMware Cloud Director calcola la soluzione di posizionamento in base a vari punteggi. Per modificare il comportamento del motore, è possibile utilizzare lo strumento di gestione delle celle per modificare i parametri configurabili che iniziano con il carattere di sottolineatura (_).
  1. Per ogni cluster host, il motore di posizionamento dei carichi di lavoro calcola capacityScore, futureCapacityScore e reservationScore. Il motore di posizionamento calcola ciascun punteggio separatamente per CPU, memoria e storage.
    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. Per ogni cluster host, il motore di posizionamento calcola weightedCapacityScore per CPU, memoria e storage.
    weightedCapacityScore = capacityScore * _currentScoreWeight + futureCapacityScore * (1 - _currentScoreWeight)

    Ogni weightedCapacityScore è un rapporto compreso tra 0 e 1. Più il valore è alto, più risorse sono disponibili. I valori di weightedCapacityScore possono essere confrontati tra diversi tipi di risorse, ad esempio CPU, memoria e storage, perché rappresentano una misurazione della disponibilità senza unità. Un valore di weightedCapacityScore più alto indica una maggiore disponibilità della risorsa corrispondente nel cluster host.

  3. Il motore di posizionamento verifica che le risorse di CPU, memoria e storage siano sufficienti.
    totalAvailable * _[memory|cpu|storage]headRoom < free / UnreservedCapacity
  4. Il motore di posizionamento ordina l'elenco di cluster host in weightedCapacityScore in modo che il cluster host con meno vincoli sia il primo e il cluster host con più vincoli sia l'ultimo.
  5. Il motore di posizionamento elabora ogni cluster di host nell'elenco.
    • Se il cluster host deve essere evitato, ad esempio a causa di una regola di anti-affinità, il motore lo aggiunge a avoidHubList.
    • Se il cluster host non dispone di risorse aggiuntive sufficienti, il motore lo aggiunge a noHeadRoomHubList.
    • Se un cluster host è il preferito, ad esempio a causa di una regola di affinità forte o del cluster host corrente, il motore lo aggiunge a preferredHubList.
    • Tutti gli altri cluster host passano a acceptableHubList.

    All'interno di ogni elenco, il cluster host più preferito è il primo, mentre il cluster host meno preferito è l'ultimo.

  6. Il motore integra i quattro elenchi.

    preferredHubList + acceptableHubList + noHeadRoomHubList + avoidHubList

    Il motore ordina l'elenco risultante dal cluster host più preferitoo a quello meno preferito.

  7. Il motore di posizionamento seleziona nell'elenco il cluster host superiore come hub di destinazione.

Parametri modificabili

Per influenzare le varie soglie dell'algoritmo di selezione, sono disponibili diversi parametri che è possibile personalizzare. Tuttavia, è consigliabile che solo gli amministratori dei provider di servizi esperti delle operazioni di VMware Cloud Director tentino di modificare i valori predefiniti di questi parametri perché la modifica potrebbe generare risultati indesiderati e imprevisti. Testare prima le modifiche dei parametri in un ambiente non di produzione.

È possibile personalizzare i seguenti parametri utilizzando lo strumento di gestione delle celle.

Parametro Descrizione
vcloud.placement.ranking.currentScoreWeight L'importanza relativa del componente corrente del punteggio del cluster host. Il valore deve essere in [0.1]. Quando il valore è 0, il motore classifica il cluster host solo in base al punteggio futuro. Quando il valore è 1, il motore classifica il cluster host solo in base al punteggio corrente. Il valore predefinito è 0,5.

vcloud.placement.ranking.memoryBurstRatio

vcloud.placement.ranking.cpuBurstRatio

La percentuale di allocazione oltre la prenotazione di una macchina virtuale utilizzata dal classificatore per stimare il carico del cluster. Il valore è compreso tra 0 e 1. 0 indica che una macchina virtuale utilizza solo la sua prenotazione. 1 indica che la macchina virtuale è completamente occupata. Il valore predefinito è 0,67.
vcloud.placement.ranking.futureDeployRatio La percentuale di macchine virtuali in questo cluster host che si prevede verranno distribuite e utilizzeranno memoria e CPU. Il valore è compreso tra 0 e 1. Il valore predefinito è 0,5.

vcloud.placement.ranking.memoryHeadRoom

vcloud.placement.ranking.cpuHeadRoom

vcloud.placement.ranking.storageHeadRoom

Questi parametri forniscono il controllo per lasciare risorse aggiuntive per la crescita in un cluster host. Il motore definisce il margine come rapporto di risorse non prenotate. Ad esempio, se vcloud.placement.ranking.memoryHeadRoom è 0,2, quando un cluster host ha meno del 20% di risorse disponibili, il motore lo considera come un cluster con margine di memoria insufficiente e lo classifica a un livello inferiore rispetto agli altri cluster host. Il valore deve essere compreso tra 0 e 1. Il valore predefinito è 0,2.

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