Resolver atrasos na criação de nós em lote ao reiniciar ou recriar a imagem
Este artigo discute como resolver atrasos na criação de nós em lote ao reiniciar ou recriar a imagem de um nó. Evite problemas no Lote do Microsoft Azure causados pela instalação do runtime do Python grande e dos pacotes do Python. Essa instalação causa longos atrasos e possíveis erros inesperados quando um nó de lote é adicionado pela primeira vez a um pool de lotes ou quando o nó é reiniciado ou recriado.
Sintomas
Quando você cria um pool de lotes e adiciona um nó ao pool, ou reinicia ou recria a imagem do nó, a instalação do aplicativo demora muito para ser concluída ou falha após um longo tempo de instalação.
Motivo
Esse problema ocorre porque um pacote Python é muito grande para ser usado como uma tarefa inicial.
Quando você cria um pool de lotes no Lote do Azure e adiciona um nó de lote, o processo recomendado é usar uma tarefa inicial para preparar o ambiente operacional. Essa tarefa inicial pode fazer o seguinte:
Instale os aplicativos que suas tarefas executam.
Inicie processos em segundo plano quando o nó do lote for adicionado pela primeira vez ao pool ou quando o nó for reiniciado ou recriado.
No entanto, para o runtime da linguagem Python e aplicativos que exigem a execução do Python, o pacote pode ser tão grande que leva muito tempo para a tarefa inicial ser instalada. Mesmo após a maior parte da instalação, a instalação ainda pode falhar devido a um problema inesperado.
Solução
Para corrigir esse problema, corresponda aos locais da VM (máquina virtual) e da conta do lote e às versões do sistema operacional e pré-instale o Python e seus pacotes antes de capturar uma imagem Gen1.
Use uma imagem personalizada pré-empacotada para alocar nós em lote. Para obter informações gerais sobre esse processo, consulte Usar uma imagem gerenciada para criar um pool de imagens personalizado.
Para evitar longos tempos de instalação e ajudar a evitar falhas na instalação, siga estas práticas gerais:
Especifique o mesmo local ou região a ser usado ao criar a conta de lote e criar o nó de lote da VM.
Selecione uma imagem que tenha Gen1 no nome, como Windows Server 2019 Datacenter – Gen1 (nó Windows) ou Ubuntu Server 18.04 LTS – Gen1 (nó Linux). Uma imagem Gen1 é necessária porque algumas famílias de VMs não dão suporte a imagens Gen2 .
Ao criar um pool de nós no portal do Azure, verifique se a lista de SKUs na seção Sistema operacional contém a versão do sistema especificada.
Personalize sua instalação do Python para que ela seja pré-instalada na imagem e funcione para todos os usuários.
Procedimentos específicos do sistema
As seções com guias a seguir descrevem as etapas que você deve seguir para um nó de lote do Windows ou um nó de lote do Linux.
Nó do Windows: instale a versão necessária do Python na unidade C e anexe manualmente o caminho do sistema
Resumo do procedimento
Depois de criar e iniciar a VM, conecte-se à VM usando o protocolo RDP. Em seguida, instale tudo o que você precisa na VM, incluindo a versão necessária do runtime do Python (por exemplo, Python 3.10.4) e edite o caminho do sistema. Por fim, capture a imagem da VM, implante-a em um pool de lotes que usa a imagem da VM, conecte-se ao novo nó do pool de lotes e teste-a para garantir que o runtime e os pacotes do Python pré-instalados funcionem corretamente.
Etapas do procedimento
Crie uma VM do Windows no portal do Azure especificando as configurações a seguir.
Nome da configuração Valor da configuração Região A mesma região atribuída à sua conta do lote Imagem Uma imagem do Windows que tem Gen1 (não Gen2) no nome e é compatível com o serviço de lote Execute o assistente de Instalação do Python e selecione a opção Personalizar instalação . Em seguida, na página Opções avançadas , vá para a caixa Personalizar local de instalação e especifique um caminho na unidade C.
Edite a variável de ambiente do sistema para
Path
que ela inclua o caminho de instalação do Python (como C:\Python\) e o caminho para os pacotes instalados do Python (como C:\Python\Scripts\).Observação
O assistente de configuração do Python adiciona esses caminhos somente à variável de ambiente do usuário para
Path
. Portanto, você deve adicionar os caminhos à variável de ambiente do sistema correspondente. Caso contrário, quando você capturar a imagem da VM, as configurações do Python e os pacotes de software extras que o usuário instalou serão excluídos da imagem.Para anexar esses caminhos à variável de ambiente do sistema, siga estas etapas:
Selecione Iniciar e, em seguida, pesquise e selecione Configurações.
No aplicativo Configurações, selecione Sistema>Sobre>Configurações avançadas do sistema.
Na caixa de diálogo Propriedades do Sistema, selecione a guia Avançado e, em seguida, selecione Variáveis de ambiente.
Na caixa de diálogo Variáveis de Ambiente, vá para a seção Variáveis do sistema, selecione a variável Caminho e, em seguida, selecione Editar.
Na caixa de diálogo Editar variável de ambiente, selecione Novo e insira o caminho para os pacotes instalados do Python. Em seguida, repita essa etapa para inserir o caminho para o runtime do Python.
Selecione OK três vezes para aplicar as alterações nas três caixas de diálogo.
Teste a instalação do Python em um console.
Por exemplo, depois de executar
python --version
para verificar a versão do Python que você instalou, você pode executar o interpretador Python para tentar importar um pacote que ainda não foi instalado (comonumpy
). Depois de obter a exceção esperadaModuleNotFoundError
, execute opip install <package-name>
comando para instalar o pacote e, em seguida, execute o interpretador Python novamente para importar esse pacote. O comando import agora deve ser bem-sucedido.Capture a imagem da VM seguindo as etapas em Criar uma imagem de uma VM no portal, mas aplique apenas as configurações a seguir na página Criar uma imagem .
Nome da configuração Valor da configuração Grupo de recursos Selecione na lista de grupos de recursos ou selecione Criar novo para criar um grupo de recursos. Galeria de computação do Azure de destino Selecione na lista de galerias de computação do Azure ou selecione Criar novo para criar uma galeria de computação do Azure. Definição de imagem da VM de destino Selecione Criar novo. Na página Criar uma definição de imagem de VM, insira apenas o nome da definição de imagem de VM que você deseja dar à imagem. (A página fornecerá automaticamente o Configurações de editor, oferta e SKU .) Número de versão Insira um número de versão que você deseja fornecer à imagem da VM. Depois de aplicar as configurações de imagem da VM, selecione Examinar + criar para verificar as configurações e, em seguida, selecione Criar para criar a imagem. Esta etapa cria os três tipos de recursos a seguir:
- Galeria de Computação do Azure
- Definição de imagem personalizada
- Versão de definição de imagem personalizada
Depois que os três recursos forem criados, siga estas etapas para criar um novo pool de lotes que use a imagem da VM:
No portal do Azure, pesquise e selecione Contas do Lote.
Na lista de contas do lote, selecione sua conta.
No painel de menu da sua conta do lote, selecione Pools e, em seguida, selecione Adicionar para criar um pool do lote.
Na página Adicionar pool, faça as configurações a seguir e selecione OK.
Nome da configuração Valor da configuração Pool ID O novo nome da sua piscina Tipo de imagem Imagem personalizada - Galeria de imagens compartilhadas * Galeria de imagens compartilhadas O nome da galeria de computação do Azure de destino que você especificou ao criar a imagem da VM Imagem O nome da definição da imagem da VM que você especificou ao criar a imagem da VM Versão O número da versão que você especificou ao criar a imagem da VM Sistema operacional Windows Distribuição do SO servidor windows SKU do sistema operacional O código do produto da versão do sistema operacional que você selecionou (por exemplo, microsoftwindowsserver-2019-datacenter) * Galeria de Imagens Compartilhadas é outro nome para a Galeria de Computação do Azure. Esse é um dos recursos que foi criado durante a criação da imagem da VM.
Depois que o nó do pool de lotes for alocado, vá para a página do nó do pool de lotes e selecione Conectar no menu de títulos.
No painel Conectar, selecione a opção Gerar um usuário, selecione o botão Gerar um usuário aleatório e, em seguida, selecione Baixar arquivo RDP.
Execute o arquivo RDP baixado para se conectar ao novo nó do lote.
Teste a instalação do Python novamente para garantir que a versão pré-instalada funcione corretamente.
Referências
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.