Share via


Een Azure Batch-pool maken met automatische besturingssysteemupgrade (OS)

Wanneer u een Azure Batch-pool maakt, kunt u de pool inrichten met knooppunten waarvoor automatische upgrade van het besturingssysteem is ingeschakeld. In dit artikel wordt uitgelegd hoe u een Batch-pool instelt met automatische upgrade van het besturingssysteem.

Waarom automatische upgrade van het besturingssysteem gebruiken?

Automatische upgrade van het besturingssysteem wordt gebruikt voor het implementeren van een strategie voor automatische upgrade van het besturingssysteem en het beheer binnen Azure Batch-pools. Hier volgen enkele redenen voor het gebruik van automatische upgrade van het besturingssysteem:

  • Beveiliging. Automatische upgrade van het besturingssysteem zorgt voor tijdige patching van beveiligingsproblemen en beveiligingsproblemen binnen de installatiekopieën van het besturingssysteem om de beveiliging van rekenresources te verbeteren. Het helpt potentiële beveiligingsproblemen te voorkomen bij het vormen van een bedreiging voor toepassingen en gegevens.
  • Geminimaliseerde onderbreking van beschikbaarheid. Automatische upgrade van het besturingssysteem wordt gebruikt om de beschikbaarheidsonderbreking van rekenknooppunten tijdens upgrades van het besturingssysteem te minimaliseren. Dit wordt bereikt door taakplanningsbewuste upgrade uitstellen en ondersteuning voor rolling upgrades, zodat workloads een minimale onderbreking ervaren.
  • Flexibiliteit. Met automatische upgrade van het besturingssysteem kunt u uw strategie voor automatische besturingssysteemupgrade configureren, inclusief op percentage gebaseerde upgradecoördinatie en terugdraaiondersteuning. Dit betekent dat u uw upgradestrategie kunt aanpassen om te voldoen aan uw specifieke prestatie- en beschikbaarheidsvereisten.
  • Beheersen. Automatische upgrade van het besturingssysteem biedt u controle over de upgradestrategie van uw besturingssysteem om veilige, workloadbewuste upgrade-implementaties te garanderen. U kunt uw beleidsconfiguraties aanpassen aan de specifieke behoeften van uw organisatie.

Kortom, het gebruik van Automatische besturingssysteemupgrade helpt de beveiliging te verbeteren, beschikbaarheidsonderbrekingen te minimaliseren en zowel meer controle als flexibiliteit te bieden voor uw workloads.

Hoe werkt de automatische upgrade van het besturingssysteem?

Wanneer u installatiekopieën bijwerkt, volgen VM's in Azure Batch-pool ongeveer dezelfde werkstroom als VirtualMachineScaleSets. Zie de pagina VirtualMachineScaleSet voor meer informatie over de gedetailleerde stappen die zijn betrokken bij het upgradeproces voor het automatisch besturingssysteem voor VirtualMachineScaleSets.

Als automaticOSUpgradePolicy.osRollingUpgradeDeferral echter is ingesteld op 'true' en er een upgrade beschikbaar is wanneer een batchknooppunt actief taken uitvoert, wordt de upgrade uitgesteld totdat alle taken op het knooppunt zijn voltooid.

Notitie

Als een pool osRollingUpgradeDeferral heeft ingeschakeld, worden de knooppunten weergegeven als upgradestatus tijdens het upgradeproces. Houd er rekening mee dat de status van de upgradeos alleen wordt weergegeven wanneer u de API-versie van 2024-02-01 of hoger gebruikt. Als u een oude API-versie gebruikt om GetTVM/ListTVM aan te roepen, heeft het knooppunt de status Opnieuw opstarten bij het upgraden.

Ondersteunde installatiekopieën van het besturingssysteem

Alleen bepaalde installatiekopieën van het besturingssysteemplatform worden momenteel ondersteund voor automatische upgrade. Voor een gedetailleerde lijst met afbeeldingen kunt u de pagina VirtualMachineScaleSet ophalen.

Vereisten

  • De versie-eigenschap van de installatiekopieën moet zijn ingesteld op de meest recente versie.
  • Voor Batch Management-API gebruikt u API-versie 2024-02-01 of hoger. Voor Batch Service-API gebruikt u API-versie 2024-02-01.19.0 of hoger.
  • Zorg ervoor dat externe resources die zijn opgegeven in de pool beschikbaar en bijgewerkt zijn. Voorbeelden zijn SAS-URI voor het opstarten van nettolading in eigenschappen van VM-extensies, nettolading in opslagaccount, verwijzing naar geheimen in het model en meer.
  • Als u de eigenschap virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates gebruikt, moet deze eigenschap zijn ingesteld op false in de pooldefinitie. De eigenschap enableAutomaticUpdates schakelt patching in-VM in waarbij 'Windows Update' patches van het besturingssysteem toepast zonder de besturingssysteemschijf te vervangen. Als automatische upgrades van installatiekopieën van het besturingssysteem zijn ingeschakeld, is een extra patchproces via Windows Update niet vereist.

Aanvullende vereisten voor aangepaste installatiekopieën

  • Wanneer een nieuwe versie van de installatiekopieën wordt gepubliceerd en gerepliceerd naar de regio van die pool, worden de VM's bijgewerkt naar de nieuwste versie van de installatiekopieën van de Azure Compute Gallery. Als de nieuwe installatiekopie niet wordt gerepliceerd naar de regio waar de pool is geïmplementeerd, worden de VM-exemplaren niet geüpgraded naar de nieuwste versie. Met replicatie van regionale installatiekopieën kunt u de implementatie van de nieuwe installatiekopieën voor uw VM's beheren.
  • De nieuwe versie van de installatiekopieën mag niet worden uitgesloten van de nieuwste versie voor die galerie-installatiekopieën. Installatiekopieën die zijn uitgesloten van de nieuwste versie van de galerie-installatiekopieën, worden niet geïmplementeerd via automatische upgrade van installatiekopieën van het besturingssysteem.

Automatische upgrade van besturingssysteem configureren

Als u automatische upgrades van het besturingssysteem binnen een pool wilt implementeren, is het essentieel dat u het veld UpgradePolicy configureert tijdens het maken van de pool. Als u automatische upgrades van installatiekopieën van het besturingssysteem wilt configureren, moet u ervoor zorgen dat de eigenschap automaticOSUpgradePolicy.enableAutomaticOSUpgrade is ingesteld op 'true' in de pooldefinitie.

Notitie

De upgradebeleidsmodus en het beleid voor automatische upgrade van het besturingssysteem zijn afzonderlijke instellingen en beheren verschillende aspecten van de ingerichte schaalset door Azure Batch. De modus Upgradebeleid bepaalt wat er gebeurt met bestaande exemplaren in de schaalset. Automatische upgradebeleid voor het besturingssysteem enableAutomaticOSUpgrade is echter specifiek voor de installatiekopieën van het besturingssysteem en houdt wijzigingen bij die de uitgever van de installatiekopieën heeft aangebracht en bepaalt wat er gebeurt wanneer er een update van de installatiekopieën wordt uitgevoerd.

Belangrijk

Als u een gebruikersabonnement gebruikt, is het essentieel om te weten dat een abonnementsfunctie Microsoft.Compute/RollingUpgradeDeferral vereist is om uw abonnement te registreren. U kunt osRollingUpgradeDeferral alleen gebruiken als deze functie is geregistreerd. Als u deze functie wilt inschakelen, moet u deze handmatig registreren bij uw abonnement.

REST-API

In het volgende voorbeeld wordt beschreven hoe u een pool maakt met automatische upgrade van het besturingssysteem via REST API:

PUT https://management.azure.com/subscriptions/<subscriptionid>/resourceGroups/<resourcegroupName>/providers/Microsoft.Batch/batchAccounts/<batchaccountname>/pools/<poolname>?api-version=2024-02-01

Aanvraagbody

{
    "name": "test1",
    "type": "Microsoft.Batch/batchAccounts/pools",
    "parameters": {
        "properties": {
            "vmSize": "Standard_d4s_v3",
            "deploymentConfiguration": {
                "virtualMachineConfiguration": {
                    "imageReference": {
                        "publisher": "MicrosoftWindowsServer",
                        "offer": "WindowsServer",
                        "sku": "2019-datacenter-smalldisk",
                        "version": "latest"
                    },
                    "nodePlacementConfiguration": {
                        "policy": "Zonal"
                    },
                    "nodeAgentSKUId": "batch.node.windows amd64",
                    "windowsConfiguration": {
                        "enableAutomaticUpdates": false
                    }
                }
            },
            "scaleSettings": {
                "fixedScale": {
                    "targetDedicatedNodes": 2,
                    "targetLowPriorityNodes": 0
                }
            },
            "upgradePolicy": {
                "mode": "Automatic",
                "automaticOSUpgradePolicy": {
                    "disableAutomaticRollback": true,
                    "enableAutomaticOSUpgrade": true,
                    "useRollingUpgradePolicy": true,
                    "osRollingUpgradeDeferral": true
                },
                "rollingUpgradePolicy": {
                    "enableCrossZoneUpgrade": true,
                    "maxBatchInstancePercent": 20,
                    "maxUnhealthyInstancePercent": 20,
                    "maxUnhealthyUpgradedInstancePercent": 20,
                    "pauseTimeBetweenBatches": "PT0S",
                    "prioritizeUnhealthyInstances": false,
                    "rollbackFailedInstancesOnPolicyBreach": false
                }
            }
        }
    }
}

SDK (C#)

In het volgende codefragment ziet u een voorbeeld van het gebruik van de Batch .NET-clientbibliotheek voor het maken van een pool met Automatische upgrade van het besturingssysteem via C#-codes. Raadpleeg de referentiedocumentatie voor meer informatie over Batch .NET.

public async Task CreateUpgradePolicyPool()
{
     // Authenticate
     var clientId = Environment.GetEnvironmentVariable("CLIENT_ID");
     var clientSecret = Environment.GetEnvironmentVariable("CLIENT_SECRET");
     var tenantId = Environment.GetEnvironmentVariable("TENANT_ID");
     var subscriptionId = Environment.GetEnvironmentVariable("SUBSCRIPTION_ID");
     ClientSecretCredential credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
     ArmClient client = new ArmClient(credential, subscriptionId);
 
     // Get an existing Batch account
     string resourceGroupName = "testrg";
     string accountName = "testaccount";
     ResourceIdentifier batchAccountResourceId = BatchAccountResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, accountName);
     BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId);
 
     // get the collection of this BatchAccountPoolResource
     BatchAccountPoolCollection collection = batchAccount.GetBatchAccountPools();
 
     // Define the pool
     string poolName = "testpool";
     BatchAccountPoolData data = new BatchAccountPoolData()
     {
         VmSize = "Standard_d4s_v3",
         DeploymentConfiguration = new BatchDeploymentConfiguration()
         {
             VmConfiguration = new BatchVmConfiguration(new BatchImageReference()
             {
                 Publisher = "MicrosoftWindowsServer",
                 Offer = "WindowsServer",
                 Sku = "2019-datacenter-smalldisk",
                 Version = "latest",
             },
             nodeAgentSkuId: "batch.node.windows amd64")
             {
                 NodePlacementPolicy = BatchNodePlacementPolicyType.Zonal,
                 IsAutomaticUpdateEnabled = false
             },
         },
         ScaleSettings = new BatchAccountPoolScaleSettings()
         {
             FixedScale = new BatchAccountFixedScaleSettings()
             {
                 TargetDedicatedNodes = 2,
                 TargetLowPriorityNodes = 0,
             },
         },
         UpgradePolicy = new UpgradePolicy()
         {
             Mode = UpgradeMode.Automatic,
             AutomaticOSUpgradePolicy = new AutomaticOSUpgradePolicy()
             {
                 DisableAutomaticRollback = true,
                 EnableAutomaticOSUpgrade = true,
                 UseRollingUpgradePolicy = true,
                 OSRollingUpgradeDeferral = true
             },
             RollingUpgradePolicy = new RollingUpgradePolicy()
             {
                 EnableCrossZoneUpgrade = true,
                 MaxBatchInstancePercent = 20,
                 MaxUnhealthyInstancePercent = 20,
                 MaxUnhealthyUpgradedInstancePercent = 20,
                 PauseTimeBetweenBatches = "PT0S",
                 PrioritizeUnhealthyInstances = false,
                 RollbackFailedInstancesOnPolicyBreach = false,
             }
         }
     };
 
     ArmOperation<BatchAccountPoolResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, poolName, data);
     BatchAccountPoolResource result = lro.Value;
 
     // the variable result is a resource, you could call other operations on this instance as well
     // but just for demo, we get its data from this resource instance
     BatchAccountPoolData resourceData = result.Data;
     // for demo we just print out the id
     Console.WriteLine($"Succeeded on id: {resourceData.Id}");
}

Veelgestelde vragen

  • Worden mijn taken onderbroken als ik Automatische upgrade van het besturingssysteem heb ingeschakeld?

    Taken worden niet onderbroken wanneer automaticOSUpgradePolicy.osRollingUpgradeDeferral is ingesteld op 'true'. In dat geval wordt de upgrade uitgesteld totdat het knooppunt inactief wordt. Anders wordt het knooppunt bijgewerkt wanneer het een nieuwe versie van het besturingssysteem ontvangt, ongeacht of het momenteel een taak uitvoert of niet. Daarom adviseren we het inschakelen van automaticOSUpgradePolicy.osRollingUpgradeDeferral.

Volgende stappen