Use uma imagem gerida para criar uma piscina de imagem personalizada

Para criar uma piscina de imagens personalizada para as máquinas virtuais (VMs) da sua piscina, pode utilizar uma imagem gerida para criar uma imagem da Galeria Azure Compute. A utilização de apenas uma imagem gerida também é suportada, mas apenas para versões API até e incluindo 2019-08-01.

Importante

Na maioria dos casos, deverá criar imagens personalizadas utilizando a Galeria Azure Compute. Ao utilizar a Galeria Azure Compute, você pode providenciar piscinas mais rapidamente, escalar maiores quantidades de VMs, e ter uma maior fiabilidade ao atraste VMs. Para saber mais, consulte a Galeria Azure Compute para criar uma piscina personalizada.

Este tópico explica como criar um pool de imagem personalizado usando apenas uma imagem gerida.

Pré-requisitos

  • Um recurso de imagem gerido. Para criar um conjunto de máquinas virtuais usando uma imagem personalizada, você precisa ter ou criar um recurso de imagem gerido na mesma subscrição e região Azure que a conta Batch. A imagem deve ser criada a partir de instantâneos do disco (OS) do sistema operativo vM e opcionalmente dos seus discos de dados anexados.

    • Use uma imagem personalizada única para cada piscina que criar.
    • Para criar uma piscina com a imagem utilizando as APIs do lote, especifique o ID de recurso da imagem, que é do formulário /subscriptions/xxxx-xxxxxx-xxxxx-xxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myImage.
    • O recurso de imagem gerido tem de existir durante a duração do conjunto para permitir o aumento vertical e pode ser removido depois de o conjunto ser eliminado.
  • Azure Ative Directory (Azure AD) autenticação. A API do cliente Batch deve utilizar a autenticação AZure AD. O suporte do Azure Batch para o Azure AD está documentado em Autenticar soluções de serviço do Batch com o Active Directory.

Preparar uma imagem gerida

Em Azure, pode preparar uma imagem gerida a partir de:

  • Instantâneos de um sistema operativo EZure VM e discos de dados
  • Um VM Azure generalizado com discos geridos
  • Um VHD generalizado no local enviado para a nuvem

Para escalar os pools do Batch de forma fiável com uma imagem gerida, recomendamos a criação da imagem gerida utilizando apenas o primeiro método: utilizando instantâneos dos discos do VM. Os passos a seguir mostram como preparar um VM, tirar uma fotografia e criar uma imagem gerida a partir do instantâneo.

Preparar um VM

Se estiver a criar um novo VM para a imagem, utilize uma primeira parte Azure Marketplace imagem suportada por Batch como a imagem base para a sua imagem gerida. Apenas as primeiras imagens do partido podem ser usadas como imagem base. Para obter uma lista completa de referências de imagem Azure Marketplace suportadas por Azure Batch, consulte a operação skus do agente de nó de lista.

Nota

Não pode usar uma imagem de terceiros que tenha licença e termos de compra adicionais como a sua imagem base. Para obter informações sobre estas imagens do Marketplace, consulte a orientação para Linux ou Windows VMs.

  • Certifique-se de que o VM é criado com um disco gerido. Esta é a definição de armazenamento predefinido quando cria um VM.
  • Não instale extensões Azure, como a extensão de Script Personalizado, no VM. Se a imagem contiver uma extensão pré-instalada, o Azure pode encontrar problemas ao implantar o pool do Lote.
  • Ao utilizar discos de dados anexados, é necessário montar e formatar os discos a partir de um VM para os utilizar.
  • Certifique-se de que a imagem de BASE OS que fornece utiliza a unidade temporária predefinido. O agente de nó de lote espera atualmente a unidade temporária predefinida.
  • Certifique-se de que o disco SO não está encriptado.
  • Uma vez em funcionamento o VM, ligue-o através de RDP (para Windows) ou SSH (para Linux). Instale qualquer software necessário ou copie os dados pretendidos.

Criar um instantâneo VM

Uma foto é uma cópia completa e só de leitura de um VHD. Para criar uma imagem instantânea de um VMs OS ou discos de dados, pode utilizar as ferramentas portal do Azure ou linha de comando. Para etapas e opções para criar um instantâneo, consulte a orientação para VMs.

Criar uma imagem a partir de um ou mais instantâneos

Para criar uma imagem gerida a partir de um instantâneo, utilize ferramentas da linha de comando Azure, como a imagem az criar comando. Pode criar uma imagem especificando um instantâneo de disco de SO e opcionalmente um ou mais instantâneos de disco de dados.

Criar uma piscina a partir de uma imagem gerida

Assim que tiver encontrado o ID de recursos da sua imagem gerida, crie uma piscina de imagem personalizada a partir dessa imagem. Os passos a seguir mostram-no como criar um pool de imagens personalizado utilizando o Serviço de Lote ou a Gestão de Lotes.

Nota

Certifique-se de que a identidade que utiliza para a autenticação Azure AD tem permissões para o recurso de imagem. Consulte soluções de serviço Authenticate Batch com Diretório Ativo.

O recurso para a imagem gerida deve existir durante toda a vida da piscina. Se o recurso subjacente for eliminado, o pool não pode ser dimensionado.

Serviço de lote .NET SDK

private static VirtualMachineConfiguration CreateVirtualMachineConfiguration(ImageReference imageReference)
{
    return new VirtualMachineConfiguration(
        imageReference: imageReference,
        nodeAgentSkuId: "batch.node.windows amd64");
}

private static ImageReference CreateImageReference()
{
    return new ImageReference(
        virtualMachineImageId: "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/images/{image definition name}");
}

private static void CreateBatchPool(BatchClient batchClient, VirtualMachineConfiguration vmConfiguration)
{
    try
    {
        CloudPool pool = batchClient.PoolOperations.CreatePool(
            poolId: PoolId,
            targetDedicatedComputeNodes: PoolNodeCount,
            virtualMachineSize: PoolVMSize,
            virtualMachineConfiguration: vmConfiguration);

        pool.Commit();
    }

API REST de Gestão de Lotes

URI da API REST

 PUT https://management.azure.com/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Batch/batchAccounts/{account name}/pools/{pool name}?api-version=2020-03-01

Corpo do Pedido

 {
   "properties": {
     "vmSize": "{VM size}",
     "deploymentConfiguration": {
       "virtualMachineConfiguration": {
         "imageReference": {
           "id": "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/images/{image name}"
         },
         "nodeAgentSkuId": "{Node Agent SKU ID}"
       }
     }
   }
 }

Considerações para grandes piscinas

Se planeia criar uma piscina com centenas de VMs ou mais usando uma imagem personalizada, é importante seguir a orientação anterior para usar uma imagem criada a partir de um instantâneo VM.

Note também as seguintes considerações:

  • Limites de tamanho - O lote limita o tamanho da piscina a 2500 nós computacional dedicados, ou 1000 nós spot, quando utiliza uma imagem personalizada.

    Se utilizar a mesma imagem (ou múltiplas imagens com base no mesmo instantâneo subjacente) para criar várias piscinas, os nós de computação total nas piscinas não podem exceder os limites anteriores. Não recomendamos a utilização de uma imagem ou do seu instantâneo subjacente para mais do que uma única piscina.

    Os limites podem ser reduzidos se configurar a piscina com piscinas NAT de entrada.

  • Redimensione o tempo limite - Se a sua piscina contiver um número fixo de nós (não se autoescala), aumente a propriedade de redimensionartimeout da piscina para um valor como 20-30 minutos. Se a sua piscina não atingir o seu tamanho de destino dentro do período de tempo limite, execute outra operação de redimensionar.

    Se você planejar uma piscina com mais de 300 nós computacional, você pode precisar de redimensionar a piscina várias vezes para alcançar o tamanho do alvo.

Ao utilizar a Galeria Azure Compute, pode criar piscinas maiores com as suas imagens personalizadas juntamente com mais réplicas de Imagem Partilhada. Usando imagens partilhadas, o tempo que a piscina leva para chegar ao estado estável é até 25% mais rápido, e a latência inativa VM é até 30% mais curta.

Considerações para a utilização do Packer

A criação de um recurso de imagem gerido diretamente com o Packer só pode ser feita com contas de lote do modo de subscrição do utilizador. Para as contas do modo de serviço Batch, é necessário criar primeiro um VHD e, em seguida, importar o VHD para um recurso de imagem gerido. Dependendo do modo de atribuição da piscina (subscrição do utilizador ou serviço Batch), os seus passos para criar um recurso de imagem gerido variarão.

Certifique-se de que o recurso utilizado para criar a imagem gerida existe para o tempo de vida de qualquer piscina que se refere à imagem personalizada. Se não o fizer, pode resultar em falhas de atribuição de piscinas e/ou redimensionar falhas.

Se a imagem ou o recurso subjacente for removido, poderá obter um erro semelhante a: There was an error encountered while performing the last resize on the pool. Please try resizing the pool again. Code: AllocationFailed. Se obter este erro, certifique-se de que o recurso subjacente não foi removido.

Para obter mais informações sobre a utilização do Packer para criar um VM, consulte construir uma imagem Linux com Packer ou construir uma imagem Windows com o Packer.

Passos seguintes