Utiliser des stratégies de scale-in personnalisées avec des groupes de machines virtuelles identiques Azure

Vous pouvez effectuer un scale-out ou un scale-in du déploiement d’un groupe de machines virtuelles identiques en fonction d’un ensemble de métriques, notamment des métriques personnalisées de plateforme et définies par l’utilisateur. Alors qu’un scale-out crée des machines virtuelles basées sur le modèle de groupe identique, un scale-in affecte les machines virtuelles en cours d’exécution qui peuvent avoir des configurations et/ou des fonctions différentes à mesure que la charge de travail du groupe identique évolue.

La fonctionnalité de stratégie de scale-in offre aux utilisateurs un moyen de configurer l’ordre dans lequel les machines virtuelles font l’objet du scale-in, par le biais de trois configurations de mise à l’échelle :

  1. Default
  2. NewestVM
  3. OldestVM

Stratégie de scale-in par défaut

Orchestration Flexible

Avec cette stratégie, les machines virtuelles sont mises à l’échelle après l’équilibrage entre les zones de disponibilité (si le groupe identique est en configuration zonale), et la machine virtuelle la plus ancienne conformément à createdTime est d’abord mise à l’échelle. L’équilibrage entre le domaine d’erreur n’est pas disponible dans la stratégie par défaut avec le mode d’orchestration flexible.

Orchestration Uniform

Par défaut, le groupe de machines virtuelles identiques applique cette stratégie pour déterminer la ou les instances qui feront l’objet du scale-in. Avec la stratégie Default, les machines virtuelles sont sélectionnées pour le scale-in dans l’ordre suivant :

  1. Équilibrer les machines virtuelles parmi les zones de disponibilité (si le groupe identique est déployé dans une configuration zonale)
  2. Équilibrer les machines virtuelles parmi les domaines d’erreur (meilleur effort)
  3. Supprimer la machine virtuelle avec l’ID d’instance la plus élevée

Les utilisateurs n’ont pas besoin de spécifier de stratégie de scale-in s’ils veulent juste que l’ordre par défaut soit respecté.

L’équilibrage parmi les zones de disponibilité ou les domaines d’erreur ne déplace pas les instances entre les zones de disponibilité ou les domaines d’erreur. L’équilibrage est effectué par le biais de la suppression de machines virtuelles des zones de disponibilité ou domaines d’erreur déséquilibrés jusqu’à ce que la distribution des machines virtuelles soit équilibrée.

Stratégie de scale-in NewestVM

Cette stratégie supprime la machine virtuelle créée la plus récente, ou la plus récemment créée, dans le groupe identique, après l’équilibrage des machines virtuelles parmi les zones de disponibilité (pour les déploiements de zones). L’activation de cette stratégie nécessite une modification de la configuration du modèle de groupe de machines virtuelles identiques.

Stratégie de scale-in OldestVM

Cette stratégie supprime la machine virtuelle créée la plus ancienne dans le groupe identique, après l’équilibrage des machines virtuelles parmi les zones de disponibilité (pour les déploiements de zones). L’activation de cette stratégie nécessite une modification de la configuration du modèle de groupe de machines virtuelles identiques.

Activation de la stratégie de scale-in

Une stratégie de scale-in est définie dans le modèle de groupe de machines virtuelles identiques. Comme indiqué dans les sections précédentes, une définition de stratégie de scale-in est nécessaire lors de l’utilisation des stratégies « NewestVM » et « OldestVM ». Le groupe de machines virtuelles identiques utilisera automatiquement la stratégie de scale-in « Default » si aucune définition de stratégie de scale-in n’est trouvée sur le modèle de groupe identique.

Une stratégie de scale-in peut être définie sur le modèle de groupe de machines virtuelles identiques des manières suivantes :

Portail Azure

Les étapes suivantes définissent la stratégie de scale-in lors de la création d’un groupe identique.

  1. Accédez à Groupes identiques de machines virtuelles.
  2. Sélectionnez + Ajouter pour créer un groupe identique.
  3. Accédez à l’onglet Mise à l’échelle.
  4. Recherchez la section Stratégie de scale-in.
  5. Sélectionnez une stratégie de scale-in dans la liste déroulante.
  6. Lorsque vous avez fini de créer le groupe identique, sélectionnez le bouton Vérifier + créer.

Utilisation de l’API

Exécutez une instruction PUT sur le groupe de machines virtuelles identiques à l’aide de l’API 2019-03-01 :

PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01

{ 
"location": "<VMSS location>", 
    "properties": { 
        "scaleInPolicy": {  
            "rules": ["OldestVM"]  
        } 
    }    
} 

Azure PowerShell

Important

À compter de novembre 2023, les groupes de machines virtuelles identiques créés à l’aide de PowerShell et d’Azure CLI utilisent par défaut le mode d’orchestration flexible si aucun mode d’orchestration n’est spécifié. Pour plus d’informations sur ce changement et les actions que vous devez entreprendre, consultez l’article Changement cassant pour les clients VMSS PowerShell/CLI – Hub Communauté Microsoft

Créez un groupe de ressources, puis un groupe identique avec une stratégie de scale-in définie comme OldestVM.

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "<VMSS location>"
New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "<VMSS location>" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -ScaleInPolicy “OldestVM”

Azure CLI

Important

À compter de novembre 2023, les groupes de machines virtuelles identiques créés à l’aide de PowerShell et d’Azure CLI utilisent par défaut le mode d’orchestration flexible si aucun mode d’orchestration n’est spécifié. Pour plus d’informations sur ce changement et les actions que vous devez entreprendre, consultez l’article Changement cassant pour les clients VMSS PowerShell/CLI – Hub Communauté Microsoft

L’exemple suivant ajoute une stratégie de scale-in lors de la création d’un groupe identique. Commencez par créer un groupe de ressources, puis créez un groupe identique avec une stratégie de scale-in OldestVM.

az group create --name <myResourceGroup> --location <VMSSLocation>
az vmss create \
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --orchestration-mode flexible \
  --image Ubuntu2204 \
  --admin-username <azureuser> \
  --generate-ssh-keys \
  --scale-in-policy OldestVM

Utilisation d’un modèle

Dans votre modèle, sous « properties », ajoutez la propriété scaleInPolicy :

"scaleInPolicy": {  
      "rules": ["OldestVM"]  
}

Ces blocs de code spécifient que le groupe de machines virtuelles identiques supprimera la machine virtuelle la plus ancienne dans un groupe identique à équilibrage de zone quand un scale-in est déclenché (par le biais de la mise à l’échelle automatique ou d’une suppression manuelle).

Quand un groupe de machines virtuelles identiques n’est pas équilibré parmi les zones, le groupe identique supprime d’abord les machines virtuelles dans les zones déséquilibrées. Dans les zones déséquilibrées, le groupe identique utilise la stratégie de scale-in spécifiée pour déterminer la machine virtuelle devant faire l’objet d’un scale-in. Dans ce cas, dans une zone déséquilibrée, le groupe identique choisira de supprimer la machine virtuelle la plus ancienne dans cette zone.

Pour un groupe de machines virtuelles identiques non zonal, la stratégie choisira de supprimer la machine virtuelle la plus ancienne dans le groupe identique.

Le même processus s’applique lors de l’utilisation de la stratégie de scale-in « NewestVM ».

Modification des stratégies de scale-in

La modification de la stratégie de scale-in suit le même processus que l’application de la stratégie de scale-in. Par exemple, si vous souhaitez remplacer la stratégie « OldestVM » par « NewestVM », vous pouvez le faire des manières suivantes :

Portail Azure

Vous pouvez modifier la stratégie de scale-in d’un groupe identique via le portail Azure.

  1. Dans un groupe de machines virtuelles identiques existant, dans le menu de gauche, sélectionnez Mise à l’échelle.
  2. Sélectionnez l’onglet Stratégie de scale-in.
  3. Sélectionnez une stratégie de scale-in dans la liste déroulante.
  4. Quand vous avez terminé, sélectionnez Enregistrer.

Utilisation de l’API

Exécutez une instruction PUT sur le groupe de machines virtuelles identiques à l’aide de l’API 2019-03-01 :

PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01 

{ 
"location": "<VMSS location>", 
    "properties": { 
        "scaleInPolicy": {  
            "rules": ["NewestVM"]  
        } 
    }    
}

Azure PowerShell

Mettez à jour la stratégie de scale-in d’un groupe identique existant :

Update-AzVmss `
 -ResourceGroupName "myResourceGroup" `
 -VMScaleSetName "myScaleSet" `
 -ScaleInPolicy “OldestVM”

Azure CLI

Voici un exemple de mise à jour de la stratégie de scale-in d’un groupe identique existant :

az vmss update \  
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --scale-in-policy OldestVM

Utilisation d’un modèle

Dans votre modèle, sous « properties », modifiez le modèle comme indiqué ci-dessous et redéployez :

"scaleInPolicy": {  
      "rules": ["NewestVM"]  
} 

Le même processus s’applique si vous décidez de remplacer « NewestVM » par « Default » ou « OldestVM »

Protection d’instance et stratégie de scale-in

Les groupes identiques de machines virtuelles fournissent deux types de protection d’instance :

  1. Protection contre les opérations scale-in
  2. Protection contre les actions de groupe identique

Une machine virtuelle protégée n’est pas supprimée par le biais d’une action de scale-in, quelle que soit la stratégie de scale-in appliquée. Par exemple, si VM_0 (machine virtuelle la plus ancienne dans le groupe identique) est protégée contre le scale-in et que le groupe identique a la stratégie de scale-in « OldestVM » activée, VM_0 n’est pas pris en compte pour le scale-in, même s’il s’agit de la machine virtuelle la plus ancienne dans le groupe identique.

Une machine virtuelle protégée peut être supprimée manuellement par l’utilisateur à tout moment, quelle que soit la stratégie de scale-in activée sur le groupe identique.

Exemples d'utilisation

Les exemples ci-dessous illustrent comment un groupe de machines virtuelles identiques sélectionne les machines virtuelles à supprimer lors du déclenchement d’un événement de scale-in. Les machines virtuelles avec les ID d’instances les plus élevés sont supposées être les machines virtuelles les plus récentes dans le groupe identique, et les machines virtuelles avec les ID d’instances les plus petits sont supposées être les machines virtuelles les plus anciennes dans le groupe identique.

Stratégie de scale-in OldestVM

Événement ID d’instances dans Zone1 ID d’instances dans Zone2 ID d’instances dans Zone3 Sélection de scale-in
Initial 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Scale-in 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Choisir entre Zone 1 et 2, bien que Zone 3 ait la machine virtuelle la plus ancienne. Supprimer VM2 de Zone 2, car il s’agit de la machine virtuelle la plus ancienne dans cette zone.
Scale-in 3, 4, 5, 10 6, 9, 11 1, 7, 8 Choisir Zone 1 bien que Zone 3 ait la machine virtuelle la plus ancienne. Supprimer VM3 de Zone 1, car il s’agit de la machine virtuelle la plus ancienne dans cette zone.
Scale-in 4, 5, 10 6, 9, 11 1, 7, 8 Les zones sont équilibrées. Supprimer VM1 de Zone 3, car il s’agit de la machine virtuelle la plus ancienne dans le groupe identique.
Scale-in 4, 5, 10 6, 9, 11 7, 8 Choisir entre Zone 1 et Zone 2. Supprimer VM4 de Zone 1, car il s’agit de la machine virtuelle la plus ancienne parmi les deux zones.
Scale-in 5, 10 6, 9, 11 7, 8 Choisir Zone 2 bien que Zone 1 ait la machine virtuelle la plus ancienne. Supprimer VM6 de Zone 1, car il s’agit de la machine virtuelle la plus ancienne dans cette zone.
Scale-in 5, 10 9, 11 7, 8 Les zones sont équilibrées. Supprimer VM5 de Zone 1, car il s’agit de la machine virtuelle la plus ancienne dans le groupe identique.

Pour un groupe de machines virtuelles identiques non zonal, la stratégie choisira de supprimer la machine virtuelle la plus ancienne dans le groupe identique. Toute machine virtuelle « protégée » est ignorée pour la suppression.

Stratégie de scale-in NewestVM

Événement ID d’instances dans Zone1 ID d’instances dans Zone2 ID d’instances dans Zone3 Sélection de scale-in
Initial 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Scale-in 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Choisir entre Zone 1 et Zone 2. Supprimer VM11 de Zone 2, car il s’agit de la machine virtuelle la plus récente parmi les deux zones.
Scale-in 3, 4, 5, 10 2, 6, 9 1, 7, 8 Choisir Zone 1, car elle contient plus de machines virtuelles que les deux autres zones. Supprimer VM10 de Zone 1, car il s’agit de la machine virtuelle la plus récente dans cette zone.
Scale-in 3, 4, 5 2, 6, 9 1, 7, 8 Les zones sont équilibrées. Supprimer VM9 de Zone 2, car il s’agit de la machine virtuelle la plus récente dans le groupe identique.
Scale-in 3, 4, 5 2, 6 1, 7, 8 Choisir entre Zone 1 et Zone 3. Supprimer VM8 de Zone 3, car il s’agit de la machine virtuelle la plus récente dans cette zone.
Scale-in 3, 4, 5 2, 6 1, 7 Choisir Zone 1 bien que Zone 3 ait la machine virtuelle la plus récente. Supprimer VM5 de Zone 1, car il s’agit de la machine virtuelle la plus récente dans cette zone.
Scale-in 3, 4 2, 6 1, 7 Les zones sont équilibrées. Supprimer VM7 de Zone 3, car il s’agit de la machine virtuelle la plus récente dans le groupe identique.

Pour un groupe de machines virtuelles identiques non zonal, la stratégie choisira de supprimer la machine virtuelle la plus récente dans le groupe identique. Toute machine virtuelle « protégée » est ignorée pour la suppression.

Résoudre les problèmes

  1. Échec d’activation de scaleInPolicy Si vous obtenez une erreur « BadRequest » avec un message d’erreur indiquant que le membre « scaleInPolicy » est introuvable sur l’objet de type « properties », vérifiez la version de l’API utilisée pour le groupe de machines virtuelles identiques. La version d’API 2019-03-01 ou une version ultérieure est requise pour cette fonctionnalité.

  2. Sélection incorrecte des machines virtuelles pour le scale-in : reportez-vous aux exemples dans ce document. Si votre groupe de machines virtuelles identiques est un déploiement zonal, la stratégie de scale-in est appliquée en premier aux zones déséquilibrées, puis dans tout le groupe identique une fois l’équilibrage des zones effectué. Si l’ordre de scale-in n’est pas cohérent avec les exemples documentés ici, soumettez une requête auprès de l’équipe du groupe de machines virtuelles identiques afin d’obtenir une assistance pour la résolution des problèmes.

Étapes suivantes

Découvrez comment déployer votre application sur des groupes de machines virtuelles identiques.