Automatische extensie-upgrade voor VM's en schaalsets in Azure

Automatische extensie-upgrade is beschikbaar voor Virtuele Azure-machines en Virtuele-machineschaalsets van Azure. Wanneer automatische extensie-upgrade is ingeschakeld op een virtuele machine of schaalset, wordt de extensie automatisch bijgewerkt wanneer de uitgever van de extensie een nieuwe versie voor die extensie publiceert.

Automatische extensie-upgrade heeft de volgende functies:

  • Ondersteund voor Virtuele Azure-machines en Virtuele-machineschaalsets van Azure.
  • Upgrades worden toegepast in een implementatiemodel voor beschikbaarheids eerst.
  • Voor een virtuele-machineschaalset wordt niet meer dan 20% van de virtuele machines van de schaalset bijgewerkt in één batch. De minimale batchgrootte is één virtuele machine.
  • Werkt voor alle VM-grootten en voor zowel Windows- als Linux-extensies.
  • U kunt zich op elk gewenst moment afmelden voor automatische upgrades.
  • Automatische uitbreidingsupgrade kan worden ingeschakeld voor virtuele-machineschaalsets van elke grootte.
  • Elke ondersteunde extensie wordt afzonderlijk geregistreerd en u kunt kiezen welke extensies automatisch moeten worden bijgewerkt.
  • Ondersteund in alle openbare cloudregio's.

Hoe werkt automatische extensie-upgrade?

Het upgradeproces van de extensie vervangt de bestaande extensieversie op een VIRTUELE machine door een nieuwe versie van dezelfde extensie wanneer deze wordt gepubliceerd door de uitgever van de extensie. De status van de virtuele machine wordt gecontroleerd nadat de nieuwe extensie is geïnstalleerd. Als de VM niet in orde is binnen 5 minuten na voltooiing van de upgrade, wordt de extensieversie teruggedraaid naar de vorige versie.

Er wordt automatisch een mislukte extensie-update geprobeerd. Een nieuwe poging wordt elke paar dagen automatisch geprobeerd zonder tussenkomst van de gebruiker.

Beschikbaarheid-eerste updates

Het model availability-first voor platformindelingsupdates zorgt ervoor dat beschikbaarheidsconfiguraties in Azure worden gerespecteerd op meerdere beschikbaarheidsniveaus.

Voor een groep virtuele machines die een update ondergaan, organiseert het Azure-platform updates:

Tussen regio's:

  • Een update wordt wereldwijd over Azure verplaatst om gefaseerde implementatiefouten in Azure te voorkomen.
  • Een 'fase' kan een of meer regio's hebben en een update wordt alleen over fasen verplaatst als in aanmerking komende VM's in de vorige fase zijn bijgewerkt.
  • Geografisch gekoppelde regio's worden niet gelijktijdig bijgewerkt en kunnen zich niet in dezelfde regionale fase bevinden.
  • Het succes van een update wordt gemeten door de status van een VM na de update bij te houden. Vm-status wordt bijgehouden via platformstatusindicatoren voor de VIRTUELE machine. Voor virtuele-machineschaalsets wordt de vm-status bijgehouden via toepassingsstatustests of de extensie Application Health, indien toegepast op de schaalset.

Binnen een regio:

  • VM's in verschillende Beschikbaarheidszones worden niet gelijktijdig bijgewerkt met dezelfde update.
  • Enkele VM's die geen deel uitmaken van een beschikbaarheidsset, worden in batches gebatcheerd om gelijktijdige updates voor alle VM's in een abonnement te voorkomen.

Binnen een 'set':

  • Alle VM's in een gemeenschappelijke beschikbaarheidsset of schaalset worden niet gelijktijdig bijgewerkt.
  • VM's in een gemeenschappelijke beschikbaarheidsset worden bijgewerkt binnen de grenzen van het updatedomein en VM's in meerdere updatedomeinen worden niet gelijktijdig bijgewerkt.
  • VM's in een gemeenschappelijke virtuele-machineschaalset worden gegroepeerd in batches en bijgewerkt binnen de grenzen van het updatedomein.

Upgradeproces voor virtuele-machineschaalsets

  1. Voordat het upgradeproces wordt gestart, zorgt de orchestrator ervoor dat niet meer dan 20% van de VM's in de hele schaalset beschadigd is (om welke reden dan ook).

  2. De upgrade-orchestrator identificeert de batch vm-exemplaren die moeten worden bijgewerkt. Een upgradebatch kan maximaal 20% van het totale aantal VM's hebben, afhankelijk van een minimale batchgrootte van één virtuele machine.

  3. Voor schaalsets met geconfigureerde toepassingsstatustests of Application Health-extensie wacht de upgrade tot 5 minuten (of de gedefinieerde configuratie van de statustest) voordat de VM in orde is voordat de volgende batch wordt bijgewerkt. Als een VM na een upgrade de status niet herstelt, wordt de vorige extensieversie op de virtuele machine standaard opnieuw geïnstalleerd.

  4. De upgrade-orchestrator houdt ook het percentage VM's bij dat na een upgrade beschadigd raakt. De upgrade stopt als meer dan 20% van de bijgewerkte exemplaren beschadigd raken tijdens het upgradeproces.

Het bovenstaande proces wordt voortgezet totdat alle exemplaren in de schaalset zijn bijgewerkt.

De upgrade-orchestrator van de schaalset controleert de algehele status van de schaalset voordat elke batch wordt bijgewerkt. Tijdens een batchupgrade kunnen er andere gelijktijdig geplande of ongeplande onderhoudsactiviteiten zijn die van invloed kunnen zijn op de status van de virtuele machines van uw schaalset. Als in dergelijke gevallen meer dan 20% van de exemplaren van de schaalset beschadigd raken, stopt de upgrade van de schaalset aan het einde van de huidige batch.

Ondersteunde extensies

Automatische extensie-upgrade ondersteunt de volgende extensies (en meer worden periodiek toegevoegd):

Automatische extensie-upgrade inschakelen

Als u automatische uitbreidingsupgrade voor een extensie wilt inschakelen, moet u ervoor zorgen dat de eigenschap enableAutomaticUpgrade afzonderlijk is ingesteld true op en wordt toegevoegd aan elke extensiedefinitie.

REST API voor virtuele machines

Gebruik de volgende aanroep om automatische extensie-upgrade in te schakelen voor een extensie (in dit voorbeeld de afhankelijkheidsagentextensie) op een Virtuele Azure-machine:

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 voor virtuele-machineschaalsets

Gebruik de volgende aanroep om de extensie toe te voegen aan het schaalsetmodel:

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 voor virtuele machines

Gebruik de 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 voor virtuele-machineschaalsets

Gebruik de cmdlet Add-AzVmssExtension om de extensie toe te voegen aan het schaalsetmodel:

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

Werk de schaalset bij met update-AzVmss nadat u de extensie hebt toegevoegd.

Azure CLI voor Virtual Machines

Gebruik de 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 voor virtuele-machineschaalsets

Gebruik de cmdlet az vmss extension set om de extensie toe te voegen aan het schaalsetmodel:

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-sjabloon voor virtuele machines

In het volgende voorbeeld wordt beschreven hoe u automatische extensie-upgrades instelt voor een extensie (Afhankelijkheidsagentextensie in dit voorbeeld) op een virtuele machine met behulp van 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"
        }
    }
}

ARM-sjabloon voor virtuele-machineschaalsets

Gebruik het volgende voorbeeld om automatische uitbreidingsupgrade in te stellen voor de extensie binnen het schaalsetmodel:

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

Uitbreidingsupgrades met meerdere extensies

Een VM of virtuele-machineschaalset kan meerdere extensies hebben waarvoor automatische uitbreidingsupgrade is ingeschakeld. Dezelfde VIRTUELE machine of schaalset kan ook andere extensies hebben zonder automatische uitbreidingsupgrade ingeschakeld.

Als er meerdere uitbreidingsupgrades beschikbaar zijn voor een virtuele machine, kunnen de upgrades samen worden gebatcheerd, maar wordt elke extensie-upgrade afzonderlijk toegepast op een virtuele machine. Een fout op de ene extensie heeft geen invloed op de andere extensies die mogelijk worden geupdate. Als er bijvoorbeeld twee extensies zijn gepland voor een upgrade en de eerste extensie-upgrade mislukt, wordt de tweede extensie nog steeds bijgewerkt.

Automatische uitbreidingsupgrades kunnen ook worden toegepast wanneer een VM of virtuele-machineschaalset meerdere extensies heeft geconfigureerd met extensievolgorde. Extensievolgorde is van toepassing voor de eerste implementatie van de virtuele machine en toekomstige uitbreidingsupgrades op een extensie worden onafhankelijk van elkaar toegepast.

Volgende stappen