Nodos y grupos en Azure Batch

En un flujo de trabajo de Azure Batch, un nodo de proceso (o nodo) es una máquina virtual que procesa una parte de la carga de trabajo de la aplicación. Un grupo es una colección de estos nodos para que la aplicación se ejecute. En este artículo se ofrece más información sobre nodos y grupos, junto con consideraciones al crearlos y usarlos en un flujo de trabajo de Azure Batch.

Nodos

Un nodo es una máquina virtual de Azure o una máquina virtual de servicio en la nube dedicada al procesamiento de una parte de la carga de trabajo de la aplicación. El tamaño de un nodo determina el número de núcleos de CPU, la capacidad de memoria y el tamaño del sistema de archivos local que se asignan al nodo.

Puede crear grupos de nodos de Windows o Linux mediante Azure Cloud Services, imágenes de Azure Virtual Machines Marketplace o imágenes personalizadas que prepare.

Los nodos pueden ejecutar cualquier archivo ejecutable o script compatible con el entorno de sistema operativo del nodo. Los scripts o archivos ejecutables incluyen scripts *.exe, *.cmd, *.bat y de PowerShell (para Windows) además de archivos binarios y scripts de shell y de Python (para Linux).

Todos los nodos de proceso en Batch también incluyen:

De forma predeterminada, los nodos pueden comunicarse entre sí, pero no pueden comunicarse con máquinas virtuales que no forman parte del mismo grupo. Para permitir que los nodos se comuniquen de manera segura con otras máquinas virtuales o con una red local, puede aprovisionar el grupo en una subred de una red de Azure Virtual Network (VNet). Al hacerlo, se puede tener acceso a los nodos a través de direcciones IP públicas. Batch crea estas direcciones IP públicas, que pueden cambiar durante la vigencia del grupo. También puede crear un grupo con direcciones IP públicas estáticas bajo su control, lo que garantiza que no cambiarán de forma inesperada.

Grupos

Un grupo es la colección de nodos en la que se ejecuta la aplicación.

Los grupos de Azure Batch se basan en la plataforma de proceso principal de Azure. Proporcionan asignación a gran escala, instalación de aplicaciones, distribución de datos, supervisión de estado y ajuste flexible (escalado) del número de nodos de proceso en un grupo.

A cada nodo que se agrega a un grupo se le asigna un nombre y una dirección IP únicos. Cuando se quita un nodo de un grupo, los cambios realizados en el sistema operativo o los archivos se pierden, y su nombre y dirección IP se liberan para usarlos en un futuro. Cuando un nodo abandona un grupo, su vigencia finaliza.

Un grupo solo se puede usar con la cuenta de Batch en la que se creó. Una cuenta de Batch puede crear varios grupos para satisfacer los requisitos de recursos de las aplicaciones que ejecutará.

El grupo se puede crear de forma manual, o bien automáticamente por el servicio Batch cuando se especifica el trabajo que se va a realizar. Cuando se crea un grupo, puede especificar los siguientes atributos:

Importante

Las cuentas de Batch tienen una cuota predeterminada que limita el número de núcleos en ellas. El número de núcleos corresponde al número de nodos de proceso. Tanto las cuotas predeterminadas como las instrucciones para aumentar una cuota se pueden encontrar en Límites y cuotas del servicio de Batch de Azure. Si el grupo no está consiguiendo su número de nodos de destino, la causa podría ser la cuota básica.

Sistema operativo y versión

Al crear un grupo de Batch, se especifica la configuración de máquina virtual de Azure y el tipo de sistema operativo que quiere ejecutar en cada nodo de proceso del grupo.

Configurations

Configuración de máquina virtual

La Configuración de máquina virtual especifica que el grupo está formado por máquinas virtuales de Azure. Estas máquinas virtuales pueden crearse a partir de imágenes de Linux o Windows.

El agente de nodo del servicio Batch es un programa que se ejecuta en cada nodo del grupo y proporciona la interfaz de comandos y control entre el nodo y el servicio Batch. Hay diferentes implementaciones del agente de nodo, conocidas como SKU, para distintos sistemas operativos. Cuando crea un grupo basado en la configuración de máquina virtual, debe especificar no solo el tamaño de los nodos y el origen de las imágenes utilizadas para crearlos, sino también la referencia de la imagen de máquina virtual y la SKU del agente de nodo de Batch que desea instalar en los nodos. Para más información sobre cómo especificar estas propiedades del grupo, consulte Aprovisionamiento de nodos de proceso de Linux en grupos del servicio Azure Batch. También puede asociar uno o más discos de datos vacíos a las máquinas virtuales del grupo creadas con imágenes de Marketplace, o bien incluir discos de datos en imágenes personalizadas usadas para crear las máquinas virtuales. Al incluir discos de datos, deberá montar y dar formato a los discos desde una máquina virtual para usarlos.

SKU de agentes de nodos

Cuando crea un grupo, debe seleccionar la opción nodeAgentSkuId apropiada, en función del sistema operativo de la imagen base de su VHD. Puede obtener una asignación de identificadores de SKU de agentes de nodos disponibles a sus referencias de imágenes del sistema operativo mediante una llamada a la operación List supported node agent SKUs (Lista de SKU admitidas de agentes de nodos).

Imágenes personalizadas de grupos de máquinas virtuales

Para obtener información sobre cómo crear un grupo con imágenes personalizadas, vea Uso de Azure Compute Gallery para crear un grupo personalizado.

Compatibilidad con contenedores en grupos de máquinas virtuales

Al crear un grupo de configuración de máquinas virtuales mediante las API de Batch, puede configurar el grupo para ejecutar tareas en contenedores de Docker. Actualmente, debe crear el grupo con una imagen que admita contenedores de Docker. Use Windows Server 2016 Datacenter con la imagen Containers de Azure Marketplace, o proporcione una imagen de máquina virtual personalizada que incluya Docker Community Edition o Enterprise y los controladores necesarios. La configuración del grupo debe incluir una configuración de contenedor que copie las imágenes del contenedor en las máquinas virtuales cuando se crea el grupo. De esta forma, las tareas que se ejecutan en el grupo pueden hacer referencia a las imágenes y a las opciones de ejecución del contenedor.

Para más información, vea Ejecución de aplicaciones de contenedor de Docker en Azure Batch.

Tamaño y destino de nodo

Al crear un grupo, puede especificar qué tipos de nodos le interesan y un número de destino para cada uno. Los dos tipos de nodos son los siguientes:

  • Nodos dedicados. Los nodos de proceso dedicados están reservados para las cargas de trabajo que usted tenga. Son más caros que los nodos de Spot, pero se garantiza que nunca se adelantan.
  • Nodos de spot. Los nodos de spot aprovechan la capacidad sobrante de Azure para ejecutar las cargas de trabajo de Batch. Los nodos de spot son menos costosos por hora que los nodos dedicados y permiten cargas de trabajo que requieren una potencia de proceso significativa. Para más información, consulte Uso de máquinas virtuales de Spot con Batch.

Los nodos de spot se pueden adelantar cuando Azure no tiene suficiente capacidad sobrante. Si se reemplaza un nodo mientras ejecuta tareas, las tareas se vuelven a poner en cola y se ejecutan de nuevo en cuanto está disponible un nodo de proceso. Los nodos de spot son una buena opción para cargas de trabajo en las que el tiempo de finalización del trabajo es flexible y el trabajo se distribuye entre muchos nodos. Antes de decidir usar los nodos de Spot para su escenario, asegúrese de que cualquier trabajo perdido debido a la adelantación será mínimo y fácil de volver a crear.

Puede tener nodos de proceso de spot y dedicados en el mismo grupo. Cada tipo de nodo tiene su propia configuración de destino, para la que puede especificar el número deseado de nodos.

El número de nodos de proceso se conoce como destino porque, en algunas situaciones, es posible que el grupo no alcance el número deseado de nodos. Por ejemplo, un grupo podría no alcanzar el destino si alcanza primero la cuota de núcleos de la cuenta de Batch. O bien, es posible que el grupo no alcance el destino si le ha aplicado una fórmula de escalado automático que limita el número máximo de nodos.

Para obtener información sobre los precios de los nodos spot y dedicados, consulte Precios de Batch.

Tamaño del nodo

Cuando se crea un grupo de Azure Batch, puede elegir entre casi todas las familias y tamaños de máquinas virtuales disponibles en Azure. Azure ofrece varios tamaños de máquina virtual apropiados para las distintas cargas de trabajo, entre los que se incluyen los tamaños de máquina virtual especializados con HPC o Habilitados para GPU. Tenga en cuenta que los tamaños de nodo solo se pueden elegir en el momento en que se crea un grupo. En otras palabras, una vez que se crea un grupo, no se puede cambiar su tamaño de nodo.

Para más información, consulte Choose a VM size for compute nodes in an Azure Batch pool (Elección de un tamaño de máquina virtual para nodos de proceso en un grupo de Azure Batch).

Directivas de escalado automático

Para cargas de trabajo dinámicas, puede aplicar una directiva de escalado automático a un grupo. El servicio Batch evaluará de forma periódica la fórmula y ajusta dinámicamente el número de nodos del grupo según la carga de trabajo actual y el uso de los recursos en el escenario de proceso. Esto le permite reducir el costo general de la ejecución de la aplicación usando solo los recursos que necesita, y liberando los que no.

Para habilitar el escalado automático, escriba una fórmula de escalado automático y asóciela con un grupo. El servicio Batch usa la fórmula para determinar el número objetivo de nodos del grupo para el siguiente intervalo de escalado (un intervalo que puede configurar). Puede especificar la configuración de escalado automático para un grupo cuando lo cree o habilitar el escalado en un grupo más adelante. También puede actualizar la configuración de escalado en un grupo habilitado para el escalado.

Como ejemplo, quizás un trabajo requiera que envíe un gran número de tareas para que se ejecuten. Puede asignar al grupo una fórmula de escalado que ajuste el número de nodos del grupo en función del número actual de tareas en cola y la tasa de finalización de las tareas del trabajo. El servicio Batch evalúa periódicamente la fórmula y cambia el tamaño del grupo en función de la carga de trabajo y del resto de ajustes de configuración de la fórmula. El servicio agrega nodos según sea necesario cuando haya un gran número de tareas en cola y quita los nodos cuando no haya ninguna tarea en cola o en ejecución.

Una fórmula de escalado puede basarse en las siguientes métricas:

  • Métricas de tiempo : se basan en las estadísticas recopiladas cada cinco minutos en el número especificado de horas.
  • Métricas de recursos : se basan en el uso de CPU, ancho de banda y memoria y en el número de nodos.
  • Métricas de tareas: se basan en el estado de la tarea, como Activa (en cola), En ejecución o Completada.

Cuando el escalado automático reduce el número de nodos de proceso en un grupo, debe considerar cómo administrará las tareas que se están ejecutando en el momento en que se realiza la operación de reducción. Para ello, Batch proporciona una opción de desasignación de nodos que se puede incluir en las fórmulas. Por ejemplo, puede especificar que las tareas en ejecución se detengan de inmediato y se vuelvan a poner en cola para ejecutarlas en otro nodo o se dejen finalizar antes de que se quite el nodo del grupo. Tenga en cuenta que si se establece la opción de desasignación de nodos en taskcompletion o retaineddata, se evitarán las operaciones de cambio de tamaño de los grupos hasta que se completen todas las tareas o hasta que expiren todos los períodos de retención de tareas, respectivamente.

Para obtener más información sobre cómo escalar automáticamente una aplicación, consulte Escalado automático de nodos de ejecución en un grupo de Azure Batch.

Sugerencia

Para maximizar el uso de los recursos de proceso, establezca en cero el número objetivo de nodos al final de un trabajo, pero permita que las tareas en ejecución finalicen.

Directiva de programación de tareas

La opción de configuración Máximo de tareas por nodo determina la cantidad máxima de tareas que se pueden ejecutar en paralelo en cada nodo de proceso del grupo.

La configuración predeterminada especifica que se ejecuta una sola tarea al mismo tiempo en un nodo. Sin embargo, hay situaciones en las que resulta ventajoso que se ejecuten simultáneamente dos o más tareas en un nodo. Consulte el escenario de ejemplo en el artículo sobre tareas simultáneas de nodo para ver cómo puede beneficiarse de la ejecución de varias tareas por nodo.

También puede especificar un tipo de relleno que determina si el servicio Batch distribuye las tareas uniformemente entre todos los nodos de un grupo o llena cada uno con el número máximo de tareas antes de asignar tareas a otro.

Estado de la comunicación

En la mayoría de los escenarios, las tareas funcionan de forma independiente y no necesitan comunicarse entre sí. Sin embargo, hay algunas aplicaciones en las que las tareas deben comunicarse, como en los escenarios MPI.

Puede configurar un grupo que permita la comunicación entre nodos, de manera que los nodos de un grupo se puedan comunicar en tiempo de ejecución. Cuando se habilita la comunicación entre nodos, los nodos en grupos de configuración de Cloud Services pueden comunicarse entre sí en los puertos superiores a 1100, mientras que los grupos de configuración de máquina virtual no restringen el tráfico en ningún puerto.

Habilitar la comunicación entre nodos también afecta a la colocación de los nodos dentro de los clústeres y puede limitar el número máximo de nodos en un grupo a causa de las restricciones de implementación. Si la aplicación no requiere comunicación entre los nodos, el servicio Batch puede asignar un número potencialmente alto de nodos al grupo desde muchos clústeres y centros de datos diferentes para permitir el aumento de la potencia del procesamiento paralelo.

Tareas de inicio

Si es necesario, puede agregar una tarea de inicio que se ejecutará en cada nodo cada vez que este se une al grupo y cada vez que se reinicia un nodo o se restablece su imagen inicial. La tarea de inicio resulta especialmente útil para preparar los nodos de proceso para la ejecución de tareas, como la instalación de las aplicaciones que las tareas ejecutan en los nodos de proceso.

paquetes de aplicación

Puede especificar paquetes de aplicación que se implementarán en los nodos de proceso del grupo. Los paquetes de aplicación proporcionan una implementación simplificada y el control de las versiones de las aplicaciones que ejecutan las tareas. Los paquetes de aplicación que se especifiquen para un grupo se instalarán en todos los nodos que se unan al grupo cada vez que un nodo se reinicie o se restablezca la imagen inicial.

Para más información sobre el uso de los paquetes de aplicación para implementar las aplicaciones en los nodos de Batch, consulte Implementación de aplicaciones en nodos de proceso con paquetes de aplicaciones de Batch.

Configuración de red virtual y de firewall

Al aprovisionar un grupo de nodos de proceso en Batch, dicho grupo se puede asociar a una subred de una red virtual de Azure. Para usar una red virtual de Azure, la API de cliente de Batch debe usar la autenticación de Microsoft Entra. La compatibilidad de Azure Batch con Microsoft Entra ID se documenta en Autenticación de soluciones de servicios de Batch con Active Directory.

Requisitos de la red virtual

Para más información sobre cómo configurar un grupo de Batch en una red virtual, consulte Create a pool of virtual machines with your virtual network (Creación de un grupo de máquinas virtuales con la red virtual).

Sugerencia

Para asegurarse de que las direcciones IP públicas usadas para tener acceso a los nodos no cambian, puede crear un grupo con direcciones IP públicas especificadas bajo su control.

Vigencia de grupo y nodo de proceso

Al diseñar la solución de Azure Batch, debe especificar cómo y cuándo se crean los grupos y cuánto tiempo se mantendrán disponibles los nodos de proceso dentro de esos grupos.

Por una parte, puede crear un grupo para cada trabajo que envíe el trabajo y eliminarlo a medida que se terminen de ejecutar las tareas. Esto maximiza su uso ya que los nodos solo se asignan cuando es necesario y se apagan en cuanto se vuelven inactivos. Aunque esto significa que el trabajo debe esperar a que se asignen los nodos, es importante tener en cuenta que las tareas se programarán para su ejecución tan pronto como los nodos se asignen de forma individual y se haya completado la tarea de inicio. Batch no espera a que todos los nodos de un grupo estén disponibles antes de asignarles tareas. Esto garantiza la utilización máxima de todos los nodos disponibles.

Por otro lado, si lo más importante es que los trabajos se inicien inmediatamente, se puede crear un grupo antes de tiempo y hacer que sus nodos estén disponibles antes de que se envíen los trabajos. En este escenario, las tareas se pueden iniciar inmediatamente, pero los nodos permanecerán inactivos mientras esperan a que se les asignen las tareas.

Normalmente, se usa un enfoque combinado para controlar una carga variable, pero en curso. Puede tener un grupo en el que se envíen varios trabajos y puede escalar o reducir verticalmente el número de nodos según la carga del trabajo. Puede realizar esto de manera reactiva, según la carga actual o de forma anticipada si se puede predecir la carga. Para obtener más información, vea Directiva de escalado automático.

Autogrupos

Un autogrupo es un grupo que se crea mediante el servicio de Batch cuando se envía un trabajo, en lugar de crearse antes que los trabajos que se ejecuten en el grupo. El servicio de Batch administrará la duración de un autogrupo en función de las características que especifique. A menudo, estos grupos también se establecen para eliminarse automáticamente una vez que se han completado sus trabajos.

Seguridad con certificados

Normalmente necesitará usar certificados al cifrar o descifrar información confidencial para las tareas, como la clave de una cuenta de Azure Storage. Para ello, puede instalar certificados en los nodos. Los secretos cifrados se pasan a las tareas mediante parámetros de línea de comandos o se insertan en uno de los recursos de tarea, y los certificados instalados se pueden usar para descifrarlos.

Use la operación Agregar certificado (REST de Batch) o el método CertificateOperations.CreateCertificate (Batch para .NET) para agregar un certificado a una cuenta de Batch. Se puede asociar el certificado a un grupo nuevo o existente.

Cuando se asocia un certificado a un grupo, el servicio Batch instala el certificado en cada nodo del grupo. El servicio Batch instala los certificados adecuados cuando se inicia el nodo, antes de iniciar ninguna tarea (incluidas la de inicio y la del administrador de trabajos).

Si agrega un certificado a un grupo existente, tendrá que reiniciar sus nodos de proceso para que el certificado se pueda aplicar a los nodos.

Pasos siguientes