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

Importante: Le regole di affinità per l'host delle macchine virtuali devono avere una condizione per cui la regola must run negli host del gruppo. Le regole di anti-affinità per l'host delle macchine virtuali devono avere una condizione per cui la regola must not run negli host del gruppo.
Il motore di posizionamento utilizza i seguenti criteri per selezionare gli archivi dati candidati per le macchine virtuali.
  • Capacità di storage e soglie
  • Criteri di storage
  • Requisiti di affinità tra macchine virtuali
  • Se IOPS è attivato, capacità di IOPS e IOPS dei dischi delle macchine virtuali
Sono presenti due soglie di archivio dati in VMware Cloud Director.
  • Soglia rossa: quantità di spazio libero in un archivio dati, al di sotto della quale VMware Cloud Director esclude l'archivio dati durante il posizionamento di un'entità qualsiasi, ad esempio una macchina virtuale, un modello o un disco.

    Quando un archivio dati raggiunge la soglia rossa, il motore di posizionamento dei carichi di lavoro smette di posizionare le nuove macchine virtuali nell'archivio dati ad eccezione di quelle importate da vCenter. Nel caso dell'importazione della macchina virtuale, se la macchina virtuale di vCenter è già presente nell'archivio dati con soglia rossa, il motore di posizionamento preferisce l'archivio dati esistente.

    Il motore di posizionamento dei carichi di lavoro utilizza la soglia rossa per tutti i workflow. Quando si effettua una richiesta per un nuovo posizionamento, il motore di posizionamento esclude innanzitutto tutti gli archivi dati o i pod di storage che hanno superato la soglia rossa. Quando si effettua una richiesta di posizionamento per un'entità esistente, se i dischi si trovano negli archivi dati che superano la soglia rossa, VMware Cloud Director riposiziona i dischi in altri archivi dati disponibili. Il motore seleziona quindi un archivio dati tra gli archivi dati o i pod di storage rimanenti, tramite la logica del selettore di VMware Cloud Director o mediante i suggerimenti di vSphere Storage DRS.

  • Soglia gialla: quantità di spazio libero nell'archivio dati, al di sotto della quale VMware Cloud Director esclude l'archivio dati durante il posizionamento delle macchine virtuali shadow da cui VMware Cloud Director crea macchine virtuali con provisioning rapido. Per ulteriori informazioni sulle macchine virtuali shadow, vedere Provisioning rapido delle macchine virtuali.

    La soglia gialla non si applica ai cloni collegati che VMware Cloud Director utilizza per il provisioning rapido delle macchine virtuali. Quando il motore di posizionamento seleziona un archivio dati per un clone collegato, se nell'archivio dati selezionato manca una macchina virtuale shadow, VMware Cloud Director crea una macchina virtuale shadow nell'archivio dati. In questo caso, la soglia non si applica alla macchina virtuale shadow.

    La soglia gialla si applica solo al processo in background periodico che crea macchine virtuali shadow. Se attivato, il processo viene eseguito ogni 24 ore e utilizza la creazione di macchine virtuali eager in ogni archivio dati per una determinata coppia di criterio di storage e hub. Per attivare il processo per il provisioning eager delle macchine virtuali shadow, è necessario impostare la proprietà seguente su true.
    valc.catalog.fastProvisioning=true
    Nota: Il processo in background periodico crea macchine virtuali shadow in tutti gli archivi dati per tutti i modelli. Il processo aumenta il consumo di storage anche quando non si utilizzano gli archivi dati o le macchine virtuali shadow.

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.

Quando si implementa la logica delle soglie, VMware Cloud Director non valuta i requisiti dell'oggetto di posizionamento corrente. Affinché il motore di posizionamento dei carichi di lavoro posizioni un oggetto in un archivio dati, lo spazio disponibile in byte deve essere superiore alla soglia in byte. Ad esempio, per un archivio dati con capacità disponibile di 5 GB con una soglia rossa impostata su 4 GB, il motore di posizionamento può posizionare una macchina virtuale con un requisito di 2 GB. Se la creazione della macchina virtuale supera la soglia, il motore di posizionamento esclude l'archivio dati per cercare ulteriori posizionamenti.

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, 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 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 in 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 

Filtri dei datastore e algoritmo di posizionamento dello storage

I filtri dei datastore l'algoritmo di posizionamento dello storage di VMware Cloud Director determinano il posizionamento dei file e dei dischi delle macchine virtuali nelle risorse di storage sottostanti. I contenitori di storage rappresentano le risorse di storage, ovvero il datastore o il cluster di datastore.

I filtri dei datastore fanno parte della catena dei filtri di storage che consente di limitare i contenitori di storage idonei in base ai requisiti dell'oggetto di posizionamento. I filtri utilizzano i contenitori di storage disponibili in un VDC del provider come elenco di input. I filtri vengono eseguiti in una sequenza predefinita e ogni filtro passa l'elenco di contenitori di storage filtrato al filtro successivo. VMware Cloud Director ignora i filtri che non sono applicabili. Ad esempio, per le macchine virtuali senza un'impostazione IOPS, VMware Cloud Director non esegue il filtro IOPS.

Tabella 1. Filtri dei datastore
Filtro Descrizione
AffinityDatastoreFilter Filtra i contenitori di storage in base alle regole di affinità e anti-affinità definite per i datastore. VMware Cloud Director imposta le regole di affinità del datastore nei casi come l'importazione di macchine virtuali da vCenter, la migrazione del tenant e così via.
AlreadyOnValidDatastoreFilter Se un oggetto di posizionamento è già posizionato in un datastore valido, questo filtro rifiuta tutti gli altri contenitori di storage e conserva solo il datastore valido.
BadHostsFilter Esclude i contenitori di storage che non dispongono di almeno un host connesso, operativo e acceso. Esclude i contenitori di storage che sono stati eliminati dall'inventario.
DatastoreClusterFilter

Esclude tutti i cluster di datastore e i datastore che fanno parte di un cluster di datastore. Questo filtro viene utilizzato quando l'oggetto di posizionamento non richiede cluster di datastore. Ad esempio, se i dischi denominati condivisi non sono consentiti nei cluster di datastore in base a config: vcloud.disk.shared.allowOnSpod.

DatastoreFsFilter Esclude tutti i contenitori di storage che fanno parte del file system specificato. Ad esempio, se i dischi denominati condivisi non sono consentiti nei datastore NFS in base a config: vcloud.disk.shared.allowOnNfs, l'algoritmo di posizionamento aggiunge questo filtro alla catena.
DisabledDatastoreFilter Esclude tutti i contenitori di storage disattivati dall'elenco di input.
IopsCapacityDatastoreFilter

Esclude tutti i datastore che non dispongono di capacità IOPS sufficiente per la macchina virtuale.

Il filtro viene eseguito se vengono soddisfatti i prerequisiti seguenti.

  • La macchina virtuale ha un'impostazione IOPS.
  • Non sono presenti pod di storage.
  • In tutti i datastore è impostata l'opzione iopsCapacities.
  • La macchina virtuale ha attivato la funzionalità VCD/IOPS del criterio di storage e l'opzione Impatto sul posizionamento delle impostazioni del criterio di storage è attivata.
LeastProvisionedFilter Individua l'ultimo contenitore di storage sottoposto a provisioning.
LinkedCloneFilter Esclude tutti i datastore che non dispongono di una macchina virtuale di origine o di macchine virtuali shadow corrispondenti in un datastore. Esclude tutti i datastore che hanno macchine virtuali di origine in cui è stata superata la lunghezza massima consentita della catena per i dischi virtuali delle macchine virtuali.
MinFreeSpaceFilter Esclude tutti i contenitori di storage che non contengono spazio libero sufficiente per l'oggetto di posizionamento. Per i pod di storage, lo spazio libero è determinato dallo spazio libero massimo dei datastore secondari e non dallo spazio libero totale dei datastore secondari o dallo spazio libero del pod di storage. Ad esempio, se un pod di storage ha due datastore con 3 GB e 5 GB liberi rispettivamente, VMware Cloud Director considera lo spazio libero del pod di storage pari a 5 GB. Se non sono presenti tali contenitori, il filtro mantiene il contenitore con lo spazio libero maggiore.
MostFreeSpaceFilter Individua il contenitore di storage con lo spazio libero maggiore.
StorageClassFilter Esclude tutti i contenitori di storage o i pod di storage che non corrispondono al criterio di storage dell'oggetto di posizionamento definito nei loro requisiti.
ThresholdFilter Esclude i contenitori di storage che raggiungono la soglia di capacità disponibile specificata. In VMware Cloud Director sono presenti la soglia gialla e rossa. Vedere Configurazione di soglie di spazio su disco insufficiente per un contenitore di storage del virtual data center di un provider in VMware Cloud Director.
VirtualMachineFilter Esclude tutti i contenitori di storage a cui la macchina virtuale specificata non ha accesso.

VMware Cloud Director passa l'elenco finale dei contenitori di storage filtrati all'algoritmo di posizionamento dello storage che tenta di posizionare l'oggetto di posizionamento nei contenitori di storage selezionati.

Per posizionare il set di oggetti di posizionamento nel datastore migliore possibile per ciascuno, l'algoritmo di posizionamento dello storage utilizza criteri configurabili e l'elenco di datastore validi. L'algoritmo di posizionamento dello storage utilizza il workflow seguente.
  1. Riceve dal motore di posizionamento un set di oggetti di posizionamento e un pool di risorse di destinazione che supporta il VDC del provider. Ci sono due alternative.

    • In genere, l'algoritmo riceve un file home della macchina virtuale contenente metadati e informazioni di configurazione e un set di dischi per il posizionamento della macchina virtuale regolare senza provisioning rapido.
    • L'algoritmo potrebbe utilizzare un approccio del disco aggregato per i dischi denominati e le macchine virtuali con provisioning rapido. In altre parole, per ogni macchina virtuale con provisioning rapido l'algoritmo riceve un requisito per la macchina virtuale e tutti i relativi dischi.
  2. Riceve il set di contenitori di storage idonei per tale hub che include sia datastore sia pod di storage.
  3. Per escludere i contenitori di storage che non possono adattarsi a un oggetto, per ogni oggetto di posizionamento l'algoritmo viene eseguito tramite la catena statica dei filtri di posizionamento. Ad esempio, se un disco della macchina virtuale non può essere inserito in un datastore, l'algoritmo contrassegna il datastore come non idoneo per il disco della macchina virtuale.
  4. Classifica i contenitori di storage per ogni oggetto in ordine di preferenza in base alle considerazioni seguenti.
    1. Se il contenitore è un pod di storage o un datastore
    2. Quanti altri oggetti di posizionamento contengono il pod di storage come contenitore valido
    3. Dimensioni del contenitore
  5. Se uno dei contenitori è un pod di storage, per ridurre i pod di storage ai datastore, l'algoritmo esegue l'algoritmo di richiamo vSphere Storage DRS.
  6. Dopo aver immesso gli oggetti di posizionamento e il relativo set di datastore validi, determina dove deve trovarsi l'oggetto di posizionamento.
  7. Restituisce un risultato di posizionamento finale che determina i datastore in cui deve trovarsi ogni oggetto di posizionamento o restituisce un errore che indica che l'algoritmo di VMware Cloud Director non riesce a trovare un posizionamento adatto.