Entender la configuración de escalado automático

La configuración de escalado automático le ayuda a asegurarse de que tiene la cantidad adecuada de recursos en ejecución para administrar las fluctuaciones de carga de la aplicación. Puede configurar los valores de escalado automático para que se desencadene en función de métricas que indican carga o rendimiento, o para que se desencadene en una fecha y hora programadas.

En este artículo se explica la configuración de la escalabilidad automática.

Esquema de la configuración de escalado automático

En el ejemplo siguiente se muestra una configuración de la escalabilidad automática con estos atributos:

  • Un único perfil predeterminado.
  • Dos reglas de métricas en este perfil, una para el escalado horizontal y otra para la reducción horizontal.
    • La regla de escalabilidad horizontal se desencadena cuando la métrica de porcentaje promedio de CPU del conjunto de escalado de máquinas virtuales es superior al 85 % durante los últimos 10 minutos.
    • La regla de reducción horizontal se desencadena si la métrica del porcentaje de CPU promedio del conjunto de escalado de máquinas virtuales es inferior al 60 % durante el último minuto.

Nota

Una configuración puede tener varios perfiles. Para más información, consulte la sección de perfiles. Un perfil también puede tener definidas varias reglas de escalabilidad y reducción horizontales. Para ver cómo se evalúan, consulte la sección de evaluación.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "VMSS1-Autoscale-607",
            "location": "eastus",
            "properties": {

                "name": "VMSS1-Autoscale-607",
                "enabled": true,
                "targetResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
    "profiles": [
      {
        "name": "Auto created default scale condition",
        "capacity": {
          "minimum": "1",
          "maximum": "4",
          "default": "1"
        },
        "rules": [
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "GreaterThan",
              "threshold": 85,
              "dividePerInstance": false
            },
            "scaleAction": {
              "direction": "Increase",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          },
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "LessThan",
              "threshold": 60,
              "dividePerInstance": false
            },
            "scaleAction": {
              "direction": "Decrease",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          }
        ]
      }
    ]
  }
}

En la tabla siguiente se describen los elementos del JSON de la configuración de la escalabilidad automática anterior.

Sección Nombre del elemento Nombre del portal Descripción
Configuración identificación Identificador de recurso de la configuración de escalabilidad automática. La configuración de escalado automático es un recurso de Azure Resource Manager.
Configuración nombre Nombre de la configuración de escalado automático.
Configuración ubicación Ubicación de la configuración de escalabilidad automática. Esta ubicación puede ser diferente de la ubicación de los recursos que se van a escalar.
propiedades targetResourceUri Identificador de recurso del recurso que se va a escalar. Solo puede tener una configuración de escalado automático por recurso.
propiedades perfiles Condición de escalado Una configuración de escalado automático se compone de uno o varios perfiles. Cada vez que se ejecuta el motor de escalado automático, ejecuta un perfil. Configure hasta 20 perfiles por configuración de escalabilidad automática.
perfiles nombre Nombre del perfil. Puede elegir cualquier nombre que le ayude a identificar el perfil.
perfiles capacity.maximum Límites de instancia: máximo La capacidad máxima permitida. Garantiza que la escalabilidad automática no escalará el recurso por encima de este número al ejecutar el perfil.
perfiles capacidad mínima Límites de instancia: mínimo La capacidad mínima permitida. Garantiza que la escalabilidad automática no escalará el recurso por debajo de este número al ejecutar el perfil
perfiles capacity.default Límites de instancia: predeterminado Si hay algún problema al leer la métrica del recurso y la capacidad actual es inferior a la predeterminada, el escalado automático escalará horizontalmente al valor predeterminado. Esta acción garantiza la disponibilidad del recurso. Si la capacidad actual ya es mayor que la predeterminada, la escalabilidad automática no reduce horizontalmente.
perfiles reglas Reglas La escalabilidad automática permite escalar automáticamente entre las capacidades máxima y mínima mediante las reglas del perfil. Defina hasta 10 reglas individuales en un perfil. Normalmente, las reglas se definen por pares, una para determinar cuándo escalar hacia afuera y la otra para determinar cuándo escalar hacia adentro.
regla metricTrigger Regla de escala Define la condición de métrica de la regla.
metricTrigger metricName Nombre de la métrica El nombre de la métrica.
metricTrigger metricResourceUri El identificador de recurso del recurso que emite esta métrica. En la mayoría de los casos, es el mismo que el del recurso que se va a escalar. En algunos casos, puede ser diferente. Por ejemplo, puede escalar un conjunto de escalado de máquinas virtuales en función del número de mensajes en una cola de almacenamiento.
metricTrigger timeGrain Intervalo de agregación (minutos) La duración del muestreo de métricas. Por ejemplo, timeGrain = "PT1M" significa que las métricas deben agregarse cada 1 minuto utilizando el método de agregación especificado en el elemento de estadísticas.
metricTrigger estadística Estadísticas del intervalo de agregación El método de agregación del período timeGrain. Por ejemplo, statistic = "Average" y timeGrain = "PT1M" significan que las métricas se deberían agregar cada minuto teniendo en cuenta la media. Esta propiedad determina cómo se muestrea la métrica.
metricTrigger timeWindow Duración La cantidad de tiempo necesario para recuperar las métricas. Por ejemplo, timeWindow = "PT10M" significa que, cada vez que se ejecuta la escalabilidad automática, se consultan las métricas de los últimos 10 minutos. La ventana de tiempo permite que las métricas se normalicen y evita que reaccionen a picos transitorios.
metricTrigger timeAggregation Agregación de tiempo Método de agregación que se usa para agregar métricas muestreadas. Por ejemplo, timeAggregation = "Average" agregará las métricas muestreadas teniendo en cuenta la media. En el caso anterior, toma las diez muestras de 1 minuto y promedia.
metricTrigger dividePerInstance Divida el valor por el recuento de instancias. Si dividePerInstance = true, la métrica se divide por el número de instancias del recurso. Esta opción es útil para las métricas que se agrupan mejor mediante Sum o Count y necesitan normalizarse según el número de instancias activas. Por ejemplo, si la métrica es una longitud de cola y la agregación es Sum, cuando dividePerInstance = true, la métrica se divide por el número de instancias del conjunto de escalado de máquinas virtuales, lo que proporciona la longitud media de la cola en todas las máquinas virtuales. dividePerInstance es útil para las métricas agregadas por Sum y Count , pero no para Average las agregaciones.
regla scaleAction Acción La acción que se realizará cuando se desencadene la propiedad metricTrigger de la regla.
scaleAction direction Operación "Aumentar" para escalar horizontalmente o "Reducir" para reducir horizontalmente.
scaleAction valor Recuento de instancias El grado de aumento o reducción de la capacidad del recurso.
scaleAction enfriamiento Período de enfriamiento (minutos) La cantidad de tiempo que debe transcurrir después de realizar una operación de escalado antes de poder iniciar otra. El período de recuperación entra en vigor después de un evento de reducción horizontal o de escalabilidad horizontal. Por ejemplo, si cooldown = "PT10M", la escalabilidad automática no intenta escalar de nuevo durante otros 10 minutos. El tiempo de espera permite que las métricas se estabilicen después de la adición o eliminación de instancias.

Perfiles de escalabilidad automática

Defina hasta 20 perfiles diferentes por configuración de escalabilidad automática.
Hay tres tipos de perfiles de escalado automático:

  • Perfil predeterminado: use el perfil predeterminado si no necesita escalar el recurso en función de una fecha y hora o día de la semana determinados. El perfil predeterminado se ejecuta cuando no hay ningún otro perfil aplicable para la fecha y hora actuales. Solo puede tener un perfil predeterminado.

  • Perfil de fecha fija: el perfil de fecha fija es pertinente para una sola fecha y hora. Utilice el perfil de fecha fija para establecer reglas de escalado para un evento específico. El perfil solo se ejecuta una vez, en la fecha y hora del evento. Para el resto de veces, el escalado automático usa el perfil predeterminado.

        ...
        "profiles": [
            {
                "name": " regularProfile",
                "capacity": {
                    ...
                },
                "rules": [
                    ...
                ]
            },
            {
                "name": "eventProfile",
                "capacity": {
                ...
                },
                "rules": [
                    ...
                ],
                "fixedDate": {
                    "timeZone": "Pacific Standard Time",
                    "start": "2017-12-26T00:00:00",
                    "end": "2017-12-26T23:59:00"
                }
            }
        ]
    

    Nota

    El número de días entre los momentos start y end de un perfil fixedDate no puede superar los 365 días.

  • Perfil de periodicidad: se usa un perfil de periodicidad para un día o un conjunto de días de la semana. El esquema de un perfil periódico no incluye una fecha de finalización. La fecha y hora de finalización de un perfil periódico se establecen por la hora de inicio del perfil siguiente. Al usar el portal para configurar perfiles periódicos, el perfil predeterminado se actualiza automáticamente para que se inicie a la hora de finalización que especifique para el perfil periódico. Para más información sobre cómo configurar varios perfiles, consulte Escalabilidad automática con varios perfiles

    En el ejemplo de esquema parcial se muestra un perfil periódico. Comienza a las 06:00 y termina a las 19:00 los sábados y domingos. El perfil predeterminado se ha modificado para que comience a las 19:00 los sábados y domingos.

        {
            "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "resources": [
                {
                    "type": "Microsoft.Insights/    autoscaleSettings",
                    "apiVersion": "2015-04-01",
                    "name": "VMSS1-Autoscale-607",
                    "location": "eastus",
                    "properties": {
    
                        "name": "VMSS1-Autoscale-607",
                        "enabled": true,
                        "targetResourceUri": "/subscriptions/    abc123456-987-f6e5-d43c-9a8d8e7f6541/    resourceGroups/rg-vmss1/providers/    Microsoft.Compute/    virtualMachineScaleSets/VMSS1",
                        "profiles": [
                            {
                                "name": "Weekend profile",
                                "capacity": {
                                    ...
                                },
                                "rules": [
                                    ...
                                ],
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            6
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                }
                            },
                            {
                                "name": "{\"name\":\"Auto created default scale condition\",\"for\":\"Weekend profile\"}",
                                "capacity": {
                                   ...
                                },
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            19
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                },
                                "rules": [   
                                  ...
                                ]
                            }
                        ],
                        "notifications": [],
                        "targetResourceLocation": "eastus"
                    }
    
                }
            ]
                }
    
    

Evaluación de la escalabilidad automática

La configuración de escalabilidad automática puede tener varios perfiles. Cada perfil puede tener varias reglas. Cada vez que se ejecuta el trabajo de escalado automático, empieza por elegir el perfil aplicable para ese momento. Después, el escalado automático evalúa los valores mínimo y máximo y las reglas de métrica del perfil, y decide si es necesario realizar una acción de escalado. El trabajo de escalado automático se ejecuta cada 30 a 60 segundos, en función del tipo de recurso. Después de que se produzca una acción de escalado, el trabajo de escalabilidad automática espera el período de recuperación antes de volver a escalarse. El período de recuperación se aplica tanto a la acción de escalabilidad horizontal como a la de reducción horizontal.

¿Qué perfil usará la escalabilidad automática?

Cada vez que se ejecuta el servicio de escalado automático, los perfiles se evalúan en el orden siguiente:

  1. Perfiles de fecha fija
  2. Perfiles recurrentes
  3. Perfil predeterminado

Se utiliza el primer perfil adecuado que se encuentre.

¿Cómo evalúa el escalado automático varias reglas?

Después de que la escalabilidad automática determine qué perfil ejecutar, evalúa las reglas de escalabilidad horizontal del perfil, es decir, las reglas con la dirección = "Aumentar". Si se desencadenan una o varias reglas de escalabilidad horizontal, la escalabilidad automática calcula la nueva capacidad determinada por la propiedad scaleAction de cada una de las reglas. Si se desencadena más de una regla de escalabilidad horizontal, la escalabilidad automática se escala a la capacidad especificada más alta para garantizar la disponibilidad del servicio.

Por ejemplo, supongamos que hay dos reglas: la regla 1 especifica una escalabilidad horizontal en tres instancias y la regla 2 especifica una escalabilidad horizontal en cinco. Si se desencadenan ambas reglas, la escalabilidad automática se escala horizontalmente en cinco instancias. De forma similar, si una regla especifica el escalado horizontal en tres instancias y otra regla especifica un escalado horizontal en un 15 %, se usa el mayor de los dos recuentos de instancias.

Si no se desencadena ninguna regla de escalado horizontal, la escalabilidad automática evalúa las reglas de reducción horizontal, es decir, las reglas con la dirección = "Reducir". La escalabilidad automática solo realizará una acción de reducción horizontal si se desencadenan todas las reglas de reducción horizontal.

El escalado automático calcula la nueva capacidad en función de la propiedad scaleAction de cada una de esas reglas. Para garantizar la disponibilidad del servicio, el escalado automático se ajusta al mínimo posible para lograr la capacidad máxima especificada. Por ejemplo, hay dos reglas de reducción horizontal, una que reduce la capacidad en un 50 % y otra que la reduce en tres instancias. Si la primera regla da como resultado cinco instancias y la segunda regla, siete, el escalado automático alcanza siete instancias.

Cada vez que el escalado automático calcula el resultado de una acción de reducción de capacidad, evalúa si esa acción desencadenaría una acción de aumento de capacidad. El escenario en el que una acción de escalado desencadena la acción de escalado opuesta se conoce como oscilación. La escalabilidad automática puede aplazar una acción de reducción horizontal para evitar la oscilación o puede escalar en un número menor que el especificado en la regla. Para más información sobre la oscilación, consulte Oscilación en escalabilidad automática.

Pasos siguientes

Más información sobre la escalabilidad automática: