Compartir a través de


Resolución de retrasos en la creación de nodos por lotes al reiniciar o volver a crear

En este artículo se describe cómo resolver los retrasos en la creación de nodos por lotes al reiniciar o volver a crear una imagen de un nodo. Evite problemas en Microsoft Azure Batch causados por la instalación de los paquetes de Python y del entorno de ejecución de Python de gran tamaño. Esta instalación provoca retrasos prolongados y posibles errores inesperados cuando se agrega por primera vez un nodo por lotes a un grupo de lotes o cuando se reinicia o se vuelve a crear una imagen de un nodo.

Síntomas

Cuando crea un grupo de lotes y agrega un nodo al grupo, o reinicia o vuelve a crear una imagen del nodo, la instalación de la aplicación tarda demasiado tiempo en finalizarse o se produce un error después de un largo tiempo de instalación.

Causa

Este problema se produce porque un paquete de Python es demasiado grande para usarlo como tarea de inicio.

Al crear un grupo de lotes en Azure Batch y agregar un nodo por lotes, el proceso recomendado es usar una tarea de inicio para preparar el entorno operativo. Esta tarea de inicio puede hacer lo siguiente:

  • Instale las aplicaciones que ejecutan las tareas.

  • Inicie procesos en segundo plano cuando el nodo por lotes se agregue por primera vez al grupo o cuando el nodo se reinicie o vuelva a crear una imagen.

Sin embargo, para el entorno de ejecución del lenguaje Python y las aplicaciones que requieren la ejecución de Python, el paquete puede ser tan grande que la tarea de inicio tarda mucho tiempo en instalarse. Incluso después de que se haya producido la mayor parte de la instalación, es posible que se produzca un error en la instalación debido a un problema inesperado.

Solución

Para solucionar este problema, haga coincidir las ubicaciones de la máquina virtual (VM) y la cuenta por lotes y las versiones del sistema operativo, y preinstale Python y sus paquetes antes de capturar una imagen gen1.

Use una imagen personalizada prepaquetada para asignar nodos por lotes. Para obtener información general sobre este proceso, consulte Uso de una imagen administrada para crear un grupo de imágenes personalizado.

Para evitar tiempos de instalación prolongados y ayudar a evitar errores de instalación, siga estas prácticas generales:

  • Especifique la misma ubicación o región que se usará al crear la cuenta de lote y crear el nodo de lote de máquina virtual.

  • Seleccione una imagen que tenga Gen1 en el nombre, como Windows Server 2019 Datacenter - Gen1 (nodo Windows) o Ubuntu Server 18.04 LTS - Gen1 (nodo Linux). Una imagen Gen1 es necesaria porque algunas familias de máquinas virtuales no admiten imágenes Gen2 .

  • Al crear un grupo de nodos en el Azure Portal, asegúrese de que la lista sku de la sección Sistema operativo contiene la versión del sistema especificada.

  • Personalice la instalación de Python para que se preinstale en la imagen y funcione para todos los usuarios.

Procedimientos específicos del sistema

En las secciones con pestañas siguientes se describen los pasos que debe seguir para un nodo por lotes de Windows o un nodo por lotes de Linux.

Nodo de Windows: instale la versión necesaria de Python en la unidad C y anexe manualmente la ruta de acceso del sistema.

Resumen del procedimiento

Después de crear e iniciar la máquina virtual, conéctese a la máquina virtual mediante el Protocolo de Escritorio remoto (RDP). A continuación, instale todo lo que necesita en la máquina virtual, incluida la versión necesaria del entorno de ejecución de Python (por ejemplo, Python 3.10.4) y edite la ruta de acceso del sistema. Por último, capture la imagen de máquina virtual, impleméntela en un grupo de lotes que use la imagen de máquina virtual, conéctese al nuevo nodo del grupo de lotes y, a continuación, pruébelo para asegurarse de que el entorno de ejecución y los paquetes de Python preinstalados funcionan correctamente.

Pasos del procedimiento

  1. Cree una máquina virtual Windows en el Azure Portal especificando la siguiente configuración.

    Nombre de valor de configuración Valor de configuración
    Región La misma región asignada a la cuenta de batch
    Image Una imagen de Windows que tiene Gen1 (no Gen2) en el nombre y es compatible con el servicio por lotes.
  2. Conéctese a la máquina virtual mediante RDP.

  3. Ejecute el Asistente para la instalación de Python y, a continuación, seleccione la opción Personalizar instalación . A continuación, en la página Opciones avanzadas , vaya al cuadro Personalizar ubicación de instalación y especifique una ruta de acceso en la unidad C.

  4. Edite la variable de entorno del sistema para Path que incluya la ruta de instalación de Python (como C:\Python\) y la ruta de acceso a los paquetes instalados de Python (como C:\Python\Scripts\).

    Nota:

    El Asistente para la instalación de Python agrega estas rutas de acceso solo a la variable de entorno de usuario para Path. Por lo tanto, debe agregar las rutas de acceso a la variable de entorno del sistema correspondiente. De lo contrario, al capturar la imagen de máquina virtual, la configuración de Python y los paquetes de software adicionales que el usuario instaló se eliminan de la imagen.

    Para anexar estas rutas de acceso a la variable de entorno del sistema, siga estos pasos:

    1. Seleccione Inicio y, a continuación, busque y seleccione Configuración.

    2. En la aplicación Configuración, seleccione SystemAbout Advanced system settings (Sistema >acerca de>la configuración avanzada del sistema).

    3. En el cuadro de diálogo Propiedades del sistema , seleccione la pestaña Opciones avanzadas y, a continuación, seleccione Variables de entorno.

    4. En el cuadro de diálogo Variables de entorno, vaya a la sección Variables del sistema , seleccione la variable Ruta de acceso y, a continuación, seleccione Editar.

    5. En el cuadro de diálogo Editar variable de entorno , seleccione Nuevo y escriba la ruta de acceso a los paquetes instalados de Python. A continuación, repita este paso para escribir la ruta de acceso al entorno de ejecución de Python.

    6. Seleccione Aceptar tres veces para aplicar los cambios en los tres cuadros de diálogo.

  5. Pruebe la instalación de Python en una consola.

    Por ejemplo, después de ejecutar python --version para comprobar la versión de Python que instaló, puede ejecutar el intérprete de Python para intentar importar un paquete que aún no se ha instalado (por numpyejemplo, ). Después de obtener la excepción esperada ModuleNotFoundError , ejecute el pip install <package-name> comando para instalar el paquete y, a continuación, vuelva a ejecutar el intérprete de Python para importar ese paquete. El comando de importación ahora debe realizarse correctamente.

  6. Capture la imagen de máquina virtual siguiendo los pasos descritos en Creación de una imagen de una máquina virtual en el portal, pero aplique solo la siguiente configuración en la página Crear una imagen .

    Nombre de valor de configuración Valor de configuración
    Grupo de recursos Seleccione en la lista de grupos de recursos o seleccione Crear nuevo para crear un grupo de recursos.
    Galería de proceso de Azure de destino Seleccione en la lista de galerías de proceso de Azure o seleccione Crear nuevo para crear una galería de proceso de Azure.
    Definición de imagen de máquina virtual de destino Seleccione Crear nuevo. En la página Crear una definición de imagen de máquina virtual , escriba solo el nombre de definición de imagen de máquina virtual que desea asignar a la imagen. (La página proporcionará automáticamente la configuración del publicador, la oferta y la SKU ).
    Número de versión Escriba un número de versión que quiera proporcionar a la imagen de máquina virtual.
  7. Después de aplicar la configuración de la imagen de máquina virtual, seleccione Revisar y crear para comprobar la configuración y, a continuación, seleccione Crear para crear la imagen. En este paso se crean los tres tipos de recursos siguientes:

    • Galería de Proceso de Azure
    • Definición de imagen personalizada
    • Versión de definición de imagen personalizada
  8. Una vez creados los tres recursos, siga estos pasos para crear un nuevo grupo de lotes que use la imagen de máquina virtual:

    1. En el Azure Portal, busque y seleccione Cuentas de Batch.

    2. En la lista de cuentas por lotes, seleccione su cuenta.

    3. En el panel de menús de la cuenta de lote, seleccione Grupos y, a continuación, seleccione Agregar para crear un grupo de lotes.

    4. En la página Agregar grupo , realice la siguiente configuración y, a continuación, seleccione Aceptar.

      Nombre de valor de configuración Valor de configuración
      Id. de grupo Nuevo nombre del grupo
      Tipo de imagen Imagen personalizada: Shared Image Gallery *
      Galería de imágenes compartidas Nombre de la galería de proceso de Azure de destino que especificó al crear la imagen de máquina virtual.
      Image Nombre de definición de imagen de máquina virtual que especificó al crear la imagen de máquina virtual
      Versión Número de versión que especificó al crear la imagen de máquina virtual
      Sistema operativo Windows
      Distribución del sistema operativo windowsserver
      Sku del sistema operativo Código de producto de la versión del sistema operativo que seleccionó (por ejemplo, microsoftwindowsserver-2019-datacenter)

      * Shared Image Gallery es otro nombre para Azure Compute Gallery. Este es uno de los recursos creados durante la creación de la imagen de máquina virtual.

  9. Una vez asignado el nodo del grupo de lotes, vaya a la página de nodo del grupo de lotes y, a continuación, seleccione Conectar en el menú de encabezado.

  10. En el panel Conectar , seleccione la opción Generar un usuario , seleccione el botón Generar un usuario aleatorio y, a continuación, seleccione Descargar archivo RDP.

  11. Ejecute el archivo RDP descargado para conectarse al nuevo nodo por lotes.

  12. Vuelva a probar la instalación de Python para asegurarse de que la versión preinstalada funciona correctamente.

Referencias

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.