Creare un gruppo di posizionamento di prossimità con PowerShell

Nota

Molti dei passaggi elencati in questo documento si applicano ai Set di scalabilità di macchine virtuali usando la modalità di orchestrazione uniforme. È consigliabile usare l'orchestrazione flessibile per i nuovi carichi di lavoro. Per altre informazioni, vedere Modalità di orchestrazione per i set di scalabilità di macchine virtuali in Azure.

L'inserimento di macchine virtuali in una singola area riduce la distanza fisica tra le istanze. Posizionarle all'interno di una singola zona di disponibilità le porterà anche fisicamente più vicine. Tuttavia, man mano che aumenta il footprint di Azure, una singola zona di disponibilità potrebbe estendersi su più data center fisici, con conseguente latenza di rete che influisce sull'applicazione.

Per ottenere le macchine virtuali il più vicino possibile, ottenere la latenza più bassa possibile, è possibile distribuirle all'interno di un gruppo di posizionamento di prossimità.

Un gruppo di posizionamento di prossimità è un raggruppamento logico usato per assicurarsi che le risorse di calcolo di Azure si trovino una vicino all'altra. I gruppo di posizionamento di prossimità sono utili per i carichi di lavoro che richiedono una latenza ridotta.

  • Bassa latenza tra macchine virtuali autonome.
  • Bassa latenza tra macchine virtuali in un singolo set di disponibilità o in un set di scalabilità di macchine virtuali.
  • Bassa latenza tra macchine virtuali autonome, macchine virtuali in più set di disponibilità o più set di scalabilità. È possibile avere più risorse di calcolo in un singolo gruppo di posizionamento per riunire un'applicazione a più livelli.
  • Bassa latenza tra più livelli di applicazione usando diversi tipi di hardware. Ad esempio, l'esecuzione del back-end usando la serie M in un set di disponibilità e il front-end in un'istanza della serie D, in un set di scalabilità, in un singolo gruppo di posizionamento di prossimità.

Usare i gruppi di posizionamento di prossimità

Un gruppo di posizionamento di prossimità è una risorsa in Azure. È necessario crearne uno prima di usarlo con altre risorse. Una volta creato, può essere usato con macchine virtuali, set di disponibilità o set di scalabilità di macchine virtuali. Si specifica un gruppo di posizionamento di prossimità durante la creazione di risorse di calcolo che forniscono l'ID gruppo di posizionamento di prossimità.

È anche possibile spostare una risorsa esistente in un gruppo di posizionamento di prossimità. Quando si sposta una risorsa in un gruppo di posizionamento di prossimità, è necessario arrestare (deallocare) l'asset perché verrà ridistribuito potenzialmente in un data center diverso nell'area per soddisfare il vincolo di coubicazione.

Nel caso di set di disponibilità e set di scalabilità di macchine virtuali, è necessario impostare il gruppo di posizionamento di prossimità a livello di risorsa anziché le singole macchine virtuali.

Un gruppo di posizionamento di prossimità è un vincolo di coubicazione anziché un meccanismo di blocco. Viene aggiunto a un data center specifico con la distribuzione della prima risorsa per usarla. Dopo che tutte le risorse che usano il gruppo di posizionamento di prossimità sono state arrestate (deallocate) o eliminate, non vengono più aggiunte. Pertanto, quando si usa un gruppo di posizionamento di prossimità con più serie di macchine virtuali, è importante specificare tutti i tipi necessari in anticipo in un modello quando possibile o seguire una sequenza di distribuzione che migliorerà le probabilità di una distribuzione corretta. Se la distribuzione non riesce, riavviare la distribuzione con le dimensioni della macchina virtuale non riuscite come prima dimensione da distribuire.

Cosa aspettarsi quando si usano i gruppi di posizionamento di prossimità

I gruppi di posizionamento di prossimità offrono la coubicazione nello stesso data center. Tuttavia, poiché i gruppi di posizionamento di prossimità rappresentano un vincolo di distribuzione aggiuntivo, gli errori di allocazione possono verificarsi. Esistono alcuni casi d'uso in cui possono verificarsi errori di allocazione quando si usano gruppi di posizionamento di prossimità:

  • Quando si richiede la prima macchina virtuale nel gruppo di posizionamento di prossimità, il data center viene selezionato automaticamente. In alcuni casi, una seconda richiesta per uno SKU di macchina virtuale diverso potrebbe non riuscire se non esiste nel data center. In questo caso, viene restituito un errore OverconstrainedAllocationRequest. Per evitare questo problema, provare a modificare l'ordine in cui si distribuiscono gli SKU o distribuire entrambe le risorse usando un singolo modello di ARM.
  • Nel caso di carichi di lavoro elastici, in cui si aggiungono e rimuovono istanze di macchine virtuali, la presenza di un vincolo di gruppo di posizionamento di prossimità nella distribuzione potrebbe comportare un errore di mancata soddisfazione della richiesta con conseguente errore AllocationFailure .
  • L'arresto (deallocazione) e l'avvio delle macchine virtuali in base alle esigenze è un altro modo per ottenere l'elasticità. Poiché la capacità non viene mantenuta dopo l'arresto (deallocazione) di una macchina virtuale, l'avvio potrebbe comportare un errore AllocationFailure .
  • Le operazioni di avvio e ridistribuzione della macchina virtuale continueranno a rispettare il gruppo di posizionamento di prossimità dopo la configurazione corretta.

Manutenzione pianificata e gruppi di posizionamento di prossimità

Gli eventi di manutenzione pianificata, ad esempio la rimozione delle autorizzazioni hardware in un data center di Azure, potrebbero influire sull'allineamento delle risorse nei gruppi di posizionamento di prossimità. Le risorse potrebbero essere spostate in un data center diverso, interrompendo le aspettative di collocazione e latenza associate al gruppo di posizionamento di prossimità.

Controllare lo stato di allineamento

È possibile eseguire le operazioni seguenti per controllare lo stato di allineamento dei gruppi di posizionamento di prossimità.

  • Lo stato di coubicazione del gruppo di posizionamento di prossimità può essere visualizzato usando il portale, l'interfaccia della riga di comando e PowerShell.

    • Per PowerShell, è possibile ottenere lo stato della condivisione condivisa usando il cmdlet Get-AzProximityPlacementGroup includendo il parametro facoltativo '-ColocationStatus'.

    • Per l'interfaccia della riga di comando, è possibile ottenere lo stato di condivisione usando az ppg show includendo il parametro facoltativo '--include-colocation-status'.

  • Per ogni gruppo di posizionamento di prossimità, una proprietà stato di condivisione fornisce il riepilogo dello stato di allineamento corrente delle risorse raggruppate.

    • Allineato: la risorsa si trova all'interno della stessa latenza del gruppo di posizionamento di prossimità.

    • Sconosciuto: almeno una delle risorse della macchina virtuale viene deallocata. Una volta avviato correttamente, lo stato tornerà a Allineato.

    • Non allineato: almeno una risorsa macchina virtuale non è allineata al gruppo di posizionamento di prossimità. Anche le risorse specifiche non allineate verranno richiamate separatamente nella sezione di appartenenza

  • Per i set di disponibilità, è possibile visualizzare informazioni sull'allineamento delle singole macchine virtuali nella pagina Panoramica del set di disponibilità.

  • Per i set di scalabilità, le informazioni sull'allineamento delle singole istanze sono disponibili nella scheda Istanze della pagina di panoramica per il set di scalabilità.

Riallineare le risorse

Se un gruppo di posizionamento di prossimità è Not Aligned, è possibile arrestare\deallocare e quindi riavviare le risorse interessate. Se la macchina virtuale si trova in un set di disponibilità o in un set di scalabilità, tutte le macchine virtuali nel set di disponibilità o nel set di scalabilità devono essere arrestate\deallocate prima di riavviarle.

Se si verifica un errore di allocazione a causa di vincoli di distribuzione, potrebbe essere necessario arrestare\deallocare tutte le risorse nel gruppo di posizionamento di prossimità interessato (incluse le risorse allineate) e quindi riavviarle per ripristinare l'allineamento.

Procedure consigliate

  • Usare i gruppi di posizionamento di prossimità insieme alla rete accelerata per ottenere la latenza più bassa. Per ulteriori informazioni vedere l'articolo Creare una macchina virtuale Windows con rete accelerata oppure l'articolo Creare una macchina virtuale Linux con rete accelerata.
  • Distribuire tutte le dimensioni delle macchine virtuali in un singolo modello. Per evitare l'atterraggio nell'hardware che non supporta tutti gli SKU e le dimensioni delle macchine virtuali necessari, includere tutti i livelli applicazione in un singolo modello in modo che vengano distribuiti contemporaneamente.
  • Se si esegue lo script della distribuzione usando PowerShell, l'interfaccia della riga di comando o l'SDK, è possibile che venga visualizzato un errore OverconstrainedAllocationRequestdi allocazione. In questo caso, è necessario arrestare/deallocare tutte le macchine virtuali esistenti e modificare la sequenza nello script di distribuzione per iniziare con lo SKU/dimensioni della macchina virtuale non riuscite.
  • Quando si riutilizza un gruppo di posizionamento esistente da cui sono state eliminate le macchine virtuali, attendere il completamento completo dell'eliminazione prima di aggiungerle.
  • Se la latenza è la prima priorità, inserire le macchine virtuali in un gruppo di posizionamento di prossimità e l'intera soluzione in una zona di disponibilità. Tuttavia, se la resilienza è la priorità principale, distribuire le istanze tra più zone di disponibilità (un singolo gruppo di posizionamento di prossimità non può estendersi su zone).

Creare un gruppo di selezione host di prossimità

Creare un gruppo di posizionamento di prossimità usando il cmdlet New-AzProximityPlacementGroup.

$resourceGroup = "myPPGResourceGroup"
$location = "East US"
$ppgName = "myPPG"
New-AzResourceGroup -Name $resourceGroup -Location $location
$ppg = New-AzProximityPlacementGroup `
   -Location $location `
   -Name $ppgName `
   -ResourceGroupName $resourceGroup `
   -ProximityPlacementGroupType Standard

Elencare i gruppi di posizionamento di prossimità

È possibile elencare tutti i gruppi di posizionamento di prossimità usando il cmdlet Get-AzProximityPlacementGroup.

Get-AzProximityPlacementGroup

Creare un set di scalabilità in un gruppo di posizionamento di prossimità

Importante

A partire da novembre 2023, i set di scalabilità di macchine virtuali creati con PowerShell e l'interfaccia della riga di comando di Azure avranno per impostazione predefinita la modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica che causa un'interruzione per i clienti di PowerShell/CLI di VMSS - Hub della community Microsoft

Quando si usa New-AzVMSS per creare un set di scalabilità nel gruppo di posizionamento di prossimità, usare -ProximityPlacementGroup $ppg.Id come riferimento all'ID del gruppo.

$scalesetName = "myVM"

New-AzVmss `
  -ResourceGroupName $resourceGroup `
  -Location $location `
  -OrchestrationMode "Uniform" `
  -VMScaleSetName $scalesetName `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -ProximityPlacementGroup $ppg.Id

È possibile visualizzare l'istanza nel gruppo di posizionamento usando Get-AzProximityPlacementGroup.

  Get-AzProximityPlacementGroup `
   -ResourceId $ppg.Id | Format-Table `
   -Wrap `
   -Property VirtualMachineScaleSets

Passaggi successivi

Per creare gruppo di posizionamento di prossimità, è anche possibile usare l'interfaccia della riga di comando di Azure.