Tworzenie puli usługi Azure Batch z automatycznym uaktualnieniem systemu operacyjnego
Podczas tworzenia puli usługi Azure Batch można aprowizować pulę z węzłami z włączonym automatycznym uaktualnianiem systemu operacyjnego. W tym artykule wyjaśniono, jak skonfigurować pulę usługi Batch przy użyciu automatycznego uaktualniania systemu operacyjnego.
Dlaczego warto używać automatycznego uaktualniania systemu operacyjnego?
Automatyczne uaktualnianie systemu operacyjnego służy do implementowania strategii automatycznego uaktualniania systemu operacyjnego i kontroli w pulach usługi Azure Batch. Oto kilka powodów używania automatycznego uaktualniania systemu operacyjnego:
- Zabezpieczenia. Automatyczne uaktualnianie systemu operacyjnego zapewnia terminowe stosowanie poprawek luk w zabezpieczeniach i problemów z zabezpieczeniami w obrazie systemu operacyjnego w celu zwiększenia bezpieczeństwa zasobów obliczeniowych. Pomaga zapobiegać potencjalnym lukom w zabezpieczeniach stwarzającym zagrożenie dla aplikacji i danych.
- Zminimalizowane zakłócenia dostępności. Automatyczne uaktualnianie systemu operacyjnego służy do zminimalizowania zakłóceń dostępności węzłów obliczeniowych podczas uaktualniania systemu operacyjnego. Jest on osiągany za pomocą odroczenia uaktualnienia obsługującego planowanie zadań i obsługi uaktualnień stopniowego, dzięki czemu obciążenia mają minimalne zakłócenia.
- Elastyczność Automatyczne uaktualnianie systemu operacyjnego umożliwia skonfigurowanie strategii automatycznego uaktualniania systemu operacyjnego, w tym procentowej koordynacji uaktualniania i obsługi wycofywania. Oznacza to, że możesz dostosować strategię uaktualniania, aby spełnić określone wymagania dotyczące wydajności i dostępności.
- Kontrola. Automatyczne uaktualnianie systemu operacyjnego zapewnia kontrolę nad strategią uaktualniania systemu operacyjnego w celu zapewnienia bezpiecznych wdrożeń uaktualnień obsługujących obciążenia. Konfiguracje zasad można dostosować tak, aby spełniały określone potrzeby organizacji.
Podsumowując, użycie automatycznego uaktualniania systemu operacyjnego pomaga zwiększyć bezpieczeństwo, zminimalizować zakłócenia dostępności i zapewnić większą kontrolę i elastyczność obciążeń.
Jak działa automatyczne uaktualnianie systemu operacyjnego?
Podczas uaktualniania obrazów maszyny wirtualne w puli usługi Azure Batch będą zgodne z mniej więcej tym samym przepływem pracy co zestawy VirtualMachineScaleSets. Aby dowiedzieć się więcej na temat szczegółowych kroków związanych z procesem automatycznego uaktualniania systemu operacyjnego dla zestawów VirtualMachineScaleSet, możesz zapoznać się ze stroną VirtualMachineScaleSet.
Jeśli jednak ustawienie automaticOSUpgradePolicy.osRollingUpgradeDeferral ma wartość "true", a uaktualnienie stanie się dostępne, gdy węzeł wsadowy aktywnie uruchamia zadania, uaktualnienie zostanie opóźnione do momentu ukończenia wszystkich zadań w węźle.
Uwaga
Jeśli pula włączyła funkcję osRollingUpgradeDeferral, jego węzły będą wyświetlane jako stan uaktualniania podczas procesu uaktualniania. Należy pamiętać, że stan uaktualniania będzie wyświetlany tylko wtedy, gdy używasz interfejsu API w wersji 2024-02-01 lub nowszej. Jeśli używasz starej wersji interfejsu API do wywołania funkcji GetTVM/ListTVM, węzeł będzie w stanie ponownego uruchomienia podczas uaktualniania.
Obsługiwane obrazy systemu operacyjnego
W przypadku automatycznego uaktualniania są obecnie obsługiwane tylko niektóre obrazy platformy systemu operacyjnego. Aby uzyskać szczegółową listę obrazów, możesz pobrać ze strony VirtualMachineScaleSet.
Wymagania
- Właściwość version obrazu musi być ustawiona na najnowszą.
- W przypadku interfejsu API zarządzania usługą Batch użyj interfejsu API w wersji 2024-02-01 lub nowszej. W przypadku interfejsu API usługi Batch użyj interfejsu API w wersji 2024-02-01.19.0 lub nowszej.
- Upewnij się, że zasoby zewnętrzne określone w puli są dostępne i zaktualizowane. Przykłady obejmują identyfikator URI sygnatury dostępu współdzielonego dla ładowania rozruchowego we właściwościach rozszerzenia maszyny wirtualnej, ładunku na koncie magazynu, odwołania do wpisów tajnych w modelu i nie tylko.
- Jeśli używasz właściwości virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates, ta właściwość musi mieć wartość "false" w definicji puli. Właściwość enableAutomaticUpdates umożliwia stosowanie poprawek na maszynie wirtualnej, gdzie "Windows Update" stosuje poprawki systemu operacyjnego bez zastępowania dysku systemu operacyjnego. W przypadku włączenia automatycznych uaktualnień obrazów systemu operacyjnego dodatkowy proces stosowania poprawek za pośrednictwem usługi Windows Update nie jest wymagany.
Dodatkowe wymagania dotyczące obrazów niestandardowych
- Gdy nowa wersja obrazu zostanie opublikowana i zreplikowana w regionie tej puli, maszyny wirtualne zostaną uaktualnione do najnowszej wersji obrazu galerii obliczeń platformy Azure. Jeśli nowy obraz nie jest replikowany do regionu, w którym wdrożono pulę, wystąpienia maszyn wirtualnych nie zostaną uaktualnione do najnowszej wersji. Replikacja obrazów regionalnych umożliwia kontrolowanie wdrożenia nowego obrazu dla maszyn wirtualnych.
- Nowa wersja obrazu nie powinna być wykluczona z najnowszej wersji tego obrazu galerii. Wersje obrazów wykluczone z najnowszej wersji obrazu galerii nie będą wdrażane za pośrednictwem automatycznego uaktualniania obrazu systemu operacyjnego.
Konfigurowanie automatycznego uaktualniania systemu operacyjnego
Jeśli zamierzasz zaimplementować automatyczne uaktualnienia systemu operacyjnego w puli, konieczne jest skonfigurowanie pola UpgradePolicy podczas procesu tworzenia puli. Aby skonfigurować automatyczne uaktualnienia obrazów systemu operacyjnego, upewnij się, że właściwość automaticOSUpgradePolicy.enableAutomaticOSUpgrade jest ustawiona na wartość "true" w definicji puli.
Uwaga
Tryb zasad uaktualniania i zasady automatycznego uaktualniania systemu operacyjnego są oddzielnymi ustawieniami i kontrolują różne aspekty aprowizowania zestawu skalowania przez usługę Azure Batch. Tryb zasad uaktualniania określi, co się stanie z istniejącymi wystąpieniami w zestawie skalowania. Jednak automatyczne zasady uaktualniania systemu operacyjnego EnableAutomaticOSUpgrade jest specyficzne dla obrazu systemu operacyjnego i śledzi zmiany wprowadzone przez wydawcę obrazu i określa, co się stanie, gdy istnieje aktualizacja obrazu.
Interfejs API REST
W poniższym przykładzie opisano sposób tworzenia puli przy użyciu automatycznego uaktualniania systemu operacyjnego za pośrednictwem interfejsu API REST:
PUT https://management.azure.com/subscriptions/<subscriptionid>/resourceGroups/<resourcegroupName>/providers/Microsoft.Batch/batchAccounts/<batchaccountname>/pools/<poolname>?api-version=2024-02-01
Treść żądania
{
"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
}
}
}
}
}
Zestaw SDK (C#)
Poniższy fragment kodu przedstawia przykład użycia biblioteki klienta platformy .NET usługi Batch do utworzenia puli automatycznego uaktualniania systemu operacyjnego za pomocą kodów języka C#. Aby uzyskać więcej informacji na temat platformy .NET usługi Batch, zapoznaj się z dokumentacją referencyjną.
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}");
}
Często zadawane pytania
Czy moje zadania będą zakłócane, jeśli włączono automatyczne uaktualnianie systemu operacyjnego?
Zadania nie będą zakłócane, gdy parametr automaticOSUpgradePolicy.osRollingUpgradeDeferral jest ustawiony na wartość "true". W takim przypadku uaktualnienie zostanie odłożone do momentu, aż węzeł stanie się bezczynny. W przeciwnym razie węzeł zostanie uaktualniony, gdy otrzyma nową wersję systemu operacyjnego, niezależnie od tego, czy jest aktualnie uruchomione zadanie, czy nie. Dlatego zdecydowanie zalecamy włączenie funkcji automaticOSUpgradePolicy.osRollingUpgradeDeferral.
Następne kroki
- Dowiedz się, jak utworzyć pulę przy użyciu obrazu zarządzanego.
- Dowiedz się, jak utworzyć pulę przy użyciu galerii obliczeń platformy Azure.