Descripción del escalado automático y la integración de programadores en Azure CycleCloud

Completado

El uso de la agilidad de la nube permite a las empresas aprovechar al máximo las funcionalidades de hiperescala de Azure, a la vez que minimizan el costo operativo asociado al uso de recursos de proceso. La capacidad de escalar automáticamente la cantidad de recursos en respuesta a sus patrones de uso es un componente básico de dicha agilidad. En el contexto de Azure CycleCloud y HPC, esto se traduce en la implementación de una correlación estrecha entre las demandas de recursos de los trabajos del clúster y el número de nodos de ejecución del clúster.

En general, la orquestación del escalado de los nodos de clúster es responsabilidad de los programadores. Los programadores deben ser capaces de comunicar sus demandas a la plataforma que proporciona los recursos de proceso. Azure CycleCloud ayuda a implementar esta funcionalidad. En esta unidad, obtendrá información sobre los principios de esta implementación.

¿Qué rol desempeña Azure CycleCloud en el escalado automático del clúster?

Azure CycleCloud facilita la implementación de programadores en Azure que, a su vez, distribuyen y administran los trabajos que se ejecutan en clústeres compuestos por recursos de Azure. Azure CycleCloud no funciona como un programador, sino como un intermediario entre los programadores y la plataforma subyacente. Azure CycleCloud también simplifica el desarrollo de la funcionalidad de escalado automático para los programadores correspondientes, ya que proporciona una interfaz de programación basada en API REST y una biblioteca cliente basada en Python.

Azure CycleCloud permite correlacionar el comportamiento de escalado automático de los clústeres administrados con la longitud de las colas de trabajos del clúster. Puede personalizar aún más este comportamiento si define parámetros de plantilla que controlen, por ejemplo, el período de tiempo tras el cual se finalizan los nodos inactivos o la frecuencia de las comprobaciones de interrupción automática.

Todas las plantillas integradas exponen la configuración de escalado automático directamente en la interfaz gráfica de Azure CycleCloud. En cada caso, la configuración incluye la opción de especificar los límites inferior y superior del intervalo de escalado automático, expresados en el número de núcleos de CPU. El límite superior ayuda a minimizar la posibilidad de que se produzcan cargos imprevistos. Puede mitigar aún más este riesgo si configura alertas de presupuesto.

Si el umbral inferior está establecido en 0, la creación de un clúster tiene como resultado el aprovisionamiento solamente del nodo principal del programador. Aun así, si el programador detecta trabajos en cola, iniciará el aprovisionamiento de los nodos de ejecución necesarios para ejecutar la carga de trabajo correspondiente, hasta el límite que haya definido. Para admitir trabajos paralelos o de acoplamiento flexible, donde las tareas individuales se ejecutan de forma independiente entre sí, los trabajos empiezan a ejecutarse en cuanto el primer nodo está disponible. En el caso de los trabajos estrechamente acoplados, como los que usan la funcionalidad de interfaz de paso de mensajes (MPI), el tiempo de espera es mayor, según la extensión de las dependencias entre nodos. Después de que la cola de trabajos se vacíe durante un período de tiempo superior al tiempo de inactividad permitido, los nodos de ejecución empiezan a interrumpirse automáticamente y el clúster vuelve a constar solo del nodo principal del programador.

Nota:

Los conceptos básicos que se describen en esta unidad son comunes entre los programadores, pero los detalles de implementación dependen de cada programador. Para obtener información detallada sobre cada implementación, consulte la documentación del programador específico.

¿Cómo se integran programadores con el escalado automático de Azure CycleCloud?

Los dos componentes principales que implementan la integración con el escalado automático de Azure CycleCloud son la biblioteca de escalabilidad automática y la calculadora de demanda de Azure CycleCloud.

Diagrama de la arquitectura de alto nivel de Azure CycleCloud.

La biblioteca de escalabilidad automática de Azure CycleCloud es un proyecto de código abierto hospedado en GitHub que permite a los asistentes de Python simplificar el desarrollo del escalado automático para cualquier programador implementado en Azure. Los asistentes usan la API REST de Azure CycleCloud para orquestar el aprovisionamiento de los recursos de Azure. El proyecto usa Python 3 y tiene muchas dependencias de Python. Aun así, su funcionalidad principal se basa en la biblioteca cliente de Python de Azure CycleCloud. La escalabilidad automática se integra con los nodos principales del programador que supervisan las colas de trabajos. La escalabilidad automática aumenta o reduce el número de nodos de ejecución mediante la interacción con la API REST de escalabilidad automática que se ejecuta en el servidor de aplicaciones de Azure CycleCloud.

La calculadora de demanda es responsable de evaluar los requisitos de recursos en función del nodo de ejecución y los datos del trabajo que recopila el programador. Esta evaluación tiene en cuenta las restricciones de proceso y red, como el tamaño máximo del clúster o los límites relacionados con InfiniBand. Los requisitos de recursos resultantes se traducen en una solicitud de aprovisionamiento o desaprovisionamiento de máquinas virtuales de Azure de un tamaño y configuración determinados. La biblioteca de escalabilidad automática retransmite estas solicitudes a la API de REST de Azure CycleCloud, que las entrega mediante su orquestador a Azure Resource Manager.

Nota:

Aunque la integración del programador admite cargas de trabajo paralelas o de acoplamiento flexible en las que la administración del tamaño del clúster es la consideración principal, Azure CycleCloud también admite cargas de trabajo estrechamente acopladas, en las que la proximidad del nodo y la latencia de red son fundamentales.