Ejercicio: Incorporación de un disco al nodo de programador de un clúster de HPC

Completado

Azure CycleCloud se basa en plantillas para definir configuraciones de clúster. Su implementación predeterminada incluye plantillas integradas para los programadores más comunes, pero se pueden encontrar muchas otras en el repositorio de GitHub de Azure CycleCloud.

Recuerde que quería probar el proceso de implementación de un clúster mediante una plantilla personalizada de Azure CycleCloud. Para ello, va a aprovechar el repositorio de GitHub de Azure CycleCloud que hospeda el proyecto de Slurm mantenido por Microsoft. Va a modificar una plantilla de clúster existente de este repositorio mediante el cambio de la configuración de almacenamiento del nodo de programador, a importar la plantilla recién modificada en la aplicación de Azure CycleCloud, a usar la interfaz gráfica de la aplicación para crear un clúster y, por último, a validar el cambio de configuración de almacenamiento.

Importante

Para realizar los ejercicios de este módulo, debe cumplir los siguientes requisitos previos:

  • Tener una suscripción a Azure con disponibilidad de núcleos de vCPU de los tres grupos de tamaños de máquina virtual:
    • al menos 4 núcleos de vCPU de la serie DSv3
    • al menos 100 núcleos de vCPU de la serie FSv2
    • al menos 48 núcleos de vCPU de la serie NC
  • Tener una cuenta de Microsoft o de Microsoft Entra con el rol Propietario o Colaborador en la suscripción a Azure.
  • Implementar una aplicación de Azure CycleCloud en una máquina virtual de Azure accesible con una dirección IP pública asociada a su interfaz de red.
  • Configurar la aplicación de Azure CycleCloud con el acceso de nivel de rol Propietario o Colaborador a la suscripción a Azure.
  • Tener una cuenta de usuario de aplicación de Azure CycleCloud con el rol Administrador.
  • Crear una subred de red virtual de Azure en la que pueda implementar nodos de clúster.
  • Tener la clave privada del par de claves SSH usado para configurar la aplicación de Azure CycleCloud.

Nota:

Para obtener información sobre la identificación y el aumento de las cuotas de vCPU en una suscripción a Azure, vea la siguiente documentación:

Nota:

Va a necesitar la clave privada para conectarse directamente a los nodos de clúster en el último ejercicio de este módulo.

En este ejercicio va a realizar las tareas siguientes:

  • Tarea 1: instalación y configuración de la CLI de Azure CycleCloud
  • Tarea 2: configuración de un proyecto de Slurm de Azure CycleCloud
  • Tarea 3: implementación de una plantilla personalizada de Azure CycleCloud
  • Tarea 4: inicio de un nuevo clúster y examen de su configuración de almacenamiento

Tarea 1: instalación y configuración de la CLI de Azure CycleCloud

En la mayoría de las tareas de administración de este y de los subsiguientes ejercicios se usa la CLI de Azure CycleCloud, así que, para comenzar, va a instalarla y conectarla a la aplicación de Azure CycleCloud. Para simplificar la configuración inicial, va a usar Azure Cloud Shell.

Nota:

Como alternativa, puede iniciar sesión en la máquina virtual de Azure que hospeda la aplicación de Azure CycleCloud, donde la CLI de Azure CycleCloud ya está instalada.

  1. En el equipo, inicie cualquier explorador web compatible con Azure Portal, vaya a Azure Portal y, cuando se le pida, autentíquese con una cuenta de Microsoft o de Microsoft Entra que tenga el rol Colaborador o Propietario en la suscripción a Azure que va a usar en este módulo.

    Nota:

    Azure Portal admite los exploradores web modernos más comunes, incluidas las versiones actuales de Microsoft Edge, Google Chrome, Mozilla Firefox y Apple Safari.

  2. En Azure Portal, abra Cloud Shell. Para ello, seleccione su icono en la barra de herramientas que se encuentra junto al cuadro de texto de búsqueda.

  3. Si se le pide que seleccione Bash o PowerShell, seleccione Bash.

    Nota:

    Si es la primera vez que inicia Azure Cloud Shell y aparece el mensaje No tiene ningún almacenamiento montado, seleccione la suscripción que usa en este ejercicio y, luego, elija Crear almacenamiento.

  4. En la sesión de Bash en el panel Azure Cloud Shell, ejecute el siguiente comando para establecer el valor de una variable en la dirección IP pública del servidor de aplicaciones de Azure CycleCloud (reemplace el marcador de posición <public_ip_address> por la dirección IP pública real):

    PIP=<public_ip_address>
    
  5. Ejecute el siguiente comando para descargar el archivo ZIP que contiene el instalador de la CLI específico de la instancia de Azure CycleCloud:

    curl -O --insecure https://$PIP/static/tools/cyclecloud-cli.zip
    
  6. Ejecute los siguientes comandos en sucesión para extraer y ejecutar el script que realiza la instalación de la CLI de Azure CycleCloud:

    unzip ./cyclecloud-cli.zip
    cd ./cyclecloud-cli-installer
    ./install.sh
    

    Nota:

    Pase por alto los mensajes relacionados con la variable de entorno path y vaya al paso siguiente.

  7. Ejecute el siguiente comando para establecer una conexión a la instancia de Azure CycleCloud, donde los marcadores de posición <username> y <password> designan las credenciales de la cuenta de usuario de la aplicación de Azure CycleCloud con el rol Administrador:

    cyclecloud initialize --batch --url=https://$PIP --username=<username> --password=<password> --verify-ssl=false
    

    Nota:

    El parámetro --verify-ssl establecido en false da cabida a escenarios en los que la aplicación de Azure CycleCloud está configurada con un certificado autofirmado o un certificado de una entidad de certificación que no es de confianza.

  8. Ejecute el siguiente comando para comprobar la conexión a la instancia de Azure CycleCloud mediante la visualización de la configuración de su almacén:

    cyclecloud locker list
    

    Nota:

    La salida debe incluir los nombres de los almacenes de cada suscripción a Azure registrada en CycleCloud y sus respectivos contenedores en cuentas de Azure Storage individuales. Debe registrar el nombre del almacén correspondiente a la suscripción a Azure que piensa usar para este laboratorio, ya que lo va a necesitar más adelante en este ejercicio. La salida del comando tiene el siguiente formato (donde el marcador de posición <locker-name> representa el nombre del almacén, el marcador de posición <storage_account_name> representa el nombre de la cuenta de almacenamiento que hospeda ese almacén y el marcador de posición <container_name> representa el nombre del contenedor de almacenes dentro de esa cuenta de almacenamiento):

    <locker-name> (az://<storage_account_name>/<container_name>)
    

Tarea 2: configuración de un proyecto de Slurm de Azure CycleCloud

A continuación va a configurar un proyecto de Slurm de Azure CycleCloud de ejemplo. Va a aprovechar un proyecto de Slurm existente del repositorio de GitHub de Azure CycleCloud. Lo va a capturar en el directorio principal de Azure Cloud Shell y luego lo va a cargar en el almacén de Azure CycleCloud.

  1. En el equipo, en la sesión de Bash en el panel Azure Cloud Shell, ejecute los siguientes comandos para crear un directorio de proyecto y capturar un proyecto de Slurm del repositorio de GitHub correspondiente.

    mkdir ~/cyclecloud-slurm && cd ~/cyclecloud-slurm
    cyclecloud project fetch https://github.com/Azure/cyclecloud-slurm . 
    

    Nota:

    Asegúrese de incluir el punto final del segundo comando.

  2. Ejecute el siguiente comando para designar el almacén predeterminado y cargar el proyecto en él (reemplace el marcador de posición <locker_name> por el nombre del almacén que ha identificado en la tarea anterior, como cc-lab-subscription-storage):

    cyclecloud project default_locker <locker_name>
    cyclecloud project upload 
    

    Nota:

    Como alternativa, puede ejecutar cyclecloud project upload <locker_name>, donde el marcador de posición <locker_name> designa el nombre del almacén.

    Nota:

    Omita el mensaje de error relacionado con azcopy que indica Cannot perform sync due to error: sync must happen between source and destination of the same type, e.g., either file <-> file, or directory/container <-> directory/container seguido de Upload failed! siempre y cuando las copias individuales de los archivos del proyecto se hayan realizado correctamente. Para confirmarlo, compruebe que el estado final del trabajo aparece como Completed, con cero transferencias con errores.

Tarea 3: implementación de una plantilla personalizada de Azure CycleCloud

Ahora va a descargar y modificar la plantilla de ejemplo de Azure CycleCloud compatible con el proyecto basado en GitHub capturado. La va a usar para definir una configuración de almacenamiento personalizada que incluya un disco adicional asociado al nodo de programador y exportado por medio del sistema de archivos de red (NFS). Después de esta modificación, la va a importar en la aplicación de Azure CycleCloud.

Nota:

Para examinar el contenido de la plantilla con un explorador web, vaya al repositorio Azure/cyclecloud-slurm.

  1. En el equipo, en la ventana del explorador web que muestra la sesión de Bash en el panel Azure Cloud Shell, ejecute el siguiente comando para cambiar el directorio de trabajo al repositorio recién capturado:

    cd ~/cyclecloud-slurm/templates
    
  2. Ejecute los siguientes comandos para crear una copia de seguridad de la plantilla de clúster original:

    cp slurm.txt slurm.bak.txt
    
  3. Ejecute el siguiente comando para abrir la plantilla descargada en el editor nano:

    nano slurm.txt
    

    Nota:

    En lugar del editor nano, puede usar cualquier otro editor de texto disponible, incluido el editor integrado de Azure Cloud Shell.

  4. En la interfaz del editor nano, vaya a la sección [[node scheduler]]. En esa sección, busque la subsección [[[volume shared]]], vaya a la línea Persistent = ${NFSType == "Builtin"} y agregue el siguiente contenido después de ella:

    
        # Add 2 premium disks in a RAID 0 configuration to the NFS export
        [[[volume nfs-1]]]
        Size = 128
        StorageAccountType = Premium_LRS
        Mount = nfs
        Persistent = true
    
        [[[volume nfs-2]]]
        Size = 128
        StorageAccountType = Premium_LRS
        Mount = nfs
        Persistent = true
    
        [[[configuration cyclecloud.mounts.nfs]]]
        mountpoint = /mnt/exports/lab
        fs_type = ext4
        raid_level = 0
    
    

    Nota:

    Si usas un equipo Windows, puedes pegar el contenido del Portapapeles mediante la combinación de teclas Mayús + Insert.

    Nota:

    Los cambios definen dos discos de almacenamiento Premium de 128 GB en un volumen basado en franjas que se montan automáticamente en el nodo principal durante su aprovisionamiento. El volumen usa el punto de montaje /mnt/exports/ y tiene automáticamente formato de sistema de archivos ext4. El valor Persistent = true indica que los discos se conservan al finalizar el clúster, pero se eliminan automáticamente si se elimina.

    Nota:

    Azure CycleCloud implementa los volúmenes como discos administrados de Azure.

  5. En la interfaz del editor Nano, seleccione la combinación de teclas Ctrl+O, la tecla Entrar y, luego, la combinación de teclas Ctrl+X para guardar los cambios realizados y cerrar el archivo.

    Nota:

    En este punto ya puede usar la conexión a la aplicación de Azure CycleCloud mediante la CLI para importar la plantilla.

  6. Ejecute el siguiente comando para importar la plantilla que ha modificado en la tarea anterior en la aplicación de Azure CycleCloud:

    cyclecloud import_template -f ~/cyclecloud-slurm/templates/slurm.txt
    

    Nota:

    El comando muestra el nombre de la plantilla importada, el estado del programador (scheduler: Off -- --) y el número de nodos total (Total nodes: 1).

Tarea 4: inicio de un nuevo clúster y examen de su configuración de almacenamiento

Para concluir este ejercicio, comprobará que la plantilla que importó en la aplicación Azure CycleCloud ofrece la funcionalidad prevista; para ello, creará un nuevo clúster y revisará la configuración de almacenamiento de su nodo principal para asegurarse de que incluye un volumen que consta de dos discos persistentes.

  1. En el equipo, abra otra ventana del explorador y vaya a la dirección URL https://<IP_address> (reemplace el marcador de posición <IP_address> por la dirección IP pública del servidor de aplicaciones de Azure CycleCloud). Si se le pide, confirme que quiere continuar.

  2. Si se le pide que se autentique, inicie sesión con las credenciales de la misma cuenta de usuario de la aplicación de Azure CycleCloud que ha usado para configurar la CLI de Azure CycleCloud.

  3. En la interfaz gráfica de Azure CycleCloud, vaya a la página Clústeres y seleccione +.

  4. En la página Crear un clúster, seleccione el icono con la etiqueta Slurm en forma de triángulo isósceles con círculos pequeños en cada uno de sus vértices.

    Screenshot of the Create a New Cluster page of the Azure CycleCloud web application.

  5. En la pestaña Acerca de de la página Nuevo clúster de Slurm, en el cuadro de texto Nombre del clúster, escriba contoso-custom-slurm-lab-cluster.

    Screenshot of the About tab of the New Slurm Cluster page of the Azure CycleCloud web application.

  6. En la pestaña Valores obligatorios de la página New Slurm Cluster (Nuevo clúster de Slurm), configure los valores siguientes (deje los demás con los valores predeterminados) y seleccione Siguiente:

    Configuración Valor
    Region Seleccione el nombre de la región de Azure donde va a implementar el clúster de este ejercicio.
    Tipo de máquina virtual de programador En la ventana emergente Seleccionar un tipo de máquina, seleccione Elegir. En el cuadro de texto SKU Search (Búsqueda de SKU), escriba D4s_v3. En la lista de resultados, active la casilla situada junto a la entrada D4s_v3 y seleccione Aplicar.

    Nota:

    Asegúrese de seleccionar el tamaño de máquina virtual compatible con el nivel Premium de Azure Storage, que es necesario para aprovisionar discos del nodo principal según la configuración personalizada.

    Configuración Valor
    Máximo de núcleos de HPC Escriba 100.
    Máximo de núcleos de HTC Escriba 100.
    Máximo de máquinas virtuales por conjunto de escalado Escriba 40.
    Identificador de subred Seleccione cyclecloud-rg: cyclecloud-rg-vnet-contoso-slurm-lab-cluster-subnet.
  7. En la pestaña Network Attached Storage (Almacenamiento conectado a la red) de la página New Slurm Cluster (Nuevo clúster de Slurm), compruebe que NFS Type (Tipo de NFS) está establecido en Integrado, acepte el valor predeterminado de Tamaño (GB) establecido en 100 y seleccione Siguiente.

    Screenshot of the Network Attached Storage tab of the New Slurm Cluster page of the Azure CycleCloud web application.

  8. En la pestaña Configuración avanzada de la página New Slurm Cluster (Nuevo clúster de Slurm), revise las opciones disponibles sin realizar ningún cambio y seleccione Siguiente.

    Screenshot of the Advanced Settings tab of the New Slurm Cluster page of the Azure CycleCloud web application.

  9. En la pestaña Cloud-init de la página New Slurm Cluster (Nuevo clúster de Slurm), revise las opciones disponibles sin realizar ningún cambio y seleccione Guardar.

  10. En la página contoso-custom-slurm-lab-cluster, seleccione el vínculo Iniciar. Cuando se le pida confirmación, seleccione Aceptar.

    Screenshot of the Nodes tab page of contoso-slurm-lab-cluster in the off state in the Azure CycleCloud web application.

  11. Supervise el proceso de inicio.

    Nota:

    El proceso implica el aprovisionamiento de la máquina virtual de Azure que atiende al rol del nodo maestro del clúster, la instalación y la configuración del programador de Swarm, y la creación y el montaje de volúmenes de disco. Esto puede tardar unos cinco minutos.

  12. Cuando el estado del nodo del programador cambie a Listo, seleccione su entrada en la pestaña Nodos y, luego, elija Mostrar detalle para mostrar su vista detallada.

    Screenshot of the Nodes tab of the scheduler node of a contoso-custom-slurm-lab-cluster.

  13. En la ventana emergente Showing scheduler in contoso-custom-slurm-lab-cluster cluster (Mostrando programador en el clúster contoso-custom-slurm-lab-cluster), vaya a la pestaña Nodo, desplácese a la sección Volúmenes y compruebe que las entradas nfs-1 y nfs-2 aparecen en la lista de volúmenes.

    Screenshot of the Node tab page of the detailed view of a cluster configured with two additional NFS volumes.

Enhorabuena. Ha realizado correctamente el primer ejercicio de este módulo. En este ejercicio ha implementado un clúster basado en una plantilla personalizada de Azure CycleCloud. Ha usado la CLI de Azure CycleCloud para importar un proyecto de ejemplo hospedado en el repositorio de GitHub de Azure CycleCloud, incluida una copia personalizada de una de sus plantillas. A continuación, ha creado un clúster basado en la plantilla importada con la interfaz gráfica de Azure CycleCloud, lo ha iniciado y ha comprobado que el cambio personalizado se ha aplicado.

Nota:

Si tienes previsto llevar a cabo el siguiente ejercicio de este módulo, no elimine los recursos que ha implementado y configurado en este ejercicio. Los necesitará para realizar el siguiente ejercicio.