Condividi tramite


Aggiornamento automatico delle estensioni per macchine virtuali e set di scalabilità in Azure

L'aggiornamento automatico delle estensioni è disponibile per macchine virtuali di Azure e set di scalabilità di macchine virtuali di Azure. Quando l'aggiornamento automatico delle estensioni è abilitato in una macchina virtuale o in un set di scalabilità, l'estensione viene aggiornata automaticamente ogni volta che l'editore dell'estensione rilascia una nuova versione per tale estensione.

L'aggiornamento automatico delle estensioni include le funzionalità seguenti:

  • Supportato per le macchine virtuali di Azure e i set di scalabilità di macchine virtuali di Azure.
  • Gli aggiornamenti vengono applicati in un modello di distribuzione incentrato sulla disponibilità.
  • Per un set di scalabilità di macchine virtuali, in un singolo batch non viene eseguito l'aggiornamento di più del 20% delle macchine virtuali del set di scalabilità. La dimensione minima del batch è una macchina virtuale.
  • È compatibile con tutte le dimensioni di macchine virtuali per le estensioni Windows e Linux.
  • È possibile rifiutare esplicitamente gli aggiornamenti automatici in qualsiasi momento.
  • L'aggiornamento automatico delle estensioni può essere abilitato in un set di scalabilità di macchine virtuali di qualsiasi dimensione.
  • Ogni estensione supportata viene registrata singolarmente ed è possibile scegliere le estensioni da aggiornare automaticamente.
  • Supportato in tutte le aree del cloud pubblico.

Come funziona l'aggiornamento automatico delle estensioni?

Il processo di aggiornamento dell'estensione sostituisce la versione dell'estensione esistente in una macchina virtuale con una nuova versione della stessa estensione quando viene pubblicata dal server di pubblicazione dell'estensione. L'integrità della macchina virtuale viene monitorata dopo l'installazione della nuova estensione. Se la macchina virtuale non è in uno stato integro entro 5 minuti dal completamento dell'aggiornamento, viene eseguito il rollback della versione dell'estensione alla versione precedente.

Viene eseguito un nuovo tentativo automatico di aggiornamento dell'estensione non riuscita. Ogni pochi giorni viene eseguito automaticamente un nuovo tentativo senza l'intervento dell'utente.

Aggiornamenti basati sulla disponibilità

Il modello basato sulla disponibilità per gli aggiornamenti orchestrati della piattaforma garantisce che le configurazioni di disponibilità in Azure siano rispettate in più livelli di disponibilità.

Per un gruppo di macchine virtuali in fase di aggiornamento, la piattaforma Azure orchestra gli aggiornamenti seguenti:

Tra aree:

  • Un aggiornamento si sposta in Azure a livello globale in modo graduale per evitare errori di distribuzione a livello di Azure.
  • Una "fase" può includere una o più aree e un aggiornamento si sposta da una fase all'altra solo se le macchine virtuali idonee nella fase precedente sono state aggiornate correttamente.
  • Le aree geografiche abbinate non verranno aggiornate contemporaneamente e non possono trovarsi nella stessa fase a livello di area.
  • L'esito positivo di un aggiornamento viene misurato monitorando l'integrità di una macchina virtuale dopo l'aggiornamento. L'integrità delle macchine virtuali viene monitorata tramite gli indicatori di integrità della piattaforma per la macchina virtuale. Per i set di scalabilità di macchine virtuali, l'integrità della macchina virtuale viene rilevata tramite probe di integrità dell'applicazione o l’Estensione di integrità dell'applicazione, se applicata al set di scalabilità.

All'interno di un'area:

  • Le macchine virtuali in zone di disponibilità diverse non vengono aggiornate simultaneamente con lo stesso aggiornamento.
  • Le singole macchine virtuali che non fanno parte di un set di disponibilità vengono raggruppate in batch per evitare aggiornamenti simultanei per tutte le macchine virtuali in una sottoscrizione.

All'interno di un "set":

  • Tutte le macchine virtuali in un set di disponibilità o un set di scalabilità comuni non vengono aggiornate contemporaneamente.
  • Le macchine virtuali in un set di disponibilità comune vengono aggiornate entro i limiti del dominio di aggiornamento e le macchine virtuali in più domini di aggiornamento non vengono aggiornate contemporaneamente.
  • Le macchine virtuali in un set di scalabilità di macchine virtuali comuni vengono raggruppate in batch e aggiornate entro i limiti del dominio di aggiornamento. I criteri di aggiornamento definiti nel set di scalabilità vengono rispettati durante l'aggiornamento. Se i criteri di aggiornamento sono impostati su Manuale, le macchine virtuali non verranno aggiornate anche se è abilitato l'aggiornamento automatico dell'estensione.

Processo di aggiornamento per i set di scalabilità di macchine virtuali

  1. Prima di iniziare il processo di aggiornamento, l'agente di orchestrazione si assicura che non più del 20% delle macchine virtuali nell'intero set di scala non sia integro (per qualsiasi motivo).

  2. L'agente di orchestrazione dell’aggiornamento identifica il batch di istanze della macchina virtuale da aggiornare. Un batch di aggiornamento può avere un massimo del 20% del numero totale di macchine virtuali, soggetto a una dimensione minima del batch di una macchina virtuale. La definizione dei criteri di aggiornamento e delle zone di disponibilità viene considerata durante l'identificazione del batch.

  3. Dopo l'aggiornamento, l'integrità della macchina virtuale viene sempre monitorata prima di passare al batch successivo. Per i set di scalabilità con probe di integrità dell'applicazione o estensione di integrità dell'applicazione configurati, viene monitorata anche l'integrità dell'applicazione. L'aggiornamento attende fino a 5 minuti (o la configurazione del probe di integrità definita) affinché la macchina virtuale diventi integra prima di aggiornare il batch successivo. Se una macchina virtuale non ripristina l'integrità dopo un aggiornamento, per impostazione predefinita viene reinstallata la versione precedente dell'estensione nella macchina virtuale.

  4. L'agente di orchestrazione dell'aggiornamento tiene anche traccia della percentuale di macchine virtuali che diventano non integre dopo un aggiornamento. L'aggiornamento viene interrotto se più del 20% delle istanze aggiornate diventa non integro durante il processo di aggiornamento.

Questo processo continua fino a completare l'aggiornamento di tutte le istanze nel set di scalabilità.

L'agente di orchestrazione dell'aggiornamento del sistema operativo del set di scalabilità verifica l'integrità complessiva del set di scalabilità prima di aggiornare ogni batch. Durante l'aggiornamento di un batch, possono essere in corso altre attività di manutenzione pianificate o meno che potrebbero influire sull'integrità delle macchine virtuali del set di scalabilità. In questi casi, se più del 20% delle istanze del set di scalabilità diventa non integro, l'aggiornamento del set di scalabilità si interrompe alla fine del batch corrente.

Estensioni supportate

L'aggiornamento automatico dell'estensione supporta le estensioni seguenti (e altre estensioni vengono aggiunte periodicamente):

Abilitazione aggiornamento automatico dell'estensione

Per abilitare l'aggiornamento automatico dell'estensione per un'estensione, è necessario assicurarsi che la proprietà enableAutomaticUpgrade sia impostata su true e aggiunta singolarmente a ogni definizione di estensione.

Usare l'API REST per Macchine virtuali

Per abilitare l'aggiornamento automatico dell'estensione per un'estensione (in questo esempio l'estensione Dependency Agent) in una macchina virtuale di Azure, usare la chiamata seguente:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/extensions/<extensionName>?api-version=2019-12-01`
{    
    "name": "extensionName",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "<location>",
    "properties": {
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true, 
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5"
        }
}

API REST per set di scalabilità di macchine virtuali

Usare la chiamata seguente per aggiungere l'estensione al modello del set di scalabilità:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>?api-version=2019-12-01`
{
   "location": "<location>",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [
            	{
                "name": "<extensionName>",
            	  "properties": {
             		    "autoUpgradeMinorVersion": true,
             		    "enableAutomaticUpgrade": true,
              	    "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
              	    "type": "DependencyAgentWindows",
              	    "typeHandlerVersion": "9.5"
            		}
          	    }
        	    ]
    	    }
    	}
    }
}

Azure PowerShell per Macchine virtuali

Usare il cmdlet Set-AzVMExtension:

Set-AzVMExtension -ExtensionName "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ResourceGroupName "myResourceGroup" `
    -VMName "myVM" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ExtensionType "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -Location WestUS `
    -EnableAutomaticUpgrade $true

Azure PowerShell per i set di scalabilità di macchine virtuali

Usare il cmdlet Add-AzVmssExtension per aggiungere l'estensione al modello del set di scalabilità:

Add-AzVmssExtension -VirtualMachineScaleSet $vmss
    -Name "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Type "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -EnableAutomaticUpgrade $true

Aggiornare il set di scalabilità usando Update-AzVmss dopo aver aggiunto l'estensione.

Interfaccia della riga di comando di Azure per le macchine virtuali

Usare il cmdlet az vm extension set:

az vm extension set \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

Interfaccia della riga di comando di Azure per set di scalabilità di macchine virtuali

Usare il cmdlet az vmss extension set per aggiungere l'estensione al modello del set di scalabilità:

az vmss extension set \
    --resource-group myResourceGroup \
    --vmss-name myVMSS \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

Modello di Resource Manager per Macchine virtuali

L'esempio seguente descrive come impostare gli aggiornamenti automatici delle estensioni per un'estensione (in questo esempio l’estensione Dependency Agent) in una macchina virtuale usando Azure Resource Manager

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[resourceGroup().location]",
    "name": "<extensionName>",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
    ],
    "properties": {
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5",
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true,
        "settings": {
            "enableAMA": "true"
        }
    }
}

Modello di Resource Manager per set di scalabilità di macchine virtuali

Usare l'esempio seguente per impostare l'aggiornamento automatico dell'estensione all'interno del modello del set di scalabilità:

{
   "type": "Microsoft.Compute/virtualMachineScaleSets",
   "apiVersion": "2023-09-01",
   "name": "[variables('vmScaleSetName')]",
   "location": "[resourceGroup().location]",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [{
                     "name": "<extensionName>",
                     "properties": {
                          "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
                          "type": "DependencyAgentWindows",
                          "typeHandlerVersion": "9.5",
                          "autoUpgradeMinorVersion": true,
                          "enableAutomaticUpgrade": true,
                     }
                }]
    	    }
    	}
    }
}

Con il portale di Azure

È possibile usare il portale di Azure - Pannello Estensione per abilitare l'aggiornamento automatico delle estensioni nelle macchine virtuali esistenti e nei set di scalabilità di macchine virtuali esistenti.

  1. Passare al pannello Macchine virtuali o Set di scalabilità di macchine virtuali e selezionare la risorsa facendo clic sul relativo nome.
  2. Passare al pannello "Estensioni + applicazioni" in Impostazioni per visualizzare tutte le estensioni installate nella risorsa. La colonna "Stato aggiornamento automatico" indica se l'aggiornamento automatico dell'estensione è abilitato, disabilitato o non supportato.
  3. Passare al pannello Dettagli estensione facendo clic sul nome dell'estensione. Screenshot del portale di Azure - Pannello Estensione.
  4. Fare clic su "Abilita aggiornamento automatico" per abilitare l'aggiornamento automatico dell'estensione. Questo pulsante può essere usato anche per disabilitare l'aggiornamento automatico quando necessario.
    Screenshot del portale di Azure per abilitare l'aggiornamento automatico dell'estensione.

Aggiornamenti delle estensioni con più estensioni

Una macchina virtuale o un set di scalabilità di macchine virtuali può disporre di più estensioni con l'aggiornamento automatico delle estensioni abilitato. Lo stesso set di scalabilità o macchina virtuale può disporre anche di altre estensioni senza l'aggiornamento automatico delle estensioni abilitato.

Se sono disponibili più aggiornamenti dell’estensione per una macchina virtuale, possono essere raggruppati in batch, ma ogni aggiornamento viene applicato singolarmente in una macchina virtuale. Un errore verificatosi in un'estensione non influisce sulle altre estensioni che potrebbero essere in corso di aggiornamento. Ad esempio, se sono pianificate due estensioni per un aggiornamento e il primo aggiornamento dell'estensione ha esito negativo, la seconda estensione verrà comunque aggiornata.

Gli aggiornamenti automatici delle estensioni possono essere applicati anche quando una macchina virtuale o un set di scalabilità di macchine virtuali dispone di più estensioni configurate con la sequenziazione delle estensioni. La sequenziazione delle estensioni è applicabile per la prima distribuzione della macchina virtuale e qualsiasi aggiornamento futuro di un'estensione viene applicato in modo indipendente.

Differenza tra enableAutomaticUpgrade e autoUpgradeMinorVersion

  1. AutoUpgradeMinorVersion:

    • Questa proprietà viene usata durante la creazione e l’aggiornamento della con una nuova configurazione.
    • Se impostato su "true", garantisce che la versione secondaria più recente dell'estensione venga installata automaticamente nella macchina virtuale.
    • Esegue l'override di TypeHandlerVersion con la versione secondaria stabile più recente disponibile.
    • Durante l'aggiornamento della configurazione della macchina virtuale, se è disponibile una nuova versione secondaria, viene considerata una modifica della configurazione e l'estensione viene reinstallata con la versione secondaria più recente.
    • Ciò consente di mantenere aggiornate le macchine virtuali appena create con la versione più recente dell'estensione secondaria stabile.
    • Se si desidera impostare manualmente l'estensione su una versione specifica, impostare questa proprietà su "false".
  2. EnableAutomaticUpgrade:

    • Questa proprietà influisce sulle macchine virtuali esistenti.
    • Non influisce sulla versione installata durante la creazione della macchina virtuale.
    • Dopo la creazione della macchina virtuale, se la macchina virtuale non esegue la versione secondaria più recente dell'estensione, l'abilitazione di questa proprietà attiva un aggiornamento automatico.
    • Gli aggiornamenti non causano il riavvio della macchina virtuale, vengono implementati in modo sicuro e gli aggiornamenti non riusciti vengono ripristinati immediatamente per garantire un'elevata disponibilità e affidabilità del servizio.
    • In questo modo, si garantisce che le macchine virtuali esistenti rimangano sicure e aggiornate, tramite l’aggiornamento automatico alla versione secondaria più recente.

È consigliabile abilitare entrambe le proprietà per mantenere tutte le macchine virtuali sicure e aggiornate.

Gli aggiornamenti alle versioni principali dell'estensione non vengono mai eseguiti automaticamente da entrambe le proprietà perché potrebbero causare modifiche che causano un’interruzione. È necessario impostare manualmente TypeHandlerVersion su una versione principale e aggiornare manualmente ogni macchina virtuale esistente alla versione principale più recente.

Passaggi successivi