Conceptos de programación y escalado automático de CycleCloud

CycleCloud no es un programador, sino una plataforma que permite a los usuarios implementar su propio programador en Azure, para administrar y distribuir trabajos en un clúster de nodos. Además, CycleCloud proporciona una API REST y una biblioteca de Python para desarrollar adaptadores de escalado automático para programadores, lo que permite que estos clústeres administrados se ajusten o reduzcan el tamaño según la longitud de las colas de trabajos y las directivas de gobernanza.

Diagrama de orquestación

Programadores

Un programador es un software que acepta una lista de trabajos (o tareas) y distribuye estas tareas en grupos de recursos disponibles, teniendo en cuenta los requisitos de recursos de los trabajos, así como las dependencias y prioridades entre trabajos. Estas listas de trabajos se conocen normalmente como colas.

CycleCloud incluye compatibilidad integrada con una serie de programadores usados habitualmente (PBS Professional OSS, Slurm, IBM LSF, Grid Engine y HT Condor), que proporcionan plantillas para implementar estos programadores en Azure. Estas plantillas son topologías predeterminadas, que representan procedimientos recomendados para compilar clústeres de HPC en Azure que aprovechan características especializadas únicas, como las redes infiniBand de baja latencia.

Además, los proyectos se crean para cada programador y se usan para instalar e inicializar demonios del programador en nodos principales y nodos de proceso.

Adaptadores del programador

Los adaptadores creados para cada tipo de programador desempeñan dos roles principales: 1) agregar requisitos de recursos de las colas del programador y 2) traducen los requisitos de recursos en solicitudes de asignación para conjuntos de tamaños de máquina virtual de Azure. Estas solicitudes de asignación se construyen teniendo en cuenta ciertas restricciones, por ejemplo, las cuotas de máquina virtual, los límites del tamaño del clúster y los límites impuestos por la topología de red InfiniBand (para tamaños de máquina virtual adecuados). En ciertos aspectos, estos adaptadores se asemejan a un agente que negocia la demanda y el suministro de varias partes.

Monitor

El monitor es un proceso que se ejecuta en el servidor de aplicaciones cycleCloud y sondea periódicamente los servicios de Azure para obtener disponibilidad de recursos en la suscripción de Azure. Este monitor proporciona esta información a los adaptadores del programador para el agente de demanda.

Asignador de nodo

El asignador de nodos se ejecuta en el servidor de aplicaciones cycleCloud. Recibe la solicitud de asignación de los adaptadores del programador a través de una API REST, aprovisiona los recursos de Azure necesarios para satisfacer la solicitud y presenta los recursos aprovisionados de nuevo a los adaptadores del programador como conjuntos de nodos.

Nota

Aunque los conceptos subyacentes anteriores son comunes entre los programadores, los detalles de implementación difieren entre los programadores. Consulte las páginas del programador individuales para obtener información más detallada sobre cada implementación.