Nós e pools no Azure Batch

Em um fluxo de trabalho do Lote do Azure, um nó (ou nó) de computação é uma máquina virtual que processa uma parte da carga de trabalho do seu aplicativo. Um pool é uma coleção desses nós para seu aplicativo ser executado. Este artigo explica mais sobre nós e pools, juntamente com considerações ao criá-los e usá-los em um fluxo de trabalho do Azure Batch.

Nós

Um nó é uma máquina virtual (VM) do Azure ou uma VM de serviço de nuvem dedicada ao processamento de uma parte da carga de trabalho do seu aplicativo. O tamanho de um nó determina o número de núcleos de CPU, a capacidade da memória e o tamanho do sistema de ficheiros local que está alocado ao nó.

Pode criar conjuntos de nós do Windows ou Linux com imagens dos Serviços Cloud do Azure, imagens do Marketplace das Máquinas Virtuais do Azure ou imagens personalizadas preparadas por si.

Os nós podem executar qualquer executável ou script que seja suportado pelo ambiente dos respetivos sistemas operativos. Executáveis ou scripts incluem scripts *.exe, *.cmd, *.bat e PowerShell (para Windows) e binários, shell e Python (para Linux).

Todos os nós de computação do Batch incluem também:

Por padrão, os nós podem se comunicar uns com os outros, mas não podem se comunicar com máquinas virtuais que não fazem parte do mesmo pool. Para permitir que os nós se comuniquem com segurança com outras máquinas virtuais ou com uma rede local, você pode provisionar o pool em uma sub-rede de uma rede virtual (VNet) do Azure. Quando você faz isso, seus nós podem ser acessados através de endereços IP públicos. Esses endereços IP públicos são criados pelo Batch e podem mudar ao longo do tempo de vida do pool. Você também pode criar um pool com endereços IP públicos estáticos que você controla, o que garante que eles não serão alterados inesperadamente.

Conjuntos

Um pool é a coleção de nós em que seu aplicativo é executado.

Conjuntos do Azure Batch criados com base na plataforma de computação principal do Azure. Eles fornecem alocação em larga escala, instalação de aplicativos, distribuição de dados, monitoramento de integridade e ajuste flexível (dimensionamento) do número de nós de computação dentro de um pool.

Um nome e um endereço IP exclusivos são atribuídos a cada nó que seja adicionado a um conjunto. Quando um nó é removido de um conjunto, as alterações feitas ao sistema operativo ou aos ficheiros perdem-se e o respetivo nome e endereço IP são libertados para utilização futura. Quando um nó deixa um conjunto, a sua duração termina.

Os conjuntos só podem ser utilizados pela conta do Batch em que foram criados. Uma conta de lote pode criar vários pools para atender aos requisitos de recursos dos aplicativos que executará.

O pool pode ser criado manualmente ou automaticamente pelo serviço de lote quando você especifica o trabalho a ser feito. Quando cria um conjunto, pode especificar os seguintes atributos:

Importante

As contas do Batch têm uma quota predefinida que limita o número de núcleos nas mesmas. O número de núcleos corresponde ao número de nós de computação. Pode encontrar as quotas predefinidas e instruções sobre como aumentar uma quota em Quotas and limits for the Azure Batch service (Quotas e limites para o serviço Azure Batch). Se o seu agrupamento não estiver a obter o número de destino de nós, tal poderá dever-se à quota de núcleos.

Sistema operacional e versão

Ao criar um pool de lotes, você especifica a configuração da máquina virtual do Azure e o tipo de sistema operacional que deseja executar em cada nó de computação no pool.

Configurações

Há dois tipos de configurações de pool disponíveis no Batch.

Importante

Embora atualmente você possa criar pools usando qualquer configuração, os novos pools devem ser configurados usando a Configuração da Máquina Virtual e não a Configuração dos Serviços de Nuvem. Todos os recursos atuais e novos do Batch serão suportados pelos pools de Configuração de Máquina Virtual. Os pools de Configuração de Serviços de Nuvem não oferecem suporte a todos os recursos e nenhum novo recurso está planejado. Você não poderá criar novos pools 'CloudServiceConfiguration' ou adicionar novos nós aos pools existentes após 29 de fevereiro de 2024.

Configuração da Máquina Virtual

A Configuração da Máquina Virtual especifica que o pool é composto por máquinas virtuais do Azure. Estas VMs podem ser criadas a partir de imagens do Linux ou do Windows.

Importante

Atualmente, o Batch não suporta VMs de inicialização confiáveis.

O agente do nó Batch é um programa executado em cada nó do pool e fornece a interface de comando e controle entre o nó e o serviço Batch. Existem diferentes implementações do agente de nó, conhecido como SKUs, para diferentes sistemas operacionais. Quando cria um agrupamento com base na Configuração de Máquina Virtual, tem de especificar não só o tamanho dos nós e a origem das imagens utilizadas para criá-los, como também a referência da imagem da máquina virtual e o SKU do agente de nó do Batch a instalar nos nós. Para obter mais informações sobre como especificar estas propriedades dos conjuntos, veja Provision Linux compute nodes in Azure Batch pools (Aprovisionar nós de computação do Linux em conjuntos do Azure Batch). Opcionalmente, pode anexar um ou mais discos de dados vazio às VMs do agrupamento criadas a partir de imagens do Marketplace ou incluir os discos de dados em imagens personalizadas utilizadas para criar as VMs. Ao incluir discos de dados, você precisa montar e formatar os discos de dentro de uma VM para usá-los.

Configuração de serviços na nuvem

Aviso

Os pools de Configuração de Serviços de Nuvem foram preteridos. Em vez disso, use pools de Configuração de Máquina Virtual. Para obter mais informações, consulte Migrar configuração de pool de lotes de serviços de nuvem para máquina virtual.

A Configuração dos Serviços de Nuvem especifica que o pool é composto por nós dos Serviços de Nuvem do Azure. Os Serviços de Nuvem fornecem apenas nós de computação do Windows.

Os sistemas operacionais disponíveis para pools de Configuração de Serviços de Nuvem estão listados nas versões do SO Convidado do Azure e na matriz de compatibilidade do SDK, e os tamanhos de nós de computação disponíveis estão listados em Tamanhos para Serviços de Nuvem. Ao criar um pool que contém nós de Serviços de Nuvem, você especifica o tamanho do nó e sua família de SO (que determina quais versões do .NET são instaladas com o sistema operacional). Os Serviços de Nuvem são implantados no Azure mais rapidamente do que as máquinas virtuais que executam o Windows. Se quiser agrupamentos de nós de computação do Windows, vai chegar à conclusão de que os Serviços Cloud são mais vantajosos no que diz respeito ao tempo de implementação.

Tal como acontece com as funções de trabalho nos Serviços de Nuvem, pode especificar uma Versão do SO. Recomendamos que você especifique Latest (*) a versão do sistema operacional para que os nós sejam atualizados automaticamente e não seja necessário nenhum trabalho para atender às versões recém-lançadas. O principal motivo para selecionar uma versão de SO específica é garantir a compatibilidade da aplicação, o que permite fazer testes de retrocompatibilidade antes de permitir a atualização da versão. Após a validação, a versão do sistema operacional para o pool pode ser atualizada e a nova imagem do sistema operacional pode ser instalada. Todas as tarefas em execução serão interrompidas e colocadas novamente na fila.

SKUs do agente de nó

Quando cria um agrupamento, tem de selecionar o nodeAgentSkuId adequado, consoante o SO da imagem de base do VHD. Você pode obter um mapeamento de IDs de SKU do agente de nó disponíveis para suas referências de imagem do sistema operacional chamando a operação List Supported Node Agent SKUs .

Imagens personalizadas para agrupamentos de Máquinas Virtuais

Para saber como criar um pool com imagens personalizadas, consulte Usar a Galeria de Computação do Azure para criar um pool personalizado.

Suporte de contentor em agrupamentos de Máquinas Virtuais

Ao criar um agrupamento de Configuração de Máquinas Virtuais com as APIs do Batch, pode configurar o agrupamento para executar tarefas nos contentores do Docker. Atualmente, tem de criar o agrupamento através de uma imagem que suporte contentores do Docker. Utilize o Windows Server 2016 Datacenter com a imagem de Contentores do Azure Marketplace ou forneça uma imagem da VM personalizada que inclua o Docker Community Edition ou Enterprise Edition e quaisquer controladores necessários. As definições do agrupamento têm de incluir uma configuração de contentor que copie as imagens do contentor para as VMs quando for criado o agrupamento. As tarefas executadas no agrupamento podem, então, referenciar as imagens e as opções de execução do contentor.

Para obter mais informações, veja Aplicações de contentor do Run Docker no Azure Batch.

Tipo de nó e destino

Ao criar um pool, você pode especificar quais tipos de nós deseja e o número de destino para cada um. Os dois tipos de nós são:

  • Nós dedicados. Os nós de computação dedicados estão reservados para as suas cargas de trabalho. Eles são mais caros do que os nós Spot, mas é garantido que nunca serão antecipados.
  • Identificar nós. Os nós spot aproveitam a capacidade excedente no Azure para executar suas cargas de trabalho em lote. Os nós spot são mais baratos por hora do que os nós dedicados e permitem cargas de trabalho que exigem poder de computação significativo. Para obter mais informações, consulte Usar VMs spot com lote.

Os nós spot podem ser antecipados quando o Azure tem capacidade excedente insuficiente. Se um nó for substituído enquanto está a executar tarefas, estas são colocadas novamente na fila e executadas assim que esteja disponível um nó de computação. Os nós spot são uma boa opção para cargas de trabalho em que o tempo de conclusão do trabalho é flexível e o trabalho é distribuído por muitos nós. Antes de decidir usar nós spot para seu cenário, certifique-se de que qualquer trabalho perdido devido à preempção será mínimo e fácil de recriar.

Você pode ter nós de computação spot e dedicados no mesmo pool. Cada tipo de nó tem sua própria configuração de destino, para a qual você pode especificar o número desejado de nós.

O número de nós de computação é referido com destino porque, em algumas situações, é possível que o seu conjunto não atinja o número de nós pretendido. Por exemplo, um conjunto pode não alcançar o destino se atingir primeiro a quota de núcleos da sua conta do Batch. Ou, o pool pode não atingir o destino se você tiver aplicado uma fórmula de dimensionamento automático ao pool que limita o número máximo de nós.

Para obter informações sobre preços para nós spot e dedicados, consulte Preços em lote.

Tamanho do nó

Quando cria um conjunto do Azure Batch, pode escolher entre quase todas as famílias e tamanhos de VM disponíveis no Azure. O Azure oferece um leque diversificado de tamanhos de VM para diferentes cargas de trabalho, incluindo tamanhos de VM especializados preparados para HPC ou GPU. Observe que os tamanhos dos nós só podem ser escolhidos no momento em que um pool é criado. Em outras palavras, uma vez que um pool é criado, seu tamanho de nó não pode ser alterado.

Para obter mais informações, veja Escolher um tamanho de VM para nós de computação num conjunto do Azure Batch.

Política de dimensionamento automático

Para cargas de trabalho dinâmicas, você pode aplicar uma política de dimensionamento automático a um pool. O serviço Batch avaliará periodicamente sua fórmula e ajustará dinamicamente o número de nós dentro do pool de acordo com a carga de trabalho atual e o uso de recursos do seu cenário de computação. Esta funcionalidade permite-lhe reduzir o custo global de execução da sua aplicação ao utilizar apenas os recursos de que precisa e libertar aqueles de que não precisa.

A ativação do dimensionamento automático é feita ao escrever uma fórmula de dimensionamento automático e associá-la a um conjunto. O serviço Batch utiliza esta fórmula para determinar o número de destino de nós no conjunto para o próximo intervalo de dimensionamento (um intervalo que pode configurar). Pode especificar as definições de dimensionamento automático de um conjunto quando o criar ou ativar o dimensionamento num conjunto mais tarde. Também pode atualizar as definições de dimensionamento num conjunto preparado para dimensionamento.

Por exemplo, talvez um trabalho exija que você envie um grande número de tarefas para serem executadas. Pode atribuir uma fórmula de dimensionamento ao conjunto que ajusta o número de nós no conjunto com base no número atual de tarefas na fila, bem como na taxa de conclusão das tarefas desse trabalho. O serviço Batch avalia periodicamente a fórmula e redimensiona o conjunto com base na carga de trabalho e nas outras definições de fórmula. O serviço adiciona nós conforme necessário quando existe um grande número de tarefas em fila e remove nós quando não existem tarefas em execução ou em fila.

Uma fórmula de dimensionamento pode basear-se nas métricas seguintes:

  • Métricas de tempo: baseadas em estatísticas recolhidas a cada cinco minutos no número de horas especificado.
  • Métricas de recurso: baseadas na utilização da CPU, da largura de banda, da memória e no número de nós.
  • Métricas de tarefas: baseadas no estado da tarefa, como Ativa (em fila), Em Execução ou Concluída.

Quando o dimensionamento automático diminuir o número de nós de computação de um conjunto, tem de pensar como vai processar as tarefas que estão a ser executadas no momento da operação de diminuição. Para dar resposta a esta situação, o Batch disponibiliza uma opção de desalocação de nós, a qual pode incluir nas suas fórmulas. Por exemplo, pode especificar que as tarefas em execução são paradas imediatamente e recolocadas em fila para execução noutro nó ou que podem ser concluídas antes de o nó ser removido do conjunto. Observe que definir a opção de desalocação de nó como taskcompletion ou impedirá operações de redimensionamento de pool até que todas as tarefas tenham sido concluídas ou retaineddata todos os períodos de retenção de tarefas tenham expirado, respectivamente.

Para obter mais informações sobre o dimensionamento automático de uma aplicação, consulte Dimensionar automaticamente nós de computação num conjunto do Azure Batch.

Gorjeta

Para maximizar a utilização de recursos de computação, defina o número de destino de nós para zero no final de uma tarefa, mas permita que as tarefas em execução sejam concluídas.

Política de agendamento de tarefas

A opção de configuração máximo de tarefas por nó determina o número máximo de tarefas que podem ser executadas em paralelo em cada nó de computação dentro do conjunto.

A configuração predefinida especifica que uma tarefa seja executada num nó de computação de cada vez, mas existem cenários onde é vantajoso ter duas ou mais tarefas executadas num nó em simultâneo. Veja o cenário de exemplo no artigo Tarefas de nó simultâneas para saber como tirar partido de várias tarefas por nó.

Você também pode especificar um tipo de preenchimento, que determina se o Batch distribui as tarefas uniformemente por todos os nós de um pool ou empacota cada nó com o número máximo de tarefas antes de atribuir tarefas a outro nó.

Estado da comunicação

Na maioria dos cenários, as tarefas funcionam de forma independente e não têm de comunicar entre si. Contudo, poderão existir algumas aplicações nas quais as tarefas têm de comunicar, como em cenários de MPI.

Você pode configurar um pool para permitir a comunicação internode para que os nós dentro de um pool possam se comunicar em tempo de execução. Se a comunicação internós estiver ativada, os nós nos conjuntos de Configuração de Serviços Cloud podem comunicar entre si em portas maiores do que a 1.100 e os conjuntos de Configuração de Máquina Virtual não restringem o tráfego em nenhuma porta.

Habilitar a comunicação internode também afeta o posicionamento dos nós dentro de clusters e pode limitar o número máximo de nós em um pool devido a restrições de implantação. Se a aplicação não necessitar de comunicação entre nós, o serviço Batch pode alocar um número potencialmente grande de nós ao conjunto a partir de vários clusters e centros de dados diferentes para permitir uma maior potência de processamento paralelo.

Iniciar tarefas

Se desejar, você pode adicionar uma tarefa inicial que será executada em cada nó à medida que esse nó se juntar ao pool e cada vez que um nó for reiniciado ou recriado. A tarefa inicial é especialmente útil para preparar nós de computação para a execução de tarefas, como instalar as aplicações que as suas tarefas executam nos nós de computação.

Pacotes de aplicações

Pode especificar pacotes de aplicações para implementar os nós de computação no conjunto. Os pacotes de aplicações fornecem uma implementação simplificada e o controlo de versões das aplicações que as suas tarefas executam. Os pacotes de aplicações que especificou para um conjunto são instalados em cada nó associado a esse conjunto, e sempre que um nó é reiniciado ou sempre que a respetiva imagem for recriada.

Para obter mais informações sobre a utilização de pacotes de aplicações para implementar as aplicações em nós do Batch, veja Implementar aplicações em nós de computação com pacotes de aplicações do Batch.

Configurar a rede virtual (VNet) e a firewall

Quando aprovisiona um conjunto de nós de computação no Batch, pode associá-lo a uma sub-rede de uma rede virtual (VNet) do Azure. Para usar uma VNet do Azure, a API do cliente Batch deve usar a autenticação do Microsoft Entra. O suporte do Azure Batch para Microsoft Entra ID está documentado em soluções de serviço Authenticate Batch com Ative Directory.

Requisitos de VNet

Para obter mais informações sobre como configurar um agrupamento do Batch numa VNet, veja Criar um agrupamento de máquinas virtuais com a rede virtual.

Gorjeta

Para garantir que os endereços IP públicos usados para acessar nós não sejam alterados, você pode criar um pool com endereços IP públicos especificados que você controla.

Duração do nó de computação e de conjunto

Ao projetar sua solução de Lote do Azure, você deve especificar como e quando os pools são criados e por quanto tempo os nós de computação dentro desses pools são mantidos disponíveis.

Num extremo do espetro, pode criar um conjunto para cada trabalho que submeter e eliminá-lo assim que a execução das respetivas tarefas terminar. Isso maximiza a utilização porque os nós são alocados apenas quando necessário e são desligados quando estão ociosos. Embora isso signifique que o trabalho deve aguardar que os nós sejam alocados, é importante observar que as tarefas são agendadas para execução assim que os nós são alocados individualmente e a tarefa inicial é concluída. O Batch não espera que todos os nós de um conjunto estejam disponíveis para lhes atribuir tarefas. Assim, garante-se a máxima utilização de todos os nós disponíveis.

No outro extremo do espetro, se a prioridade mais elevada for dar início aos trabalhos, pode criar um conjunto antecipadamente e disponibilizar os respetivos nós antes da submissão dos trabalhos. Neste cenário, as tarefas podem ser iniciadas de imediato, mas os nós podem manter-se inativos enquanto aguardam que as tarefas sejam atribuídas.

Uma abordagem combinada é normalmente usada para lidar com uma carga variável, mas contínua. Você pode ter um pool no qual vários trabalhos são enviados e pode dimensionar o número de nós para cima ou para baixo de acordo com a carga de trabalho. Pode fazer estes ajustes reativamente, com base na carga atual, ou pró-ativamente, se for possível prever a carga. Para obter mais informações, consulte Política de dimensionamento automático.

Piscinas automáticas

Um pool automático é um pool que é criado pelo serviço Batch quando um trabalho é enviado, em vez de ser criado antes dos trabalhos que serão executados no pool. O serviço Batch gerenciará o tempo de vida de um autopool de acordo com as características especificadas. Na maioria das vezes, esses pools também são definidos para excluir automaticamente após a conclusão de seus trabalhos.

Segurança com certificados

Normalmente, tem de utilizar certificados quando encriptar ou desencriptar informações confidenciais relativas a tarefas, como a chave de uma conta de Armazenamento do Azure. Para suportar esta situação, pode instalar certificados em nós. Os segredos encriptados são transmitidos para as tarefas através dos parâmetros da linha de comandos ou incorporados num dos recursos da tarefa, sendo que os certificados instalados podem ser utilizados para desencriptá-los.

Utilize a operação Adicionar certificado (REST do Batch) ou o método CertificateOperations.CreateCertificate (.NET do Batch) para adicionar um certificado a uma conta do Batch. Em seguida, pode associar o certificado a um conjunto novo ou existente.

Quando um certificado é associado a um conjunto, o serviço Batch instala o certificado em cada nó no conjunto. O serviço em lote instala os certificados apropriados quando o nó é iniciado, antes de iniciar qualquer tarefa (incluindo a tarefa iniciar e a tarefa do gerenciador de tarefas).

Se você adicionar um certificado a um pool existente, deverá reinicializar seus nós de computação para que o certificado seja aplicado aos nós.

Próximos passos