Partager via


Tutoriel : Mettre à l’échelle automatiquement des groupes de machines virtuelles identiques dans Azure à l’aide d’Ansible

Important

Ansible 2.7 (ou version ultérieure) est nécessaire pour exécuter les exemples de playbooks dans cet article.

Les groupes de machines virtuelles identiques Azure sont une fonctionnalité Azure qui vous permet de configurer un groupe de machines virtuelles identiques à charge équilibrée. Il n’existe aucun coût supplémentaire pour les collections d'échelle, et elles sont construites à partir de machines virtuelles. Vous payez uniquement pour les ressources de calcul sous-jacentes telles que les instances de machine virtuelle, les équilibreurs de charge ou le stockage sur disque managé. Avec les jeux d’échelle, les couches de gestion et d’automatisation sont fournies pour exécuter et faire évoluer vos applications. Vous pouvez à la place créer et gérer manuellement des machines virtuelles individuelles. Toutefois, il existe deux avantages clés à l’utilisation d'ensembles de mise à l'échelle. Ils sont intégrés à Azure, et mettent automatiquement à l'échelle vos machines virtuelles pour répondre aux besoins des applications.

La fonctionnalité d’ajustement automatique du nombre d’instances de machine virtuelle est appelée mise à l’échelle automatique. L’avantage de la mise à l’échelle automatique est qu’elle réduit la surcharge de gestion pour surveiller et optimiser les performances de votre application. La mise à l’échelle automatique peut être configurée en réponse à la demande ou selon une planification définie. À l’aide d’Ansible, vous pouvez spécifier les règles de mise à l’échelle automatique qui définissent les performances acceptables pour une expérience client positive.

Dans cet article, vous allez apprendre à :

  • Définir un profil de mise à l’échelle automatique
  • Mise à l’échelle automatique basée sur une planification périodique
  • Mise à l’échelle automatique basée sur les performances de l’application
  • Récupérer les informations sur les paramètres de mise à l’échelle automatique
  • Désactiver un paramètre de mise à l’échelle automatique

Prerequisites

  • Abonnement Azure : si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Mise à l’échelle automatique basée sur une planification

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.

Ansible vous permet de mettre à l’échelle vos ensembles de mise à l’échelle à une date spécifique ou selon un calendrier récurrent.

Le code du playbook de cette section augmente le nombre d'instances de VM à trois à 10h00 tous les lundis.

Enregistrez le playbook suivant en tant que vmss-auto-scale.yml.

---
- hosts: localhost
  vars:
    resource_group: myResourceGroup
    vmss_name: myScaleSet
    name: autoscalesetting
  tasks: 
    - name: Create autoscaling
      azure_rm_autoscale:
         resource_group: "{{ resource_group }}"
         name: "{{ name }}"
         target:
           namespace: "Microsoft.Compute"
           types: "virtualMachineScaleSets"
           name: "{{ vmss_name }}"
         enabled: true
         profiles:
         - count: '3'
           min_count: '3'
           max_count: '3'
           name: Auto created scale condition
           recurrence_timezone: Pacific Standard Time
           recurrence_frequency: Week
           recurrence_days:
              - Monday
           recurrence_mins:
              - '0'
           recurrence_hours:
              - '10'

Exécuter le playbook à l’aide de ansible-playbook

ansible-playbook vmss-auto-scale.yml

Mise à l’échelle automatique basée sur les données de performances

Si la demande de votre application augmente, la charge sur les instances de VM dans vos sets d'échelle augmente. Si cette charge accrue est constante, plutôt qu'une simple demande brève, vous pouvez configurer des règles d'autoscaling pour augmenter le nombre d'instances de machine virtuelle dans l'ensemble d’échelle. Lorsque ces instances de machine virtuelle sont créées et que vos applications sont déployées, l'ensemble de machines virtuelles commence à distribuer le trafic vers ces instances via l’équilibreur de charge. Ansible vous permet de contrôler les métriques à surveiller, telles que l’utilisation du processeur, l’utilisation du disque et le temps de chargement des applications. Vous pouvez effectuer un scale-in et un scale-out dans des groupes identiques en fonction des seuils de métriques de performances, par une planification périodique ou par une date particulière.

Le code du playbook de cette section vérifie la charge de travail du processeur pendant les 10 dernières minutes à 18h00 tous les lundis.

En fonction du pourcentage d'utilisation du CPU, le playbook effectue l'une des actions suivantes :

  • Augmente le nombre d’instances de machine virtuelle à quatre
  • Réduit le nombre d’instances VM à une

Enregistrez le playbook suivant en tant que vmss-auto-scale-metrics.yml.

---
- hosts: localhost
  vars:
    resource_group: myResourceGroup
    vmss_name: myScaleSet
    name: autoscalesetting
  tasks:
  - name: Get facts of the resource group
    azure_rm_resourcegroup_facts:
      name: "{{ resource_group }}"
    register: rg

  - name: Get scale set resource uri
    set_fact:
      vmss_id: "{{ rg.ansible_facts.azure_resourcegroups[0].id }}/providers/Microsoft.Compute/virtualMachineScaleSets/{{ vmss_name }}"
    
  - name: Create autoscaling
    azure_rm_autoscale:
      resource_group: "{{ resource_group }}"
      name: "{{ name }}"
      target: "{{ vmss_id }}"
      enabled: true
      profiles:
      - count: '1'
        max_count: '1'
        min_count: '1'
        name: 'This scale condition is executed when none of the other scale condition(s) match'
        recurrence_days:
          - Monday
        recurrence_frequency: Week
        recurrence_hours:
          - 18
        recurrence_mins:
          - 0
        recurrence_timezone: Pacific Standard Time
      - count: '1'
        min_count: '1'
        max_count: '4'
        name: Auto created scale condition
        recurrence_days:
          - Monday
        recurrence_frequency: Week
        recurrence_hours:
          - 18
        recurrence_mins:
          - 0
        recurrence_timezone: Pacific Standard Time
        rules:
          - cooldown: 5
            direction: Increase
            metric_name: Percentage CPU
            metric_resource_uri: "{{ vmss_id }}"
            operator: GreaterThan
            statistic: Average
            threshold: 70
            time_aggregation: Average
            time_grain: 1
            time_window: 10
            type: ChangeCount
            value: '1'
          - cooldown: 5
            direction: Decrease
            metric_name: Percentage CPU
            metric_resource_uri: "{{ vmss_id }}"
            operator: LessThan
            statistic: Average
            threshold: 30
            time_aggregation: Average
            time_grain: 1
            time_window: 10
            type: ChangeCount
            value: '1'

Exécuter le playbook à l’aide de ansible-playbook

ansible-playbook vmss-auto-scale-metrics.yml

Obtenir des informations sur les paramètres de mise à l’échelle automatique

Le code du playbook de cette section utilise le module azure_rm_autoscale_facts pour obtenir les détails du paramètre d'autoscaling.

Enregistrez le playbook suivant en tant que vmss-auto-scale-get-settings.yml.

- hosts: localhost
  vars:
    resource_group: myResourceGroup
    name: autoscalesetting
  tasks: 
    - name: Retrieve autoscale settings information
      azure_rm_autoscale_facts:
        resource_group: "{{ resource_group }}"
        name: "{{ name }}"
      register: autoscale_query
    
    - debug:
        var: autoscale_query.autoscales[0]

Exécuter le playbook à l’aide de ansible-playbook

ansible-playbook vmss-auto-scale-get-settings.yml

Désactiver les paramètres de mise à l’échelle automatique

Il existe deux façons de désactiver les paramètres de mise à l’échelle automatique. Une façon est de changer la enabled clé de true vers false. La deuxième méthode consiste à supprimer le paramètre.

Le code du playbook de cette section supprime le paramètre de mise à l’échelle automatique.

Enregistrez le playbook suivant en tant que vmss-auto-scale-delete-setting.yml.

- hosts: localhost
  vars:
    resource_group: myResourceGroup
    name: autoscalesetting
  tasks: 
    - name: Delete autoscaling
      azure_rm_autoscale:
         resource_group: "{{ resource_group }}"
         name: "{{ name }}"
         state: absent

Exécuter le playbook avec Ansible-playbook

vmss-auto-scale-delete-setting.yml

Étapes suivantes