Dela via


Skapa en Azure Batch-pool med automatisk uppgradering av operativsystem (OS)

När du skapar en Azure Batch-pool kan du etablera poolen med noder som har automatisk operativsystemuppgradering aktiverad. Den här artikeln beskriver hur du konfigurerar en Batch-pool med automatisk operativsystemuppgradering.

Varför ska jag använda automatisk operativsystemuppgradering?

Automatisk uppgradering av operativsystem används för att implementera en strategi för automatisk uppgradering av operativsystemet och kontroll i Azure Batch-pooler. Här följer några orsaker till att du använder automatisk os-uppgradering:

  • Säkerhet. Automatisk operativsystemuppgradering säkerställer snabb korrigering av sårbarheter och säkerhetsproblem i operativsystemavbildningen, för att förbättra säkerheten för beräkningsresurser. Det hjälper till att förhindra att potentiella säkerhetsrisker utgör ett hot mot program och data.
  • Minimerade tillgänglighetsstörningar. Automatisk os-uppgradering används för att minimera tillgänglighetsavbrott för beräkningsnoder under OS-uppgraderingar. Det uppnås genom uppskjutande av aktivitetsschemaläggningsmedveten uppgradering och stöd för löpande uppgraderingar, vilket säkerställer att arbetsbelastningarna upplever minimala störningar.
  • Flexibilitet. Med automatisk operativsystemuppgradering kan du konfigurera din strategi för automatisk uppgradering av operativsystemet, inklusive procentbaserad uppgraderingssamordning och återställningsstöd. Det innebär att du kan anpassa din uppgraderingsstrategi så att den uppfyller dina specifika prestanda- och tillgänglighetskrav.
  • Kontroll. Automatisk uppgradering av operativsystem ger dig kontroll över uppgraderingsstrategin för operativsystemet för att säkerställa säkra, arbetsbelastningsmedvetna uppgraderingsdistributioner. Du kan skräddarsy dina principkonfigurationer för att uppfylla organisationens specifika behov.

Sammanfattningsvis bidrar användningen av automatisk os-uppgradering till att förbättra säkerheten, minimera tillgänglighetsstörningar och ge både större kontroll och flexibilitet för dina arbetsbelastningar.

Hur fungerar automatisk operativsystemuppgradering?

När du uppgraderar avbildningar följer virtuella datorer i Azure Batch-poolen ungefär samma arbetsflöde som VirtualMachineScaleSets. Mer information om de detaljerade stegen i processen för automatisk uppgradering av operativsystem för VirtualMachineScaleSets finns på sidan VirtualMachineScaleSet.

Men om automaticOSUpgradePolicy.osRollingUpgradeDeferral är inställt på "true" och en uppgradering blir tillgänglig när en batchnod aktivt kör uppgifter, fördröjs uppgraderingen tills alla aktiviteter har slutförts på noden.

Kommentar

Om en pool har aktiverat osRollingUpgradeDeferral visas dess noder som uppgraderingstillstånd under uppgraderingsprocessen. Observera att uppgraderingstillståndet endast visas när du använder API-versionen 2024-02-01 eller senare. Om du använder en gammal API-version för att anropa GetTVM/ListTVM är noden i ett omstartstillstånd när du uppgraderar.

Os-avbildningar som stöds

Endast vissa operativsystemplattformsavbildningar stöds för närvarande för automatisk uppgradering. För detaljerad avbildningslista kan du hämta från sidan VirtualMachineScaleSet.

Krav

  • Versionsegenskapen för avbildningen måste vara inställd på senaste.
  • För Batch Management API använder du API version 2024-02-01 eller senare. För Batch Service API använder du API-version 2024-02-01.19.0 eller senare.
  • Se till att externa resurser som anges i poolen är tillgängliga och uppdaterade. Exempel är SAS-URI för bootstrapping-nyttolast i egenskaper för VM-tillägg, nyttolast i lagringskonto, referens till hemligheter i modellen med mera.
  • Om du använder egenskapen virtualMachineConfiguration.windowsConfiguration.enableAutomatic Uppdateringar måste den här egenskapen anges till "false" i pooldefinitionen. Egenskapen enableAutomatic Uppdateringar möjliggör uppdatering på virtuell dator där "Windows Update" tillämpar operativsystemkorrigeringar utan att ersätta OS-disken. Med automatiska os-avbildningsuppgraderingar aktiverade krävs ingen extra korrigeringsprocess via Windows Update.

Ytterligare krav för anpassade avbildningar

  • När en ny version av avbildningen publiceras och replikeras till poolens region uppgraderas de virtuella datorerna till den senaste versionen av Azure Compute Gallery-avbildningen. Om den nya avbildningen inte replikeras till den region där poolen distribueras uppgraderas inte de virtuella datorinstanserna till den senaste versionen. Med regional bildreplikering kan du styra distributionen av den nya avbildningen för dina virtuella datorer.
  • Den nya avbildningsversionen bör inte undantas från den senaste versionen för den galleribilden. Avbildningsversioner som undantas från galleriavbildningens senaste version distribueras inte via automatisk operativsystemavbildningsuppgradering.

Konfigurera automatisk operativsystemuppgradering

Om du tänker implementera automatiska OS-uppgraderingar i en pool är det viktigt att konfigurera fältet UpgradePolicy när poolen skapas. Om du vill konfigurera automatiska os-avbildningsuppgraderingar kontrollerar du att egenskapen automaticOSUpgradePolicy.enableAutomaticOSUpgrade är inställd på "true" i pooldefinitionen.

Kommentar

Uppgraderingsprincipläge och Automatisk uppgraderingsprincip för operativsystem är separata inställningar och styr olika aspekter av den etablerade skalningsuppsättningen av Azure Batch. Läget Uppgradera princip avgör vad som händer med befintliga instanser i skalningsuppsättningen. Automatisk uppgraderingsprincip för operativsystem aktiveraAutomatiskOSUpgrade är dock specifik för OS-avbildningen och spårar ändringar som bildutgivaren har gjort och avgör vad som händer när det finns en uppdatering av avbildningen.

Viktigt!

Om du använder en användarprenumeration är det viktigt att observera att en prenumerationsfunktion Microsoft.Compute/RollingUpgradeDeferral krävs för att din prenumeration ska registreras. Du kan inte använda osRollingUpgradeDeferral om inte den här funktionen är registrerad. Om du vill aktivera den här funktionen registrerar du den manuellt i din prenumeration.

REST-API

I följande exempel beskrivs hur du skapar en pool med automatisk uppgradering av operativsystemet via REST API:

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

Begärandetext

{
    "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#)

Följande kodfragment visar ett exempel på hur du använder Batch .NET-klientbiblioteket för att skapa en pool med automatisk os-uppgradering via C#-koder. Mer information om Batch .NET finns i referensdokumentationen.

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

Vanliga frågor och svar

  • Kommer mina uppgifter att avbrytas om jag har aktiverat automatisk uppgradering av operativsystemet?

    Aktiviteter störs inte när automaticOSUpgradePolicy.osRollingUpgradeDeferral är inställt på "true". I så fall skjuts uppgraderingen upp tills noden blir inaktiv. Annars uppgraderas noden när den tar emot en ny os-version, oavsett om den för närvarande kör en uppgift eller inte. Därför rekommenderar vi starkt att du aktiverar automatiskOSUpgradePolicy.osRollingUpgradeDeferral.

Nästa steg