Otomatik İşletim Sistemi (OS) Yükseltmesi ile Azure Batch havuzu oluşturma
Azure Batch havuzu oluşturduğunuzda, havuzu Otomatik İşletim Sistemi Yükseltmesi'nin etkinleştirildiği düğümlerle sağlayabilirsiniz. Bu makalede, Otomatik İşletim Sistemi Yükseltmesi ile Batch havuzunun nasıl ayarlanacağı açıklanmaktadır.
Otomatik İşletim Sistemi Yükseltmesi neden kullanılır?
Otomatik İşletim Sistemi Yükseltmesi, Azure Batch Havuzları içinde otomatik bir işletim sistemi yükseltme stratejisi ve denetimi uygulamak için kullanılır. Otomatik İşletim Sistemi Yükseltmesi'ni kullanmanın bazı nedenleri şunlardır:
- Güvenlik. Otomatik İşletim Sistemi Yükseltmesi, işlem kaynaklarının güvenliğini artırmak için işletim sistemi görüntüsündeki güvenlik açıklarına ve güvenlik sorunlarına zamanında düzeltme eki uygulamanıza olanak sağlar. Olası güvenlik açıklarının uygulamalar ve veriler için tehdit oluşturmasını önlemeye yardımcı olur.
- En Aza İndirilen Kullanılabilirlik Kesintisi. Otomatik İşletim Sistemi Yükseltmesi, işletim sistemi yükseltmeleri sırasında işlem düğümlerinin kullanılabilirlik kesintisini en aza indirmek için kullanılır. Bu, iş yüklerinin en az kesinti yaşamasını sağlamak için görev zamanlamaya duyarlı yükseltme ertelemesi ve sıralı yükseltme desteği ile elde edilir.
- Esneklik. Otomatik İşletim Sistemi Yükseltmesi, yüzde tabanlı yükseltme koordinasyonu ve geri alma desteği dahil olmak üzere otomatik işletim sistemi yükseltme stratejinizi yapılandırmanıza olanak tanır. Bu, yükseltme stratejinizi özel performans ve kullanılabilirlik gereksinimlerinizi karşılayacak şekilde özelleştirebileceğiniz anlamına gelir.
- Kontrol. Otomatik İşletim Sistemi Yükseltmesi, güvenli, iş yüküne duyarlı yükseltme dağıtımları sağlamak için işletim sistemi yükseltme stratejiniz üzerinde denetim sağlar. İlke yapılandırmalarınızı kuruluşunuzun belirli gereksinimlerini karşılayacak şekilde uyarlayabilirsiniz.
Özetle, Otomatik İşletim Sistemi Yükseltmesi kullanımı güvenliği iyileştirmeye, kullanılabilirlik kesintilerini en aza indirmeye ve iş yükleriniz için hem daha fazla denetim hem de esneklik sağlamaya yardımcı olur.
Otomatik İşletim Sistemi Yükseltme nasıl çalışır?
Görüntüleri yükseltirken Azure Batch Havuzu'ndaki VM'ler, VirtualMachineScaleSets ile kabaca aynı iş akışını izler. VirtualMachineScaleSets için Otomatik İşletim Sistemi Yükseltme işleminde yer alan ayrıntılı adımlar hakkında daha fazla bilgi edinmek için VirtualMachineScaleSet sayfasına başvurabilirsiniz.
Ancak automaticOSUpgradePolicy.osRollingUpgradeDeferral değeri 'true' olarak ayarlanırsa ve toplu iş düğümü etkin bir şekilde görev çalıştırdığında yükseltme kullanılabilir duruma gelirse, düğümdeki tüm görevler tamamlanana kadar yükseltme geciktirilir.
Not
Bir havuz osRollingUpgradeDeferral'ı etkinleştirdiyse, yükseltme işlemi sırasında düğümleri yükseltme durumu olarak görüntülenir. Yükseltme durumunun yalnızca 2024-02-01 veya üzeri API sürümünü kullandığınızda gösterileceğini unutmayın. GetTVM/ListTVM'yi çağırmak için eski bir API sürümü kullanıyorsanız, yükseltme sırasında düğüm yeniden başlatma durumunda olur.
Desteklenen işletim sistemi görüntüleri
Şu anda otomatik yükseltme için yalnızca belirli işletim sistemi platformu görüntüleri desteklenmektedir. Ayrıntılı görüntüler listesi için VirtualMachineScaleSet sayfasından alabilirsiniz.
Gereksinimler
- Görüntünün sürüm özelliği en son olarak ayarlanmalıdır.
- Batch Management API'sinde API sürüm 2024-02-01 veya üzerini kullanın. Batch Hizmeti API'sinde API sürüm 2024-02-01.19.0 veya üzerini kullanın.
- Havuzda belirtilen dış kaynakların kullanılabilir ve güncelleştirildiğinden emin olun. Örnek olarak VM uzantısı özelliklerinde önyükleme yükü, depolama hesabında yük, modeldeki gizli dizilere başvuru ve daha fazlası için SAS URI'leri verilebilir.
- virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates özelliğini kullanıyorsanız, bu özellik havuz tanımında 'false' olarak ayarlanmalıdır. enableAutomaticUpdates özelliği, "Windows Update"in işletim sistemi diskini değiştirmeden işletim sistemi düzeltme eklerini uyguladığı VM içi düzeltme eki uygulamayı etkinleştirir. Otomatik işletim sistemi görüntüsü yükseltmeleri etkinleştirildiğinde, Windows Update aracılığıyla ek bir düzeltme eki uygulama işlemi gerekmez.
Özel görüntüler için ek gereksinimler
- Görüntünün yeni bir sürümü yayımlandığında ve bu havuzun bölgesine çoğaltıldığında, VM'ler Azure İşlem Galerisi görüntüsünün en son sürümüne yükseltilir. Yeni görüntü havuzun dağıtıldığı bölgeye çoğaltılmazsa, VM örnekleri en son sürüme yükseltilmeyecektir. Bölgesel görüntü çoğaltma, VM'leriniz için yeni görüntünün dağıtımını denetlemenize olanak tanır.
- Yeni görüntü sürümü, bu galeri görüntüsü için en son sürümden dışlanmamalıdır. Galeri görüntüsünün en son sürümünden dışlanan görüntü sürümleri, otomatik işletim sistemi görüntüsü yükseltmesi aracılığıyla dağıtılamaz.
Otomatik İşletim Sistemi Yükseltmesini Yapılandırma
Otomatik İşletim Sistemi Yükseltmelerini havuz içinde uygulamayı planlıyorsanız, havuz oluşturma işlemi sırasında UpgradePolicy alanını yapılandırmak önemlidir. Otomatik işletim sistemi görüntüsü yükseltmelerini yapılandırmak için, havuz tanımında automaticOSUpgradePolicy.enableAutomaticOSUpgrade özelliğinin 'true' olarak ayarlandığından emin olun.
Not
Yükseltme İlkesi modu ve Otomatik İşletim Sistemi Yükseltme İlkesi ayrı ayarlardır ve Azure Batch tarafından sağlanan ölçek kümesinin farklı yönlerini denetler. Yükseltme İlkesi modu, ölçek kümesindeki mevcut örneklere ne olacağını belirler. Ancak, Otomatik İşletim Sistemi Yükseltme İlkesi enableAutomaticOSUpgrade işletim sistemi görüntüsüne özgüdür ve görüntü yayımcısının yaptığı değişiklikleri izler ve görüntüde bir güncelleştirme olduğunda ne olacağını belirler.
Önemli
Kullanıcı aboneliği kullanıyorsanız, aboneliğinizin kaydedilmesi için Microsoft.Compute/RollingUpgradeDeferral abonelik özelliğinin gerekli olduğunu unutmayın. Bu özellik kaydedilmediği sürece osRollingUpgradeDeferral kullanamazsınız. Bu özelliği etkinleştirmek için lütfen aboneliğinize el ile kaydedin .
REST API
Aşağıdaki örnekte REST API aracılığıyla Otomatik İşletim Sistemi Yükseltmesi ile havuz oluşturma açıklanmaktadır:
PUT https://management.azure.com/subscriptions/<subscriptionid>/resourceGroups/<resourcegroupName>/providers/Microsoft.Batch/batchAccounts/<batchaccountname>/pools/<poolname>?api-version=2024-02-01
İstek Gövdesi
{
"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#)
Aşağıdaki kod parçacığında, Batch .NET istemci kitaplığını kullanarak C# kodları aracılığıyla Otomatik İşletim Sistemi Yükseltme havuzu oluşturma örneği gösterilmektedir. Batch .NET hakkında daha fazla ayrıntı için başvuru belgelerini görüntüleyin.
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}");
}
SSS
Otomatik İşletim Sistemi Yükseltmesi'ni etkinleştirdiysem görevlerim kesintiye uğrayacak mı?
automaticOSUpgradePolicy.osRollingUpgradeDeferral değeri 'true' olarak ayarlandığında görevler kesintiye uğramaz. Bu durumda, düğüm boşta olana kadar yükseltme ertelenecektir. Aksi takdirde düğüm, şu anda bir görev çalıştırıp çalıştırmadığına bakılmaksızın yeni bir işletim sistemi sürümü aldığında yükseltilir. Bu nedenle automaticOSUpgradePolicy.osRollingUpgradeDeferral'ı etkinleştirmenizi kesinlikle öneririz.