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 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. 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 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á el escalado automático?
Cada vez que se ejecuta el servicio de escalado automático, los perfiles se evalúan en el orden siguiente:
- Perfiles de fecha fija
- Perfiles periódicos
- 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:
- Introducción a la escalabilidad automática
- Métricas comunes de escalado automático de Azure Monitor
- Escalabilidad automática con varios perfiles
- Oscilación en Escalabilidad automática
- Uso de acciones de escalado automático para enviar notificaciones de alerta por correo electrónico y Webhook en Azure Insights
- API de REST de escalado automático