Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En CycleCloud, el término clúster describe 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 BeeGFS que consta de varios servidores de metadatos y almacenamiento. Los clústeres de proceso y almacenamiento se unen en un único clúster o sistema de HPC primario.
Nodos y matrices de nodos
Los clústeres componen fundamentalmente nodos, cada uno de los cuales realiza un rol específico en el sistema HPC. Los términos node y VM se usan ocasionalmente indistintamente, pero semánticamente independientes en CycleCloud. Los nodos que componen un clúster son máquinas virtuales en Azure que completan el proceso de preparación y configuración. En otras palabras, se crean máquinas virtuales a partir de las capas de servicio de infraestructura de Azure. Después de instalar el software y completar los pasos de configuración, las máquinas virtuales son nodos de un clúster de HPC.
CycleCloud tiene dos tipos de nodos: nodos independientes y matrices de nodos. Una matriz de nodos es una colección de nodos configurados de forma idéntica. La distinción entre un nodo y una matriz de nodos sigue la analogía de DevOps de Mascotas vs Ganado. Los nodos independientes se construyen a partir de máquinas virtuales únicas en Azure. Las matrices de nodos se asignan a Virtual Machine Scale Sets.
Sin embargo, existen diferencias cruciales entre matrices de nodos y conjuntos de escalado de máquinas virtuales. Una matriz de un solo nodo puede incluir varios conjuntos de escalado de máquinas virtuales. Esta configuración permite crear una matriz de nodo único a partir de máquinas virtuales de diferentes tamaños o incluso diferentes familias de máquinas virtuales. La única restricción es que todos los nodos de una matriz de nodos realizan el mismo rol en el clúster. Por ejemplo, todos los nodos proporcionan recursos a una única cola de una programación.
Plantillas de clúster
Defina la topología o cómo se organizan los nodos en un clúster de CycleCloud, en plantillas de texto. Las plantillas presentan las relaciones entre los nodos de un clúster. Si hay clústeres anidados, las plantillas definen la relación de elementos primarios y secundarios de los clústeres. Las plantillas también definen el rol de cada nodo.
Defina plantillas de clúster en formato INI. Use secciones delineadas con corchetes y [ para definir clústeres], nodos y matrices de nodos. Los elementos básicos 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 para crear cada nodo de un clúster, como la imagen de máquina virtual para arrancar la máquina virtual y la subred de la máquina virtual. Para más información, consulte Plantillas de clúster de CycleCloud.
Preparación y configuración del nodo
CycleCloud aprovisiona máquinas virtuales a partir de imágenes de máquina virtual base definidas en la plantilla de clúster. 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.
Puede controlar cómo se personalizan los nodos durante el arranque mediante la creación de un proyecto de cluster-init personalizado. Un proyecto contiene los scripts y otros archivos necesarios para personalizar un nodo, separados en especificaciones para los distintos tipos de roles de un clúster. Por ejemplo, un proyecto para un programador por lotes, como Slurm, consta de un mínimo de tres especificaciones: una para los nodos principales del programador, otra para los nodos de proceso y otra para los nodos de inicio de sesión. Obtenga más información sobre los proyectos de CycleCloud.
En la definición del nodo, se hace referencia a las especificaciones que se deben ejecutar en ese nodo. Jetpack usa estas especificaciones en el arranque para preparar un nodo para su rol en el clúster. Los archivos de especificación proceden de la cuenta de Blob Storage del usuario y se almacenan provisionalmente desde el servidor de aplicaciones CycleCloud en la cuenta de almacenamiento antes de que se inicien los nodos.
Nota:
Las especificaciones de las plantillas integradas (como el tipo de clúster Slurm) se almacenan en GitHub. CycleCloud los descarga automáticamente en la cuenta de almacenamiento del usuario cuando se inicia el nodo.
Cuando se inicia un nodo, Jetpack descarga las especificaciones definidas en el nodo con la [[[cluster-init]]] sección y las procesa para llevar el nodo a un estado operativo (por ejemplo, para ser un nodo de computación).
Orquestación de nodos
Según el programador y los servicios usados en un clúster, CycleCloud a veces necesita 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 ejecución se registre con el demonio del programador. Este requisito significa que los nodos de cómputo deben conocer la dirección del nodo principal. Los nodos de cómputo también deben reconocer que el nodo principal está totalmente preparado y esperar si no lo está.
CycleCloud usa este elemento de Service Discovery para las relaciones de cliente-servidor del sistema de archivos.