Compartir a través de


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 ejecutable o script compatible con el entorno del 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 y puede cambiar durante la vigencia del grupo. También puede crear un grupo con direcciones IP públicas estáticas que controle, lo que garantiza que no cambien inesperadamente.

Piscinas

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 puede ser utilizado por la cuenta Batch en la que fue creado. Una cuenta de Batch puede crear varios grupos para cumplir los requisitos de recursos de las aplicaciones que necesitan ejecutarse.

La piscina se puede crear de manera manual o 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 tu pool no está alcanzando el número objetivo de nodos, podría deberse a la cuota de núcleos.

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.

Configuraciones

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. Las tareas que se ejecutan en el pool pueden hacer referencia a las imágenes del contenedor y a las opciones de ejecución del mismo.

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

Tipo 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. Normalmente son más caros que los nodos de Spot, pero se garantiza que nunca se interrumpan.
  • Nodos de acceso puntual. 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 nodos Spot para su escenario, asegúrese de que cualquier trabajo perdido debido a la preempción sea mínimo y fácil de reanudar o recrear.

Puede tener nodos de acceso puntual y de proceso 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 ha aplicado una fórmula de escalado automático al grupo que limita el número máximo de nodos.

Nota:

Cuando se interrumpen los nodos de cómputo de acceso puntual de Batch, pasan primero al estado unusable. Después de un tiempo, estos nodos de cómputo transicionarán para reflejar el estado preempted. Batch habilita automáticamente el comportamiento Intento de restauración para restaurar instancias de acceso puntual expulsadas con un objetivo de mejor esfuerzo para mantener los recuentos de instancias de destino.

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. Los tamaños de máquina virtual de nodo solo se pueden elegir en el momento en que se crea un grupo. En otras palabras, una vez creado un grupo, no se puede cambiar su tamaño de máquina virtual.

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 evalúa periódicamente la fórmula y ajusta dinámicamente el número de nodos dentro del grupo según la carga de trabajo actual y el uso de recursos del 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. Al establecer la opción de desasignación de nodos como taskcompletion o retaineddata se impide que las operaciones de cambio de tamaño del grupo se completen hasta que se completen todas las tareas, o cuando 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 una tarea a la vez se ejecuta en un nodo, pero hay escenarios en los que resulta beneficioso tener dos o más tareas ejecutadas en un nodo simultáneamente. Consulte el escenario de ejemplo en el artículo sobre tareas de nodos simultáneos para saber cómo puede beneficiarse potencialmente de múltiples 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 la comunicación internodal está habilitada, los nodos de los grupos de configuración de Cloud Services pueden comunicarse entre ellos a través de puertos superiores a 1100, y 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 nodos, el servicio Batch puede asignar un número potencialmente elevado de nodos al grupo desde muchos clústeres y centros de datos diferentes para habilitar una mayor potencia de procesamiento en paralelo.

Iniciar tareas

Si lo desea, puede agregar una tarea de inicio que se ejecute en cada nodo a medida que ese nodo se une al grupo y cada vez que se reinicia o se vuelve a crear una imagen de un nodo. 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 el uso porque los nodos solo se asignan cuando es necesario y se apagan una vez que están inactivos. Aunque esto significa que el trabajo debe esperar a que se asignen los nodos, es importante señalar que las tareas se programan para su ejecución tan pronto como los nodos se asignan individualmente y se completa la tarea de inicio, si se ha especificado esperar a que la tarea de inicio termine. Batch no espera hasta que todos los nodos de un grupo estén disponibles antes de asignar tareas a los nodos. 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 autopool es un pool que el servicio Batch crea cuando se envía un trabajo, en lugar de crearse explícitamente antes de los trabajos que se ejecutarán en el pool. El servicio de Batch administra la duración de un grupo automático según las características que especifique. Normalmente, estos grupos también se establecen para eliminarse automáticamente una vez completados 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