Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
Installez Ansible : Effectuez l’une des options suivantes :
- Installer et configurer 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 n’avez pas encore de groupe identique, vous pouvez configurer un groupe identique avec Ansible.
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