Automatisches Erweiterungsupgrade für VMs und Skalierungsgruppen in Azure

Das automatische Erweiterungsupgrade ist für Azure-VMs und Azure Virtual Machine Scale Sets verfügbar. Wenn das automatische Erweiterungsupgrade für eine VM oder eine Skalierungsgruppe aktiviert ist, wird die Erweiterung automatisch aktualisiert, sobald der Erweiterungsherausgeber eine neue Version für diese Erweiterung freigibt.

Das automatische Erweiterungsupgrade verfügt über die folgenden Features:

  • Wird für Azure-VMs und Azure-Virtual Machine Scale Sets unterstützt.
  • Upgrades werden in einem verfügbarkeitsbasierten Bereitstellungsmodell angewendet.
  • Für eine VM-Skalierungsgruppe werden maximal 20 Prozent der virtuellen Computer in Skalierungsgruppen in einem einzelnen Batch aktualisiert. Die minimale Batchgröße ist ein virtueller Computer.
  • Unterstützt alle VM-Größen und sowohl Windows- als auch Linux-Erweiterungen.
  • Sie können automatische Upgrades jederzeit kündigen.
  • Das automatische Erweiterungsupgrade kann für Virtual Machine Scale Sets beliebiger Größe aktiviert werden.
  • Jede unterstützte Erweiterung wird einzeln registriert, und Sie können auswählen, welche Erweiterungen automatisch aktualisiert werden sollen.
  • Wird in allen Regionen der öffentlichen Cloud unterstützt.

Wie funktioniert das automatische Erweiterungsupgrade?

Der Erweiterungsupgradeprozess ersetzt die vorhandene Erweiterungsversion auf einer VM bei Veröffentlichung durch den Erweiterungsherausgeber durch eine neue Version derselben Erweiterung. Die Integrität der VM wird überwacht, nachdem die neue Erweiterung installiert wurde. Wenn sich der virtuelle Computer fünf Minuten nach dem Upgrade noch nicht in einem fehlerfreien Zustand befindet, wird für die Erweiterungsversion ein Rollback auf die vorherige Version ausgeführt.

Ein fehlerhaftes Erweiterungsupdate wird automatisch wiederholt. Ein Wiederholungsversuch wird regelmäßig nach einigen Tagen ohne Benutzereingriff automatisch durchgeführt.

Verfügbarkeitsupdates

Mit dem Verfügbarkeitsmodell für plattformorchestrierte Updates wird sichergestellt, dass die Verfügbarkeitskonfigurationen in Azure über mehrere Verfügbarkeitsstufen hinweg berücksichtigt werden.

Für eine Gruppe von virtuellen Computern, die aktualisiert werden, orchestriert die Azure-Plattform Updates wie folgt:

Über Regionen hinweg:

  • Ein Update wird phasenweise global in Azure ausgeführt, um Azure-weite Bereitstellungsausfälle zu vermeiden.
  • Eine „Phase“ kann sich über eine oder mehrere Regionen erstrecken, und ein Update ist nur dann Phasen übergreifend, wenn die in Betracht kommenden VMs in der vorherigen Phase erfolgreich aktualisiert wurden.
  • Geografisch gekoppelte Regionen werden nicht gleichzeitig aktualisiert und können sich nicht in der gleichen Regionsphase befinden.
  • Der Erfolg eines Updates wird durch die Nachverfolgung der Integrität nach dem Update einer VM gemessen. Die VM-Integrität wird durch Integritätsindikatoren der Plattform für die VM nachverfolgt. Für Virtual Machine Scale Sets wird die Integrität der VM durch Anwendungsintegritätstests oder die Anwendungsintegritätserweiterung nachverfolgt, wenn diese auf die Skalierungsgruppe angewendet werden.

Innerhalb einer Region:

  • VMs in verschiedenen Verfügbarkeitszonen werden nicht gleichzeitig mit demselben Update aktualisiert.
  • Einzelne virtuelle Computer, die nicht Teil einer Verfügbarkeitsgruppe sind, werden nach bestem Wissen in einem Batch zusammengefasst, um gleichzeitige Updates für alle virtuellen Computer in einem Abonnement zu vermeiden.

Innerhalb einer „Gruppe“:

  • Die virtuellen Computer in einer gemeinsamen Verfügbarkeitsgruppe oder Skalierungsgruppe werden nicht alle gleichzeitig aktualisiert.
  • VMs in einer gemeinsamen Verfügbarkeitsgruppe werden innerhalb der Grenzen der Updatedomäne aktualisiert, und VMs in mehreren Updatedomänen werden nicht gleichzeitig aktualisiert.
  • VMs in einer gemeinsamen VM-Skalierungsgruppe werden in Batches gruppiert und innerhalb der Grenzen von Upgradedomänen aktualisiert.

Upgradeprozess für Virtual Machine Scale Sets

  1. Vor Beginn des Upgradeprozesses vergewissert sich der Orchestrator, dass maximal 20 Prozent der virtuellen Computer in der gesamten Skalierungsgruppe fehlerhaft sind (unabhängig von der Ursache).

  2. Der Upgradeorchestrator identifiziert den Batch der VM-Instanzen, die aktualisiert werden sollen. Ein Upgradebatch kann maximal 20 % der VM-Gesamtzahl umfassen, eine minimale Batchgröße von einer VM vorausgesetzt.

  3. Für Skalierungsgruppen mit konfigurierten Anwendungsintegritätstests oder einer Anwendungsintegritätserweiterung wartet das Upgrade bis zu 5 Minuten (oder den konfigurierten Wert des Integritätstests) darauf, dass die VM fehlerfrei wird, bevor der nächste Batch aktualisiert wird. Wenn die Integrität eines virtuellen Computers nach einem Upgrade nicht wiederhergestellt wird, wird standardmäßig wieder die vorherige Erweiterungsversion auf dem virtuellen Computer installiert.

  4. Der Upgradeorchestrator verfolgt auch den Prozentsatz der VMs nach, die nach einem Upgrade fehlerhaft werden. Das Upgrade wird beendet, wenn während des Upgradeprozesses mehr als 20 Prozent der aktualisierten Instanzen fehlerhaft werden.

Das oben beschriebene Verfahren wird fortgesetzt, bis alle Instanzen in der Skalierungsgruppe aktualisiert sind.

Der Upgradeorchestrator für die Skalierungsgruppe überprüft die allgemeine Skalierungsgruppenintegrität, bevor die einzelnen Batches aktualisiert werden. Während eines Batch-Upgrades finden möglicherweise andere gleichzeitige geplante oder nicht geplante Wartungsaktivitäten statt, die die Integrität Ihrer virtuellen Skalierungsgruppencomputer beeinträchtigen könnten. Wenn in solchen Fällen mehr als 20 % der Instanzen der Skalierungsgruppe fehlerhaft werden, endet das Upgrade der Skalierungsgruppe am Ende des aktuellen Batches.

Unterstützte Erweiterungen

Das automatische Erweiterungsupgrade unterstützt die folgenden Erweiterungen (weitere werden regelmäßig hinzugefügt):

Aktivieren des automatischen Erweiterungsupgrades

Um das automatische Erweiterungsupgrade für eine Erweiterung zu aktivieren, müssen Sie sicherstellen, dass die Eigenschaft enableAutomaticUpgrade auf true festgelegt ist und jeder Erweiterungsdefinition einzeln hinzugefügt wird.

REST-API für Virtual Machines

Rufen Sie Folgendes auf, um das automatische Erweiterungsupgrade für eine Erweiterung (in diesem Beispiel die Dependency-Agent-Erweiterung) auf einem virtuellen Azure-Computer zu aktivieren:

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"
        }
}

REST-API für Virtual Machine Scale Sets

Verwenden Sie den folgenden Aufruf, um die Erweiterung dem Skalierungsgruppenmodell hinzuzufügen:

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 für Virtual Machines

Verwenden Sie das 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 für Virtual Machine Scale Sets

Verwenden Sie das Cmdlet Add-AzVmssExtension, um die Erweiterung dem Skalierungsgruppenmodell hinzuzufügen:

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

Aktualisieren Sie die Skalierungsgruppe nach dem Hinzufügen der Erweiterung mithilfe von Update-AzVmss.

Azure-Befehlszeilenschnittstelle für virtuelle Computer

Verwenden Sie das 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

Azure CLI für Virtual Machine Scale Sets

Verwenden Sie das Cmdlet az vmss extension set, um die Erweiterung dem Skalierungsgruppenmodell hinzuzufügen:

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

ARM-Vorlage für virtuelle Computer

Im folgenden Beispiel wird beschrieben, wie automatische Erweiterungsupgrades für eine Erweiterung (in diesem Beispiel die Dependency-Agent-Erweiterung) auf einer virtuellen Maschine mithilfe von Azure Resource Manager festgelegt werden

{
    "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"
        }
    }
}

ARM-Vorlage für VM-Skalierungsgruppen

Verwenden Sie das folgende Beispiel, um das automatische Erweiterungsupgrade für die Erweiterung innerhalb des Skalierungsgruppenmodells festzulegen:

{
   "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,
                     }
                }]
    	    }
    	}
    }
}

Erweiterungsupgrades mit mehreren Erweiterungen

Für eine VM oder ein Virtual Machine Scale Set können mehrere Erweiterungen mit automatischem Erweiterungsupgrade aktiviert sein. Dieselbe VM oder Skalierungsgruppe kann auch über andere Erweiterungen verfügen, ohne dass das automatische Erweiterungsupgrade aktiviert ist.

Wenn für einen virtuellen Computer mehrere Erweiterungsupgrades verfügbar sind, werden die Upgrades möglicherweise in einem Batch zusammengefasst, aber jedes Erweiterungsupgrade wird einzeln auf einem virtuellen Computer angewendet. Ein Fehler bei einer Erweiterung hat keine Auswirkung auf die anderen Erweiterungen, für die möglicherweise gerade ein Upgrade durchgeführt wird. Wenn z. B. zwei Erweiterungen für ein Upgrade geplant sind und das erste Erweiterungsupgrade fehlschlägt, wird die zweite Erweiterung trotzdem aktualisiert.

Automatische Erweiterungsupgrades können auch angewendet werden, wenn für eine VM oder eine VM-Skalierungsgruppe mehrere Erweiterungen mit Erweiterungssequenzierung konfiguriert sind. Erweiterungssequenzierung gilt für die erstmalige Bereitstellung der VM, und alle zukünftigen Erweiterungsupgrades für eine Erweiterung werden unabhängig voneinander angewendet.

Nächste Schritte