Partager via


Exécuter Azure CycleCloud dans une instance de conteneur

L’exécution d’Azure CycleCloud dans une instance de conteneur est une excellente solution pour les clients qui utilisent CycleCloud par intermittence et qui souhaitent l’arrêter entre les exécutions de travaux afin d’éviter les coûts associés aux machines virtuelles longues.

Prérequis

Docker doit être installé et exécuté sur la machine ou le serveur à partir duquel vous accéderez à CycleCloud. Téléchargez le package d’installation approprié pour votre système d’exploitation et suivez les instructions d’installation de Docker.

Image conteneur CycleCloud

Une fois Docker configuré et opérationnel, vous pouvez exécuter la commande suivante pour extraire l’image conteneur CycleCloud à partir de Container Registry de Microsoft :

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

Et voilà ! Le conteneur démarre et CycleCloud sera accessible via le navigateur web à l’adresse https://localhost. À partir de là, suivez les menus de configuration.

Configuration

Le conteneur exécute des applications web pour http (80) et https (443). Comme CycleCloud exécute une machine virtuelle JVM (Machine virtuelle Java), le tasSize de la machine virtuelle JVM et la mémoire allouée au conteneur doivent être coordonnées. Il est recommandé de définir le tasSize sur une moitié de l’allocation de mémoire du conteneur. Utilisez la commande docker run -m avec une variable d’environnement spécifiée en Mo. Par exemple :

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

Avertissement

Si le service CycleCloud échoue, le processus de conteneur se termine et toutes les données du cluster sont perdues. Pour éviter ce scénario, configurez votre instance de conteneur pour qu’elle soit sauvegardée avec un stockage persistant.

Stockage persistant

Si Azure Container Instance doit échouer, vos données peuvent être perdues et récupérer l’état d’exécution managé de vos clusters HPC ne serait pas possible. Il est fortement recommandé de configurer l’instance de conteneur Azure pour qu’elle soit sauvegardée avec un stockage durable à partir du partage de fichiers Azure.

À condition qu’un partage de fichiers Azure soit monté sur /azurecyclecloud, le conteneur CycleCloud utilisera le stockage durable pour :

  • Journaux d’activité
  • Points de récupération de sauvegarde

Pour mieux comprendre le partage de fichiers Azure, consultez la documentation illustrant l’intégration à Azure Container Instance.

Dans l’exemple ci-dessous, un partage de stockage est monté sur /azurecyclecloud et collecte les journaux et les points de sauvegarde. Avec cette configuration, les données Azure CycleCloud peuvent être récupérées après une défaillance ou utilisées pour migrer vers l’hébergement dans un autre service, tel qu’une machine virtuelle.

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

Versions prises en charge

Les versions prises en charge de l’image conteneur CycleCloud se trouvent dans la page dockerhub du produit. L’image peut être lancée en tant qu’instance Azure Container (à l’aide d’un groupe de ressources, d’un emplacement et d’un nom dns et d’un conteneur préférés). CycleCloud inclut la génération de certificat SSL. Par conséquent, si vous spécifiez les arguments deux fois (une fois pour az cli et de nouveau pour définir des variables d’environnement), le conteneur est en mesure d’établir automatiquement des certificats SSL valides.

#!/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

Dans l’exemple ci-dessus, le conteneur et l’interface utilisateur cyclecloud seront disponibles à l’adresse https://${CIDNSName}.${Location}.azurecontainer.io.

Configuration supplémentaire

Le conteneur exécute des applications web pour http (80) et https (443). Comme CycleCloud exécute une machine virtuelle JVM (Machine virtuelle Java), le tasSize de la machine virtuelle JVM et la mémoire allouée au conteneur doivent être coordonnées. Il est recommandé de définir le tasSize sur une moitié de l’allocation de mémoire du conteneur. Utilisez la commande docker run -m avec une variable d’environnement spécifiée en Mo. Par exemple :

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