Partilhar via


Nodos e pools no Azure Batch

Em um fluxo de trabalho do Azure Batch, um nó de computação (ou ) é uma máquina virtual que processa uma parte da carga de trabalho da sua aplicação. Um pool é uma coleção desses nós para a sua aplicação ser executada. Este artigo explica mais sobre nós e pools, juntamente com considerações ao criá-los e usá-los num 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 da sua aplicação. 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 são atribuídos ao nó.

Pode criar agrupamentos de nós Windows ou Linux utilizando os 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 suportado pelo ambiente do sistema operativo do nó. Executáveis ou scripts incluem *.exe, *.cmd, *.bat e scripts PowerShell (para Windows) e binários, scripts shell e scripts 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. O Batch cria esses endereços IP públicos e pode mudar durante o ciclo 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 sejam alterados inesperadamente.

Piscinas

Um pool é o conjunto de nós em que a sua aplicação é executada.

Conjuntos do Azure Batch baseiam-se na plataforma principal de computação 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.

A cada nó que é adicionado a um pool é atribuído um nome e um endereço IP exclusivos. 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, o seu ciclo de vida termina.

Um pool só pode ser usado pela conta Batch na qual foi criado. Uma conta de lote pode criar vários pools para atender aos requisitos de recursos dos aplicativos que precisam ser executados.

O pool pode ser criado manualmente ou automaticamente pelo serviço de lote quando você especifica o trabalho a ser feito. Quando cria um pool, 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 pool não estiver atingindo o número alvo de nós, a cota principal pode ser o motivo.

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

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.

O Agente do nó Batch é um programa que se executa em cada nó do pool e fornece a interface de comando e controlo 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 pool 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, mas também a referência da imagem da máquina virtual e o SKU do agente de nó do Batch que será instalado 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.

SKUs para o agente de nó

Quando cria um pool, 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 contentores em pools 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 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 que são executadas no pool podem, então, referenciar as imagens e as opções de execução do container.

Para obter mais informações, veja Executar aplicações de contentores Docker no Azure Batch.

Tipo de nó e destino

Ao criar um pool, pode especificar quais tipos de nós quer e o número-alvo para cada um. Os dois tipos de nós são:

  • Nodos dedicados. Os nós de computação dedicados estão reservados para as suas cargas de trabalho. Eles são normalmente mais caros do que os nós Spot, mas há garantia de que nunca serão interrompidos.
  • Detetar 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 Batch.

Os nós spot podem ser interrompidos quando o Azure não tem capacidade excedente suficiente. Se um nó for preemptado enquanto estiver a executar tarefas, estas são recolocadas na fila e executadas novamente assim que um nó de computação voltar a estar disponível. Os nós spot são uma boa opção para cargas de trabalho em que o tempo de conclusão é flexível e a tarefa está distribuída por muitos nós. Antes de decidir usar nós do tipo Spot para o seu cenário, certifique-se de que qualquer perda de trabalho devido à preempção seja mínima e fácil de retomar ou recriar.

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

O número de nós de computação é referido como alvo porque, em algumas situações, pode acontecer que o seu conjunto não atinja o número de nós pretendido. Por exemplo, um pool pode não atingir o objetivo se primeiro atingir a quota de núcleos da sua conta do Batch. Ou, o pool pode não atingir o objetivo caso seja aplicada uma fórmula de dimensionamento automático ao pool que limita o número máximo de nós.

Observação

Quando os nós de computação spot do Batch são interrompidos, eles passam primeiro para o estado unusable. Depois de algum tempo, esses nós de computação farão a transição para refletir o preempted estado. O Batch habilita automaticamente o comportamento Try & restore para restaurar instâncias spot removidas com uma meta de melhor esforço para manter as contagens de instâncias de destino.

Para obter informações sobre preços para nós Spot e dedicados, consulte Preços de Batch.

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 para HPC ou com suporte para GPU. Os tamanhos de VM de nó só podem ser escolhidos no momento em que um pool é criado. Em outras palavras, depois que um pool é criado, seu tamanho de VM 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 avalia periodicamente sua fórmula e ajusta 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 a fórmula para determinar o número alvo de nós no pool para o próximo intervalo de dimensionamento (um intervalo que pode ser configurado). Pode especificar as definições de dimensionamento automático de um pool quando o criar, ou ativar o dimensionamento num pool mais tarde. Também pode atualizar as definições de dimensionamento num pool habilitado 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 pool com base na carga de trabalho e noutras definições da 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 há tarefas em fila ou em execução.

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 diminui o número de nós de computação num pool, deve considerar como lidar com 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 que estão a correr sejam interrompidas imediatamente e relistadas para execução noutro nó, ou permitir que terminem antes de o nó ser removido do conjunto. Definir a opção de desalocação de nó como taskcompletion ou retaineddata impede qualquer redimensionamento do pool até que todas as tarefas sejam concluídas ou até que todos os períodos de retenção de tarefas expirem, respetivamente.

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 alvo de nós para zero no final de um trabalho, 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 padrão especifica que uma tarefa de cada vez é executada em um nó, mas há cenários em que é benéfico ter duas ou mais tarefas executadas em um nó simultaneamente. Consulte o cenário de exemplo no artigo de tarefas de nó simultâneo sobre como você pode se beneficiar potencialmente 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 operam de forma independente e não precisam se 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 comunicação entre nós, de modo que os nós dentro de um pool possam se comunicar em tempo de execução. Quando a comunicação internode está habilitada, os nós nos pools de Configuração de Serviços de Nuvem podem se comunicar entre si em portas maiores que 1100 e os pools 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 sua aplicação não exigir comunicação entre nós, o serviço de lotes poderá alocar um número potencialmente grande de nós para o pool a partir de muitos clusters e centros de dados diferentes, aumentando assim o poder de processamento paralelo.

Iniciar tarefas

Se desejado, pode adicionar uma tarefa de início que é executada em cada nó à medida que esse nó se junta ao pool e sempre que um nó é reiniciado ou reimagemado. 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 nos 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 Autenticar soluções de serviço Batch com Active 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 de pool e nó de computação

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 da gama, pode criar um pool 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 notar que as tarefas são agendadas para execução assim que os nós são individualmente alocados e a tarefa inicial é concluída, caso tenha sido especificado que se deve aguardar a conclusão da tarefa inicial. O batch não espera até que todos os nós dentro de uma pool estejam disponíveis antes de atribuir as 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 começar os trabalhos de imediato, pode criar um grupo (ou pool) antecipadamente e disponibilizar os respetivos nodos antes do envio 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árias tarefas são enviadas e pode aumentar ou diminuir o número de nós consoante 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 o serviço Batch cria quando um trabalho é enviado, em vez de ser criado explicitamente antes dos trabalhos que serão executados no pool. O serviço Batch gerencia a vida útil de um pool automático de acordo com as características especificadas. Na maioria das vezes, esses pools também são definidos para serem eliminados automaticamente após a conclusão das suas tarefas.

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 isto, 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 grupo novo ou existente.

Quando um certificado é associado a um pool, o serviço Batch instala o certificado em cada nó no pool. O serviço Batch instala os certificados apropriados quando o nó é iniciado, antes de lançar qualquer tarefa (incluindo a tarefa iniciar e a tarefa do gestor de trabalhos).

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