Información acerca de 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 escalado horizontal se desencadena cuando la métrica de porcentaje promedio de CPU del conjunto de escalado de la máquina virtual 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 la máquina virtual 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 escalado y reducción horizontal. 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
            },
            "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
            },
            "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
Opción ID Identificador de recurso de la configuración de escalado automático. La configuración de escalado automático es un recurso de Azure Resource Manager.
Opción name Nombre de la configuración de escalado automático.
Opción ubicación Ubicación de la configuración de escalado automático. Esta ubicación puede ser diferente de la ubicación de los recursos que se van a escalar.
properties targetResourceUri Identificador de recurso del recurso que se va a escalar. Solo puede tener una configuración de escalado automático por recurso.
properties profiles 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.
profiles name Nombre del perfil. Puede elegir cualquier nombre que le ayude a identificar el perfil.
profiles 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.
profiles capacity.minimum 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
profiles 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, el escalado automático no reduce horizontalmente.
profiles 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 horizontalmente y la otra para determinar cuándo reducir horizontalmente.
rule metricTrigger Regla de escalado Define la condición de métrica de la regla.
metricTrigger metricName Nombre de 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 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 se deberían agregar cada minuto mediante el método de agregación especificado en "statistic".
metricTrigger statistic Estadísticas de 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 Duration 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. timeWindow 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 hace la media.
rule 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 value Recuento de instancias El grado de aumento o reducción de la capacidad del recurso.
scaleAction cooldown Tiempo de finalización (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 enfriamiento entra en vigor después de un evento de escalado horizontal o de escalado horizontal. Por ejemplo, si cooldown = "PT10M", la escalabilidad automática no intenta escalar de nuevo durante otros 10 minutos. Cooldown permite que las métricas se estabilicen después de la adición o eliminación de instancias.

Perfiles de escalado automático

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"
                }
            }
        ]
    
  • 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 del escalado automático

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 escalado automático espera el período de enfriamiento antes de que se vuelva a escalar. El período de enfriamiento se aplica tanto a las acciones de escalado horizontal como de reducción horizontal.

¿Qué perfil usará el escalado automático?

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 periódicos
  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 escalado horizontal del perfil, es decir, las reglas con la dirección = "Aumentar". Si se desencadenan una o varias reglas de escalado horizontal, el escalado automático calcula la nueva capacidad determinada por la propiedad scaleAction de cada una de las reglas. Si se desencadena más de una regla de escalado horizontal, el escalado automático 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 un escalado horizontal en tres instancias y la regla 2 especifica un escalado 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 reduce horizontalmente lo 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, la escalabilidad automática reduce en siete instancias.

Cada vez que el escalado automático calcula el resultado de una acción de reducción horizontal, evalúa si esa acción desencadenaría una acción de escalabilidad horizontal. El escenario en el que una acción de escala 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: