Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Quando crias um Azure Batch pool, podes provisionar o pool com nós que tenham o Auto OS Upgrade ativado. Este artigo explica como configurar um pool Batch com Auto OS Upgrade.
Porquê utilizar o Auto OS Upgrade?
A Atualização Automática do Sistema Operativo é usada para implementar uma estratégia automática de atualização do sistema operativo e controlo dentro dos Azure Batch Pools. Aqui estão algumas razões para usar o Auto OS Upgrade:
- Segurança. A Atualização Automática do Sistema Operativo garante a correção atempada de vulnerabilidades e problemas de segurança na imagem do sistema operativo, para aumentar a segurança dos recursos de computação. Ajuda a prevenir que potenciais vulnerabilidades de segurança representem uma ameaça para aplicações e dados.
- Minimizar a Interrupção da Disponibilidade. A Atualização Automática do SO é usada para minimizar a perturbação da disponibilidade dos nós de computação durante as atualizações do SO. Isto é conseguido através do adiamento de atualizações em função do agendamento de tarefas e do suporte a atualizações faseadas, garantindo que as cargas de trabalho tenham o mínimo de interrupções.
- Flexibilidade. A Atualização Automática do Sistema Operativo permite-lhe configurar a sua estratégia automática de atualização do sistema operativo, incluindo coordenação de atualização baseada em percentagem e suporte a rollback. Isto significa que pode personalizar a sua estratégia de atualização para satisfazer os seus requisitos específicos de desempenho e disponibilidade.
- Control. A Atualização Automática do Sistema Operativo dá-lhe controlo sobre a sua estratégia de atualização do sistema operativo para garantir implementações seguras e conscientes da carga de trabalho. Pode adaptar as suas configurações de políticas para responder às necessidades específicas da sua organização.
Em resumo, a utilização do Auto OS Upgrade ajuda a melhorar a segurança, minimizar as interrupções de disponibilidade e proporcionar maior controlo e flexibilidade para as suas cargas de trabalho.
Como funciona a Atualização Automática do Sistema Operativo?
Ao atualizar imagens, as VMs no Azure Batch Pool seguirão aproximadamente o mesmo fluxo de trabalho do VirtualMachineScaleSets. Para saber mais sobre os passos detalhados envolvidos no processo de Atualização Automática do Sistema Operativo para VirtualMachineScaleSets, pode consultar a página VirtualMachineScaleSet.
No entanto, se automaticOSUpgradePolicy.osRollingUpgradeDeferral estiver definido como 'true' e uma atualização ficar disponível quando um nó de lote estiver a executar tarefas, a atualização será adiada até que todas as tarefas tenham sido concluídas no nó.
Nota
Se um pool tiver osRollingUpgradeDeferral ativado, os seus nós serão apresentados no estado upgradingos durante o processo de atualização. Por favor, note que o estado do upgradingos só será mostrado quando estiver a usar a versão da API de 2024-02-01 ou posterior. Se estiveres a usar uma versão antiga da API para chamar GetTVM/ListTVM, o nó estará em estado de reinício ao atualizar.
Imagens de SO suportadas
Apenas certas imagens de plataforma do sistema operativo são atualmente compatíveis com a atualização automática. Para obter uma lista detalhada de imagens, pode consultá-la na página VirtualMachineScaleSet.
Requisitos
- A propriedade de versão da imagem deve ser definida como mais recente.
- Para a API de Gestão por Lotes, utilize a versão API 2024-02-01 ou superior. Para a API de Serviço em Batch, use a versão da API 2024-02-01.19.0 ou superior.
- Garantir que os recursos externos especificados no pool estão disponíveis e atualizados. Exemplos incluem o URI SAS para o carregamento inicial da carga útil nas propriedades da extensão da VM, a carga útil na conta de armazenamento, referências a segredos no modelo, entre outros.
- Se estiver a usar a propriedade virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates, esta propriedade deve definir como 'false' na definição do pool. A propriedade enableAutomaticUpdates ativa a aplicação de patches na VM, em que o "Windows Update" aplica patches ao sistema operativo sem substituir o disco do sistema operativo. Com as atualizações automáticas de imagem do sistema operativo ativadas, não é necessário um processo extra de correção através do Windows Update.
Requisitos adicionais para imagens personalizadas
- Quando uma nova versão da imagem é publicada e replicada para a região desse pool, as VMs serão atualizadas para a versão mais recente da imagem Azure Compute Gallery. Se a nova imagem não for replicada para a região onde o pool é implementado, as instâncias da VM não serão atualizadas para a versão mais recente. A replicação regional de imagens permite-lhe controlar a implementação da nova imagem para as suas VMs.
- A nova versão da imagem não deve ser excluída da versão mais recente dessa imagem da galeria. As versões da imagem excluídas da versão mais recente da imagem de galeria não serão distribuídas pela atualização automática da imagem do sistema operativo.
Configurar a Atualização Automática do Sistema Operativo
Se pretende implementar Atualizações Automáticas do Sistema Operativo dentro de um pool, é essencial configurar o campo UpgradePolicy durante o processo de criação do pool. Para configurar atualizações automáticas de imagem do SO, certifique-se de que a propriedade automaticOSUpgradePolicy.enableAutomaticOSUpgrade está definida como 'verdadeira' na definição do pool.
Nota
Modo Política de Atualização e Política Automática de Atualização do SO são definições separadas e controlam diferentes aspetos da escala provisionada definida por Azure Batch. O modo Política de Atualização determinará o que acontece às instâncias existentes no conjunto de escala. No entanto, a Política de Atualização Automática do SO enableAutomaticOSUpgrade é específica para a imagem do SO e acompanha as alterações feitas pelo editor da imagem, determinando o que acontece quando há uma atualização da imagem.
API REST
O exemplo seguinte descreve como criar um pool com Auto OS Upgrade via API REST:
PUT https://management.azure.com/subscriptions/<subscriptionid>/resourceGroups/<resourcegroupName>/providers/Microsoft.Batch/batchAccounts/<batchaccountname>/pools/<poolname>?api-version=2024-02-01
Órgão do Pedido
{
"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#)
O seguinte excerto de código mostra um exemplo de como usar o Azure. ResourceManager.Batch biblioteca cliente para criar um conjunto de códigos de Auto OS Upgrade via C#. Para obter mais detalhes sobre o Azure.ResourceManager.Batch, consulte a documentação de referência.
public async Task CreateUpgradePolicyPool()
{
// Authenticate
var subscriptionId = Environment.GetEnvironmentVariable("SUBSCRIPTION_ID");
DefaultAzureCredential credential = new DefaultAzureCredential();
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}");
}
FAQs
As minhas tarefas serão interrompidas se ativar a Atualização Automática do OS?
As tarefas não serão interrompidas quando o automaticOSUpgradePolicy.osRollingUpgradeDeferral estiver definido como 'verdadeiro'. Nesse caso, a atualização será adiada até que o nó fique inativo. Caso contrário, o node atualiza quando recebe uma nova versão do sistema operativo, independentemente de estar a executar uma tarefa ou não. Por isso, aconselhamos vivamente a ativar o automaticOSUpgradePolicy.osRollingUpgradeDeferral.
Passos seguintes
- Aprenda a usar uma imagem gerida para criar um pool.
- Aprenda a usar a Compute Gallery Azure para criar um pool.