Share via


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-upgrade uitgevoerd. Een nieuwe poging wordt elke paar dagen automatisch geprobeerd zonder tussenkomst van de gebruiker.

Beschikbaarheid-eerste updates

Het model voor beschikbaarheid-eerste voor platformindelingen zorgt ervoor dat beschikbaarheidsconfiguraties in Azure worden gerespecteerd op meerdere beschikbaarheidsniveaus.

Voor een groep virtuele machines die een upgrade ondergaan, organiseert het Azure-platform upgrades:

Tussen regio's:

  • Een upgrade wordt wereldwijd over Azure verplaatst om gefaseerde implementatiefouten in Azure te voorkomen.
  • Een 'fase' kan een of meer regio's hebben en een upgrade 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 upgrade wordt gemeten door de status van een VM na de upgrade 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 niet gelijktijdig worden bijgewerkt met dezelfde upgrade.
  • Enkele VM's die geen deel uitmaken van een beschikbaarheidsset, worden in batches gebatcheerd om gelijktijdige upgrades 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 gerangschikt binnen de grenzen van het updatedomein. Upgradebeleidsregels die zijn gedefinieerd in de schaalset, worden tijdens de upgrade gehonoreerd. Als upgradebeleid is ingesteld op Handmatig, worden VM's niet bijgewerkt, zelfs niet als automatische uitbreidingsupgrade is ingeschakeld.

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. Definitie van upgradebeleid en Beschikbaarheidszones wordt overwogen tijdens het identificeren van de batch.

  3. Na de upgrade wordt de vm-status altijd gecontroleerd voordat u naar de volgende batch gaat. Voor schaalsets met geconfigureerde toepassingsstatustests of Application Health-extensie wordt ook de toepassingsstatus bewaakt. De upgrade wacht maximaal 5 minuten (of de gedefinieerde statustestconfiguratie) 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,
                     }
                }]
    	    }
    	}
    }
}

Azure-portal gebruiken

U kunt azure Portal - extensieblade gebruiken om automatische upgrade van extensies op bestaande virtuele machines en virtuele-machineschaalsets in te schakelen.

  1. Navigeer naar de blade Virtuele machines of virtuele-machinesschaalsets en selecteer de resource door op de naam ervan te klikken.
  2. Navigeer naar de blade 'Extenisons + applications' onder Instellingen om alle extensies weer te geven die op de resource zijn geïnstalleerd. In de kolom Status van automatische upgrade wordt aangegeven of automatische upgrade van de extensie is ingeschakeld, uitgeschakeld of niet wordt ondersteund.
  3. Ga naar de blade Extensiedetails door op de extensienaam te klikken. Schermopname van de blade Azure Portal - Extensie.
  4. Klik op Automatische upgrade inschakelen om automatische upgrade van de extensie in te schakelen. Deze knop kan ook worden gebruikt om automatische upgrade uit te schakelen wanneer dat nodig is.
    Schermopname van Azure Portal om automatische upgrade van de extensie in te schakelen.

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.

Verschil tussen enableAutomaticUpgrade en autoUpgradeMinorVersion

  1. AutoUpgradeMinorVersion:

    • Deze eigenschap wordt gebruikt tijdens het maken van een virtuele machine en tijdens het upgraden van de VM met een nieuwe configuratie.
    • Als deze is ingesteld op 'true', zorgt dit ervoor dat de meest recente secundaire versie van de extensie automatisch op de virtuele machine wordt geïnstalleerd.
    • Het overschrijft de TypeHandlerVersion met de nieuwste stabiele secundaire versie beschikbaar.
    • Als er tijdens het upgraden van de VM-configuratie een nieuwe secundaire versie beschikbaar is, wordt deze beschouwd als een configuratiewijziging en wordt de extensie opnieuw geïnstalleerd met de nieuwste secundaire versie.
    • Dit helpt om nieuw gemaakte VM's up-to-date te houden met de nieuwste stabiele secundaire extensieversie.
    • Als u de extensie handmatig wilt instellen op een specifieke versie, stelt u deze eigenschap in op 'false'.
  2. EnableAutomaticUpgrade:

    • Deze eigenschap is van invloed op bestaande virtuele machines.
    • Dit heeft geen invloed op de versie die is geïnstalleerd tijdens het maken van de VIRTUELE machine.
    • Als na het maken van de VIRTUELE machine de meest recente secundaire versie van de extensie niet wordt uitgevoerd, activeert het inschakelen van deze eigenschap een automatische upgrade.
    • Upgrades veroorzaken geen herstart van vm's, worden op een veilige manier geïmplementeerd en mislukte upgrades worden onmiddellijk teruggedraaid om hoge beschikbaarheid en betrouwbaarheid van de service te bieden.
    • Het zorgt ervoor dat bestaande VM's veilig en up-to-date blijven door ze automatisch bij te werken naar de nieuwste secundaire versie.

Het wordt opnieuw aanbevolen om beide eigenschappen in te schakelen om alle VM's veilig en up-to-date te houden.

Upgrades naar primaire extensieversies worden nooit automatisch uitgevoerd door een van beide eigenschappen, omdat deze wijzigingen kunnen veroorzaken die fouten veroorzaken. U moet de TypeHandlerVersion handmatig instellen op een primaire versie en elke bestaande VM handmatig upgraden naar de nieuwste primaire versie.

Volgende stappen