Clústeres de CycleCloud

En CycleCloud, el término clúster se usa para describir un grupo de equipos conectados (nodos) que funcionan juntos como un único sistema. Los clústeres se pueden anidar; por ejemplo, un clúster de proceso que consta de un nodo principal del programador del motor de cuadrícula y nodos de proceso puede montar un clúster de BeeGFS que consta de varios metadatos y servidores de almacenamiento, con clústeres de proceso y almacenamiento que se fusiona en un único clúster o sistema de HPC primario.

Diagrama de información general

Nodos y matrices de nodos

Los clústeres constan fundamentalmente de nodos, cada uno de los cuales realiza un rol específico en el sistema HPC. Los términos node y VM se usan indistintamente ocasionalmente, pero se separan semánticamente en CycleCloud. Los nodos que componen un clúster son, en esencia, máquinas virtuales en Azure que han completado el proceso de preparación y configuración. En otras palabras, las máquinas virtuales se aprovisionan a partir de las capas de servicio de infraestructura de Azure y sus estados finales son nodos de un clúster de HPC después de pasar por los pasos de instalación y configuración de software.

Diagrama de la arquitectura

Hay dos encarnaciones independientes de nodos en CycleCloud. La primera como un nodo independiente y la segunda como una matriz de nodos, que es una colección de nodos configurados de forma idéntica (la distinción de nodo frente a nodearray sigue la analogía de DevOps Pets frente a Ganado en espíritu). En general, pero no estrictamente hablando, los nodos independientes se construyen a partir de máquinas virtuales únicas en Azure mientras que nodearrays se asignan a conjuntos de escalado de máquinas virtuales (VMSS).

Sin embargo, hay diferencias cruciales entre nodearrays y conjuntos de escalado de máquinas virtuales, el principal que es que una sola nodoarray puede componer varios conjuntos de escalado de máquinas virtuales. Esto permite que una única matriz de nodos se compile a partir de máquinas virtuales de tamaños de diferencia, o incluso familias de máquinas virtuales diferentes, con la única restricción de que todos los nodos de una matriz de nodos tengan el mismo rol en el clúster, por ejemplo, proporcionando recursos a una sola cola de un programador.

Plantillas de clúster

La topología, o cómo se organizan los nodos en un clúster de CycleCloud, se definen en plantillas de texto que definen las relaciones entre los nodos de un clúster y, en el caso de los clústeres anidados, la relación de elementos primarios y secundarios de los clústeres. Las plantillas también proporcionan los medios para definir el rol que juega cada nodo.

Las plantillas de clúster se definen en formato INI. Las secciones, delineadas mediante corchetes , se usan para definir clústeres[], nodos y nodoarrays. El elemento básico de los archivos INI son aserciones de par clave-valor que proporcionan los detalles de configuración de cada sección. Estos detalles de configuración proporcionan información contextual que se usa para crear cada nodo de un clúster, a partir de la imagen de máquina virtual utilizada para arrancar la máquina virtual en la subred en la que se va a aprovisionar la máquina virtual. Más información sobre las plantillas de clúster de CycleCloud

Preparación y configuración del nodo

CycleCloud aprovisiona máquinas virtuales de imágenes de máquina virtual base definidas en la plantilla de clúster y a través de una serie de pasos administrados por el agente cycleCloud (Jetpack) durante el proceso de arranque, inicializa y configura el sistema operativo en la máquina virtual para convertirlo en un nodo de HPC en funcionamiento. Estos pasos van desde scripts para instalar y configurar el software de programación hasta la configuración de última milla para montar un sistema de archivos.

Diagrama de preparación de nodos

Las especificaciones cluster-init definidas en la sección de configuración de cada nodo son especificaciones de cluster-init que se proporcionan a cada máquina virtual de arranque que se usa para prepararla para un rol específico en el clúster. CycleCloud utiliza Chef como plataforma de automatización de la infraestructura para preparar y configurar cada nodo. En esencia, cada especificación cluster-init se asigna a una de las recetas de chef y /o cookbook que deben ejecutarse en la máquina virtual de arranque.

CycleCloud utiliza Chef en un modo independiente que no se basa en un servidor chef centralizado. En su lugar, todo el conjunto de cookbooks de Chef necesarios para preparar cada máquina virtual se descarga de una cuenta de Azure Storage que pertenece al usuario durante la fase de arranque de la máquina virtual. Este conjunto de cookbooks se almacena en caché desde el servidor de aplicaciones cycleCloud en la cuenta de almacenamiento durante la fase de creación del clúster.

Una vez descargados estos cookbooks, Chef procesa la lista de recetas definidas en las especificaciones cluster-init del nodo, lo que desencadena una fase de preparación y configuración que convierte la máquina virtual en un nodo de HPC en funcionamiento.

Las especificaciones se crean como colecciones lógicas denominadas Projects. Por ejemplo, un proyecto para un programador por lotes, como Slurm, consta de un mínimo de dos especificaciones: una para los nodos principales del programador y la otra para los nodos de proceso. Obtenga más información sobre los proyectos de CycleCloud.

Orquestación de nodos

Según el programador y los servicios usados en un clúster, CycleCloud en ocasiones debe organizar la fase de preparación de los nodos de un clúster mediante la coordinación de distintos nodos. Por ejemplo, algunos programadores requieren que cada nodo de proceso se registre en el demonio del programador, lo que no solo requiere que los nodos de proceso conozcan la dirección del nodo principal, sino que también pueden reconocer que el nodo principal está totalmente preparado y esperar si no es así.

Este elemento de detección de servicios también se usa para las relaciones de cliente de servidor del sistema de archivos y es una característica de CycleCloud.

Lecturas adicionales