Vytvoření fondu Azure Batch s automatickým upgradem operačního systému (OS)

Při vytváření fondu Azure Batch můžete fond zřídit pomocí uzlů s povoleným automatickým upgradem operačního systému. Tento článek vysvětluje, jak nastavit fond Batch s automatickým upgradem operačního systému.

Proč používat automatický upgrade operačního systému?

Automatický upgrade operačního systému se používá k implementaci strategie automatického upgradu operačního systému a řízení v rámci fondů Azure Batch. Tady je několik důvodů použití automatického upgradu operačního systému:

  • Zabezpečení. Automatický upgrade operačního systému zajišťuje včasné opravy chyb zabezpečení a problémů se zabezpečením v rámci image operačního systému, aby se zlepšilo zabezpečení výpočetních prostředků. Pomáhá zabránit potenciálním ohrožením zabezpečení v ohrožení aplikací a dat.
  • Minimalizované přerušení dostupnosti Automatický upgrade operačního systému se používá k minimalizaci přerušení dostupnosti výpočetních uzlů během upgradů operačního systému. Toho se dosahuje prostřednictvím odložení upgradu pracujícího s plánováním úkolů a podpory pro postupné upgrady, což zajišťuje, aby úlohy zaznamenaly minimální přerušení.
  • Flexibilita Automatický upgrade operačního systému umožňuje nakonfigurovat strategii automatického upgradu operačního systému, včetně koordinace upgradu založeného na procentech a podpory vrácení zpět. To znamená, že můžete strategii upgradu přizpůsobit tak, aby splňovala vaše konkrétní požadavky na výkon a dostupnost.
  • Řízení. Automatický upgrade operačního systému poskytuje kontrolu nad strategií upgradu operačního systému, která zajišťuje zabezpečené nasazení upgradu s podporou úloh. Konfigurace zásad můžete přizpůsobit tak, aby vyhovovaly konkrétním potřebám vaší organizace.

Stručně řečeno, použití automatického upgradu operačního systému pomáhá zlepšit zabezpečení, minimalizovat přerušení dostupnosti a poskytovat větší kontrolu a flexibilitu pro vaše úlohy.

Jak funguje automatický upgrade operačního systému?

Při upgradu imagí budou virtuální počítače ve fondu Azure Batch následovat zhruba stejný pracovní postup jako VirtualMachineScaleSets. Další informace o podrobných krocích zahrnutých v procesu automatického upgradu operačního systému pro VirtualMachineScaleSets najdete na stránce VirtualMachineScaleSet.

Pokud je však vlastnost automaticOSUpgradePolicy.osRollingUpgradeDeferral nastavená na hodnotu true a upgrade bude k dispozici, pokud je dávkový uzel aktivně spuštěný, upgrade se zpozdí, dokud se na uzlu nedokončí všechny úkoly.

Poznámka:

Pokud fond povolil osRollingUpgradeDeferral, jeho uzly se během procesu upgradu zobrazí jako stav upgrade . Mějte na paměti, že stav upgradu se zobrazí pouze při použití verze rozhraní API verze 2024-02-02-01 nebo novější. Pokud k volání GetTVM/ListTVM používáte starou verzi rozhraní API, bude uzel při upgradu ve stavu restartování .

Podporované image operačního systému

Pro automatický upgrade se v současné době podporují jenom určité image platformy operačního systému. Seznam podrobných imagí najdete na stránce VirtualMachineScaleSet.

Požadavky

  • Vlastnost verze image musí být nastavená na nejnovější verzi.
  • Pro rozhraní API služby Batch Management použijte rozhraní API verze 2024-02-01 nebo vyšší. Pro rozhraní API služby Batch použijte rozhraní API verze 2024-02-01.19.0 nebo vyšší.
  • Ujistěte se, že jsou k dispozici a aktualizovány externí prostředky zadané ve fondu. Mezi příklady patří identifikátor URI SAS pro spouštění datové části ve vlastnostech rozšíření virtuálního počítače, datová část v účtu úložiště, odkazování na tajné kódy v modelu a další.
  • Pokud používáte vlastnost virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates, musí být tato vlastnost nastavena na false v definici fondu. Vlastnost enableAutomaticUpdates umožňuje opravy v virtuálních počítačích, kde "služba Windows Update" aplikuje opravy operačního systému bez nahrazení disku s operačním systémem. S povolenými automatickými upgrady imagí operačního systému není potřeba provádět další opravy prostřednictvím služba Windows Update.

Další požadavky na vlastní image

  • Když se publikuje a replikuje nová verze image do oblasti tohoto fondu, virtuální počítače se upgradují na nejnovější verzi image Galerie výpočetních prostředků Azure. Pokud se nová image nereplikuje do oblasti, ve které je fond nasazený, instance virtuálních počítačů se neupgradují na nejnovější verzi. Replikace místních imagí umožňuje řídit zavedení nové image pro vaše virtuální počítače.
  • Nová verze image by neměla být vyloučena z nejnovější verze této image galerie. Verze imagí vyloučené z nejnovější verze image galerie se nebudou zavádět prostřednictvím automatického upgradu image operačního systému.

Konfigurace automatického upgradu operačního systému

Pokud máte v úmyslu implementovat automatické upgrady operačního systému v rámci fondu, je nezbytné nakonfigurovat pole UpgradePolicy během procesu vytváření fondu. Pokud chcete nakonfigurovat automatické upgrady imagí operačního systému, ujistěte se, že vlastnost automaticOSUpgradePolicy.enableAutomaticOSUpgrade je v definici fondu nastavená na true.

Poznámka:

Režim zásad upgradu a zásady automatického upgradu operačního systému jsou samostatná nastavení a řídí různé aspekty zřízené škálovací sady službou Azure Batch. Režim zásady upgradu určí, co se stane s existujícími instancemi ve škálovací sadě. Zásady automatického upgradu operačního systému ale umožňujíAutomaticOSUpgrade specifické pro image operačního systému a sledují změny, které vydavatel image provedl, a určuje, co se stane, když dojde k aktualizaci image.

Důležité

Pokud používáte předplatné uživatele, je důležité si uvědomit, že pro registraci předplatného se vyžaduje funkce předplatného Microsoft.Compute/RollingUpgradeDeferral . Pokud není tato funkce zaregistrovaná, nemůžete použít osRollingUpgradeDeferral . Pokud chcete tuto funkci povolit, zaregistrujte ji prosím ručně ve svém předplatném.

REST API

Následující příklad popisuje, jak vytvořit fond s automatickým upgradem operačního systému prostřednictvím rozhraní REST API:

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

Text požadavku

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

Následující fragment kódu ukazuje příklad použití klientské knihovny Batch .NET k vytvoření fondu automatického upgradu operačního systému prostřednictvím kódů jazyka C#. Další podrobnosti o batch .NET najdete v referenční dokumentaci.

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

Nejčastější dotazy

  • Přeruší se moje úkoly, pokud povolím automatický upgrade operačního systému?

    Úkoly se nenaruší, když je vlastnost automaticOSUpgradePolicy.osRollingUpgradeDeferral nastavená na hodnotu true. V takovém případě se upgrade odloží, dokud uzel nebude nečinný. Jinak se uzel upgraduje, když obdrží novou verzi operačního systému bez ohledu na to, jestli právě spouští úlohu nebo ne. Proto důrazně doporučujeme povolit automaticOSUpgradePolicy.osRollingUpgradeDeferral.

Další kroky

  • Naučte se používat spravovanou image k vytvoření fondu.
  • Naučte se používat Galerii výpočetních prostředků Azure k vytvoření fondu.