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 constituent une fonctionnalité Azure qui vous permet de configurer un groupe de machines virtuelles identiques à charge équilibrée. Les groupes identiques n’engendrent pas de coût supplémentaire et sont générés à partir des machines virtuelles. Vous payez uniquement les ressources de calcul sous-jacentes telles que les instances de machine virtuelle, un équilibreur de charge ou un stockage par disque managé. Avec les groupes identiques, les couches d’automatisation et de gestion 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, l’utilisation de groupes identiques présente deux avantages principaux. Ils sont intégrés à Azure et appliquent automatiquement une mise à l’échelle à vos machines virtuelles pour répondre aux besoins des applications.
La fonctionnalité d’ajustage 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. Avec Ansible, vous pouvez spécifier les règles de mise à l’échelle automatique qui définissent les performances acceptables pour une expérience utilisateur positive.
Dans cet article, vous apprendrez comment :
- Définir un profil de mise à l’échelle automatique
- Mise à l’échelle automatique selon une planification périodique
- Mise à l’échelle automatique selon les performances des applications
- Récupérer des informations sur les paramètres de mise à l’échelle automatique
- Désactiver un paramètre de mise à l’échelle automatique
Prérequis
- Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Installer Ansible. Pour cela, choisissez l’une des options suivantes :
- Installez et configurez Ansible sur une machine virtuelle Linux
- Configurez Azure Cloud Shell et, si vous n’avez pas accès à une machine virtuelle Linux, créez une machine virtuelle avec Ansible.
- Groupe de machines virtuelles identiques : Si vous ne disposez pas déjà d’un groupe identique, vous pouvez en configurer un avec Ansible.
Mise à l’échelle automatique en fonction d’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 groupes identiques à une date spécifique ou selon une planification périodique.
Le code de playbook dans cette section augmente le nombre d’instances de machine virtuelle à trois à 10 h 00 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écutez le playbook en utilisant ansible-playbook
ansible-playbook vmss-auto-scale.yml
Mise à l’échelle automatique selon les données de performances
Si la demande de votre application augmente, la charge sur les instances de machine virtuelle dans vos groupes identiques 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. Ansible vous permet de contrôler les métriques à surveiller, telles que l’utilisation de l’UC, l’utilisation du disque et temps de chargement de l’application. Vous pouvez effectuer un scale-in et un scale-out dans des groupes identiques selon des seuils de métriques des performances, sur la base d’une planification périodique ou à une date particulière.
Le code de playbook dans cette section vérifie la charge de travail de l’UC pendant les 10 minutes précédentes à 18 h 00 tous les lundis.
Selon les métriques en pourcentage de l’UC, le playbook effectue l’une des actions suivantes :
- Montée en charge du nombre d’instances de machine virtuelle à quatre
- Diminution de la taille des instances de machine virtuelle à 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écutez le playbook en utilisant ansible-playbook
ansible-playbook vmss-auto-scale-metrics.yml
Obtenir des informations sur les paramètres de mise à l’échelle automatique
Le code de playbook dans cette section utilise le module azure_rm_autoscale_facts
pour récupérer les détails du paramètre de mise à l’échelle automatique.
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écutez le playbook en utilisant ansible-playbook
ansible-playbook vmss-auto-scale-get-settings.yml
Désactivez les paramètres de mise à l’échelle automatique
Il existe deux façons de désactiver les paramètres de mise à l’échelle automatique. L’une consiste à modifier la clé enabled
clés de true
à false
. La seconde consiste à supprimer le paramètre.
Le code de playbook dans 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écutez le playbook en utilisant ansible-playbook
vmss-auto-scale-delete-setting.yml