Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Se requiere Ansible 2.7 (o posterior) para ejecutar los playbooks de ejemplo de este artículo.
Los conjuntos de escalado de máquinas virtuales de Azure son una característica de Azure que permite configurar un grupo de máquinas virtuales idénticas y con equilibrio de carga. No hay ningún costo adicional para los conjuntos de escalado y se compilan a partir de máquinas virtuales. Solo paga por los recursos de proceso subyacentes, como las instancias de máquina virtual, los equilibradores de carga o el almacenamiento de managed Disk. Con los conjuntos de escalado, las capas de administración y automatización están disponibles para ejecutar y escalar tus aplicaciones. En su lugar, podría crear y administrar manualmente máquinas virtuales individuales. Sin embargo, hay dos ventajas clave para usar conjuntos de escalado. Están integrados en Azure y escalan automáticamente las máquinas virtuales para satisfacer las necesidades de la aplicación.
La característica de ajustar automáticamente el número de instancias de máquina virtual se denomina escalado automático. La ventaja de la escalabilidad automática es que reduce la sobrecarga de administración para supervisar y optimizar el rendimiento de la aplicación. El escalado automático se puede configurar en respuesta a la demanda o a una programación definida. Con Ansible, puede especificar las reglas de escalado automático que definen el rendimiento aceptable para una experiencia positiva del cliente.
En este artículo aprenderá a:
- Definición de un perfil de escalado automático
- Escalado automático basado en una programación periódica
- Escalado automático basado en el rendimiento de la aplicación
- Recuperación de la información de configuración de escalado automático
- Deshabilitar una configuración de escalado automático
Prerrequisitos
- Suscripción de Azure: si no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.
Instale Ansible: realice una de las siguientes opciones:
- Instalación y configuración de Ansible en una máquina virtual Linux
- Configure Azure Cloud Shell y, si no tiene acceso a una máquina virtual Linux, cree una máquina virtual con Ansible.
- Conjunto de escalado de máquinas virtuales: si aún no tiene un conjunto de escalado, puede configurar un conjunto de escalado con Ansible.
Escalado automático basado en una programación
Para habilitar el escalado automático en un conjunto de escalado, primero debe definir un perfil de escalado automático. Este perfil define la capacidad predeterminada, mínima y máxima del conjunto de escalado. Estos límites le permiten controlar el costo al no crear continuamente instancias de máquina virtual, y equilibrar un rendimiento aceptable con un número mínimo de instancias que permanecen en un evento de reducción horizontal.
Ansible permite escalar tus configuraciones de escalado en una fecha programada o una programación recurrente.
El código del cuaderno de estrategias de esta sección aumenta el número de instancias de máquina virtual a tres a las 10:00 cada lunes.
Guarde el siguiente cuaderno de estrategias como 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'
Ejecutar el playbook utilizando ansible-playbook
ansible-playbook vmss-auto-scale.yml
Escalado automático basado en datos de rendimiento
Si aumenta la demanda de la aplicación, aumenta la carga en las instancias de máquina virtual de los conjuntos de escalado. Si este aumento de la carga es coherente, en lugar de solo una breve demanda, puede configurar reglas de escalado automático para aumentar el número de instancias de máquina virtual en el conjunto de escalado. Cuando se crean estas instancias de máquina virtual y se implementan las aplicaciones, el conjunto de escalado comienza a distribuir el tráfico a ellas a través del equilibrador de carga. Ansible permite controlar qué métricas supervisar, como el uso de CPU, el uso del disco y el tiempo de carga de la aplicación. Puede realizar operaciones de "scale in" y "scale out" en conjuntos de escalado basándose en umbrales de métricas de rendimiento, mediante una programación recurrente o en una fecha específica.
El código del cuaderno de estrategias de esta sección comprueba la carga de trabajo de CPU durante los 10 minutos anteriores a las 18:00 cada lunes.
En función de las métricas de porcentaje de CPU, el cuaderno de estrategias realiza una de las siguientes acciones:
- Amplía el número de instancias de máquina virtual a cuatro
- Escala el número de instancias de máquina virtual a una
Guarde el siguiente cuaderno de estrategias como 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'
Ejecutar el playbook utilizando ansible-playbook
ansible-playbook vmss-auto-scale-metrics.yml
Obtención de información de ajustes de escalabilidad automática
El código del cuaderno de estrategias de esta sección usa el azure_rm_autoscale_facts módulo para recuperar los detalles de la configuración de escalado automático.
Guarde el siguiente cuaderno de estrategias como 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]
Ejecutar el playbook utilizando ansible-playbook
ansible-playbook vmss-auto-scale-get-settings.yml
Deshabilitación de la configuración de escalado automático
Hay dos maneras de deshabilitar la configuración de escalabilidad automática. Una manera es cambiar la enabled clave de true a false. La segunda forma es eliminar la configuración.
El código del cuaderno de estrategias de esta sección elimina la configuración de escalado automático.
Guarde el siguiente cuaderno de estrategias como 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
Ejecutar el playbook mediante ansible-playbook
vmss-auto-scale-delete-setting.yml