Tutoriel : Effectuer une mise à l’échelle automatique d’un groupe de machines virtuelles identiques avec Azure CLI
Lorsque vous créez un groupe identique, vous définissez le nombre d’instances de machine virtuelle que vous souhaitez exécuter. À mesure que la demande de votre application change, vous pouvez augmenter ou diminuer automatiquement le nombre d’instances de machine virtuelle. La capacité de mise à l’échelle automatique vous permet de suivre la demande du client ou de répondre aux changements de performances de votre application tout au long de son cycle de vie. Ce didacticiel vous montre comment effectuer les opérations suivantes :
- Utiliser la mise à l’échelle automatique avec un groupe identique
- Créer et utiliser des règles de mise à l’échelle automatique
- Effectuer un test de contrainte sur les instances de machine virtuelle et déclencher des règles de mise à l’échelle automatique
- Remettre à l’échelle automatiquement en cas de baisse de la demande
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Ce tutoriel nécessite Azure CLI version 2.0.32 ou ultérieure. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.
Créer un groupe identique
Créez un groupe de ressources avec la commande az group create.
az group create --name myResourceGroup --location eastus
Créez à présent un groupe de machines virtuelles identiques avec az vmss create. L’exemple suivant crée un groupe identique avec 2 instances, et génère des clés SSH si elles n’existent pas.
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image <SKU image> \
--orchestration-mode Flexible \
--instance-count 2 \
--admin-username azureuser \
--generate-ssh-keys
Définir un profil de mise à l’échelle automatique
Pour activer la mise à l’échelle automatique sur un groupe identique, vous devez d’abord définir un profil de mise à l’échelle automatique. Ce profil définit les capacités par défaut, minimale et maximale du groupe identique. Ces limites vous permettent de contrôler le coût en évitant de créer continuellement des instances de machine virtuelle et d’équilibrer les performances acceptables sur un nombre minimal d’instances qui restent dans un événement de diminution du nombre d’instances. Créez un profil de mise à l’échelle automatique az monitor autoscale create. L’exemple suivant définit les capacités par défaut et minimale de 2 instances de machine virtuelle, et la capacité maximale de 10 :
az monitor autoscale create \
--resource-group myResourceGroup \
--resource myScaleSet \
--resource-type Microsoft.Compute/virtualMachineScaleSets \
--name autoscale \
--min-count 2 \
--max-count 10 \
--count 2
Créer une règle pour le scale-out automatique
Si la demande de votre application augmente, la charge sur les instances de machine virtuelle dans votre groupe identique augmente. Si cette augmentation de la charge est cohérente, au lieu d’une brève demande, vous pouvez configurer des règles de mise à l’échelle automatique pour augmenter le nombre d’instances de machine virtuelle dans le groupe identique. Lorsque ces instances de machine virtuelle sont créées et que vos applications sont déployées, le groupe identique commence à distribuer le trafic vers les instances via l’équilibreur de charge. Vous contrôlez les métriques à monitorer, la durée pendant laquelle la charge de l’application doit respecter un seuil donné et le nombre d’instances VM à ajouter au groupe identique.
Créons avec az monitor autoscale rule create une règle qui augmente le nombre d’instances VM dans un groupe identique quand la charge moyenne du processeur est supérieure à 70 % pendant 5 minutes. Lorsque la règle se déclenche, le nombre d’instances de machine virtuelle est majoré de trois unités.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU > 70 avg 5m" \
--scale out 3
Créer une règle pour le scale-in automatique
Au cours d’une soirée ou d’un week-end, la demande de votre application peut diminuer. Si cette charge réduite est constante pendant un certain temps, vous pouvez configurer des règles de mise à l’échelle automatique pour réduire le nombre d’instances de machine virtuelle dans le groupe identique. Cette action de diminution du nombre d’instances a pour effet de réduire le coût d’exécution de votre groupe identique, car vous seul exécutez le nombre d’instances requis pour répondre à la demande en cours.
Créez avec az monitor autoscale rule create une autre règle qui réduit le nombre d’instances de machine virtuelle dans un groupe identique lorsque la charge moyenne du processeur est inférieure à 30 % pendant 5 minutes. L’exemple suivant définit la règle pour diminuer de une unité le nombre d’instances de machine virtuelle.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU < 30 avg 5m" \
--scale in 1
Générer une charge d’UC sur un groupe identique
Pour tester les règles de mise à l’échelle automatique, générez des charges d’UC sur les instances de machine virtuelle dans le groupe identique. Cette charge d’UC simulée provoque le scale-out de la mise à l’échelle automatique et l’augmentation du nombre d’instances de machine virtuelle. Comme la charge d’UC simulée diminue ensuite, les règles de mise à l’échelle automatique effectuent un scale-out du nombre d’instances de machine virtuelle.
Pour vous connecter à une instance individuelle, consultez Tutoriel : Se connecter à des instances de groupe de machines virtuelles identiques
Une fois connecté, installez l’utilitaire stress ou stress-ng. Démarrez 10 workers de contrainte qui génèrent une charge au niveau du processeur. Ces rôles de travail sont exécutés pendant 420 secondes, ce qui est suffisant pour que les règles de mise à l’échelle automatique implémentent l’action souhaitée.
sudo apt-get update
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Lorsque stress affiche une sortie du type stress: info: [2688] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, appuyez sur la touche Entrée pour revenir à l’invite de commandes.
Pour vérifier que stress génère une charge d’UC, examinez la charge du système actif avec l’utilitaire top :
top
Quittez top, puis fermez votre connexion à l’instance de machine virtuelle. stress continue de s’exécuter sur l’instance de machine virtuelle.
Ctrl-c
exit
Connectez-vous à la deuxième instance de machine virtuelle avec le numéro de port indiqué à partir de la commande az vmss list-instance-connection-info précédente :
ssh azureuser@13.92.224.66 -p 50003
Installez et exécutez stress ou stress-ng, puis démarrez dix rôles de travail dans cette deuxième instance de machine virtuelle.
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Là encore, si stress affiche une sortie semblable à stress: info: [2713] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, appuyez sur la touche Entrée pour revenir à l’invite de commandes.
Fermez votre connexion à la deuxième instance de machine virtuelle. stress continue de s’exécuter sur l’instance de machine virtuelle.
exit
Surveiller les règles actives de mise à l’échelle automatique
Pour surveiller le nombre d’instances de machine virtuelle dans votre groupe identique, utilisez watch. Les règles de mise à l’échelle automatique prennent 5 minutes pour commencer le processus de scale-out en réponse à la charge d’UC générée par stress sur chacune des instances de machine virtuelle :
watch az vmss list-instances \
--resource-group myResourceGroup \
--name myScaleSet \
--output table
Une fois que le seuil de l’UC est atteint, les règles de mise à l’échelle automatique augmentent le nombre d’instances de machine virtuelle au sein du groupe identique. La sortie suivante montre trois machines virtuelles créées au moment de la montée en puissance automatique du groupe identique :
Every 2.0s: az vmss list-instances --resource-group myResourceGroup --name myScaleSet --output table
InstanceId LatestModelApplied Location Name ProvisioningState ResourceGroup VmId
------------ -------------------- ---------- ------------ ------------------- --------------- ------------------------------------
1 True eastus myScaleSet_1 Succeeded myResourceGroup 4f92f350-2b68-464f-8a01-e5e590557955
2 True eastus myScaleSet_2 Succeeded myResourceGroup d734cd3d-fb38-4302-817c-cfe35655d48e
4 True eastus myScaleSet_4 Creating myResourceGroup 061b4c90-0d73-49fc-a066-19eab0b3d95c
5 True eastus myScaleSet_5 Creating myResourceGroup 4beff8b9-4e65-40cb-9652-43899309da27
6 True eastus myScaleSet_6 Creating myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Une fois que stress s’arrête sur les instances initiales de machine virtuelle, la charge d’UC moyenne retourne à la normale. Lorsque 5 autres minutes ont passé, les règles de mise à l’échelle automatique effectuent un scale-in du nombre d’instances de machine virtuelle. Les actions de scale-in suppriment des instances de machine virtuelle disposant des ID les plus élevés. Lorsqu’un groupe identique utilise des groupes à haute disponibilité ou des zones de disponibilité, les actions de scale-in sont réparties uniformément entre les instances de machine virtuelle. La sortie d’exemple suivante montre une instance de machine virtuelle supprimée lors de la diminution automatique :
6 True eastus myScaleSet_6 Deleting myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Fermez watch avec Ctrl-c
. Le groupe identique continue d’effectuer un scale-in toutes les 5 minutes et supprime une instance de machine virtuelle jusqu’à ce que la quantité minimale d’instances (2) soit atteinte.
Nettoyer les ressources
Pour supprimer votre groupe identique et les ressources supplémentaires, supprimez le groupe de ressources et toutes ses ressources avec az group delete. Le paramètre --no-wait
retourne le contrôle à l’invite de commandes sans attendre que l’opération se termine. Le paramètre --yes
confirme que vous souhaitez supprimer les ressources sans passer par une invite supplémentaire à cette fin.
az group delete --name myResourceGroup --yes --no-wait
Étapes suivantes
Dans ce tutoriel, vous avez appris à effectuer automatiquement un scale-in ou un scale-out d’un groupe identique avec Azure CLI :
- Utiliser la mise à l’échelle automatique avec un groupe identique
- Créer et utiliser des règles de mise à l’échelle automatique
- Effectuer un test de contrainte sur les instances de machine virtuelle et déclencher des règles de mise à l’échelle automatique
- Remettre à l’échelle automatiquement en cas de baisse de la demande