Ejecución de Azure CycleCloud en una instancia de contenedor

La ejecución de Azure CycleCloud en una instancia de contenedor es una excelente solución para los clientes que usan CycleCloud de forma intermitente y desean apagarla entre ejecuciones de trabajos para evitar los costos asociados a las máquinas virtuales de larga duración.

Requisitos previos

Deberá tener Docker instalado y en ejecución en el equipo o servidor desde el que accederá a CycleCloud. Descargue el paquete de instalación adecuado para el sistema operativo y siga las instrucciones de instalación de Docker.

Imagen de contenedor de CycleCloud

Una vez que Docker esté configurado y funcionando, puede ejecutar el siguiente comando para extraer la imagen de contenedor cycleCloud de Container Registry de Microsoft:

docker run mcr.microsoft.com/hpc/azure-cyclecloud

Eso es todo. El contenedor se iniciará y CycleCloud será accesible a través del explorador web en https://localhost. Desde allí, siga los menús de configuración.

Configuración

El contenedor ejecuta aplicaciones web para http (80) y https (443). A medida que CycleCloud ejecuta una JVM (máquina virtual Java), se debe coordinar el montón de JVM y la memoria asignada al contenedor. Se recomienda establecer heapSize en la mitad de la asignación de memoria del contenedor. Use el comando docker run -m con una variable de entorno especificada en MB. Por ejemplo:

docker run -m 2G -e "JAVA_HEAP_SIZE=1024" -p 8080:80 -p 8443:443 myrepo/cyclecloud:$ver

Advertencia

Si se produce un error en el servicio CycleCloud, el proceso de contenedor finalizará y se perderán todos los datos del clúster. Para evitar este escenario, configure la instancia de contenedor para que se realice con almacenamiento persistente.

Almacenamiento persistente

Si se produce un error en Azure Container Instance, los datos se podrían perder y recuperar el estado de ejecución administrado de los clústeres de HPC no sería posible. Se recomienda encarecidamente configurar Azure Container Instance para que se realice una copia de seguridad con un almacenamiento duradero desde el recurso compartido de archivos de Azure.

Siempre que se monte un recurso compartido de archivos de Azure en /azurecyclecloud, el contenedor cycleCloud usará almacenamiento duradero para:

  • Registros
  • Puntos de recuperación de copia de seguridad

Para comprender mejor el recurso compartido de archivos de Azure, consulte la documentación que muestra la integración con Azure Container Instance.

En el ejemplo siguiente, se montará un recurso compartido de almacenamiento en /azurecyclecloud y recopilará registros y puntos de copia de seguridad. Con esta configuración, los datos de Azure CycleCloud se pueden recuperar de un error o usarse para migrar al hospedaje en otro servicio, como una máquina virtual.

az container create \
  --resource-group ${ResourceGroup} \
  --location ${Location} \
  --name ${Name} \
  --dns-name-label ${DNSName} \
  --image mcr.microsoft.com/hpc/azure-cyclecloud \
  --ip-address public \
  --ports 80 443 \
  --cpu 2 \
  --memory 4 \
  -e JAVA_HEAP_SIZE=2048 \
  --azure-file-volume-account-name ${STORAGE_ACCOUNT_NAME} \
  --azure-file-volume-account-key ${STORAGE_KEY} \
  --azure-file-volume-share-name ${SHARE_NAME} \
  --azure-file-volume-mount-path /azurecyclecloud

Versiones admitidas

Las versiones compatibles de cycleCloud Container Image se pueden encontrar en la página de dockerhub del producto. La imagen se puede iniciar como una instancia de Azure Container (mediante el grupo de recursos existente, la ubicación y los nombres dns y de contenedor preferidos). CycleCloud tiene incluida la generación de certificados SSL, por lo que si especifica los argumentos dos veces (una vez para az cli y otra vez para establecer variables de entorno), el contenedor puede establecer certificados SSL válidos automáticamente.

#!/bin/bash
ResourceGroup="rg-name"
Location="westus2"
CIName="ci-name"
CIDNSName="ci-name"

az container create -g ${ResourceGroup} \
  --location ${Location} \
  --name ${CIName} \
  --dns-name-label ${CIDNSName} \
  --image mcr.microsoft.com/hpc/azure-cyclecloud \
  --ip-address public \
  --ports 80 443 \
  --cpu 2 --memory 4 \
  -e JAVA_HEAP_SIZE=2048

En el ejemplo anterior, el contenedor y la interfaz de usuario cyclecloud estarán disponibles en https://${CIDNSName}.${Location}.azurecontainer.io.

Configuración adicional

El contenedor ejecuta aplicaciones web para http (80) y https (443). A medida que CycleCloud ejecuta una JVM (máquina virtual Java), se debe coordinar el montón de JVM y la memoria asignada al contenedor. Se recomienda establecer heapSize en la mitad de la asignación de memoria del contenedor. Use el comando docker run -m con una variable de entorno especificada en MB. Por ejemplo:

docker run -m 2G -e "JAVA_HEAP_SIZE=1024" -p 8080:80 -p 8443:443 mcr.microsoft.com/hpc/azure-cyclecloud