Identificación de los factores de escalado automático

Completado

El escalado automático permite especificar las condiciones bajo las que se debe escalar horizontalmente una aplicación web y, luego, reducirla horizontalmente. El escalado automático eficaz garantiza que haya suficientes recursos disponibles para controlar grandes volúmenes de solicitudes en horas pico, al tiempo que se administran los costos cuando disminuye la demanda.

Puede configurar el escalado automático para detectar cuándo escalar y reducir horizontalmente según una combinación de factores, en función del uso de los recursos. También puede configurar el escalado automático para que se ejecute de acuerdo con una programación.

En esta unidad, aprenderá a especificar los factores que se pueden usar para la escalabilidad automática de un servicio.

Escalado automático y plan de App Service

El escalado automático es una característica del plan de App Service que usa la aplicación web. Cuando la aplicación web se escala horizontalmente, Azure inicia instancias nuevas del hardware definidas por el plan de App Service para la aplicación.

Para evitar el escalado automático descontrolado, el plan de App Service tiene un límite de instancias. Los planes de los planes de tarifa más caros tienen un límite mayor. El escalado automático no puede crear más instancias que las especificadas por este límite.

Nota:

No todos los planes de tarifa de plan de App Service admiten el escalado automático.

Condiciones de la escalabilidad automática

Para indicar cómo realizar la escalabilidad automática, se crean condiciones de escalabilidad automática. Azure ofrece dos opciones para el escalado automático:

  • Escalado basado en una métrica, como la longitud de cola de disco o el número de solicitudes HTTP en espera de procesamiento.
  • Escalado a un número específico de instancias según una programación Por ejemplo, puede organizar la operación de escalar horizontalmente a una hora concreta del día, una fecha específica o un día de la semana. También se especifica una fecha de finalización y el sistema se vuelve a escalar en ese momento.

El escalado a un número específico de instancias solo permite escalar horizontalmente a un número de instancias concreto. Si tiene que escalar horizontalmente de forma incremental, puede combinar el escalado automático basado en métricas y programación en la misma condición de escalabilidad automática. Por tanto, podría organizar el sistema para que se escale horizontalmente si el número de solicitudes HTTP supera un umbral específico, pero solo entre horas concretas del día.

Puede crear varias condiciones de escalabilidad automática para controlar métricas y programaciones diferentes. Azure realiza la escalabilidad automática del servicio cuando se aplica alguna de estas condiciones. Un plan de App Service también tiene una condición predeterminada que se usa si ninguna de las demás condiciones es aplicable. Esta condición siempre está activa y no tiene programación.

Métricas para las reglas de escalabilidad automática

El escalado automático por métrica requiere que se definan una o varias reglas de escalabilidad automática. Una regla de escalabilidad automática especifica una métrica para supervisar y cómo debe responder el escalado automático si esta métrica supera un umbral definido. Las métricas que puede supervisar para una aplicación web son las siguientes:

  • Porcentaje de CPU. Esta métrica es una indicación del uso de la CPU en todas las instancias. Un valor alto muestra que las instancias están enlazadas a la CPU, lo que podría provocar retrasos en el procesamiento de las solicitudes cliente.
  • Porcentaje de memoria. Esta métrica captura la ocupación de la memoria de la aplicación en todas las instancias. Un valor alto indica que la memoria libre se podría estar agotando, lo que provocaría que se produjera un error en una o varias instancias.
  • Longitud de cola de disco. Esta métrica es una medida del número de solicitudes de E/S pendientes en todas las instancias. Un valor alto significa que se podría estar produciendo contención del disco.
  • Longitud de la cola HTTP. Esta métrica muestra cuántas solicitudes cliente están a la espera de procesamiento por parte de la aplicación web. Si este número es alto, es posible que se produzcan errores HTTP 408 (tiempo de espera) en las solicitudes cliente.
  • Entrada de datos. Esta métrica es el número de bytes recibidos en todas las instancias.
  • Salida de datos. Esta métrica es el número de bytes enviados por todas las instancias.

También puede escalar en función de métricas para otros servicios de Azure. Por ejemplo, si la aplicación web procesa las solicitudes recibidas desde una cola de Service Bus, le podría interesar poner en marcha instancias adicionales de una aplicación web si el número de elementos contenidos en una cola de Azure Service Bus supera una longitud crítica.

Análisis de las métricas mediante una regla de escalabilidad automática

El escalado automático funciona mediante el análisis de tendencias en los valores de métrica en el tiempo entre todas las instancias. El análisis es un proceso de varios pasos.

En el primer paso, una regla de escalabilidad automática agrega los valores recuperados para una métrica para todas las instancias a lo largo de un período de tiempo que se conoce como intervalo de agregación. Cada métrica tiene su propio intervalo de agregación intrínseco, pero en la mayoría de los casos este período es de 1 minuto. El valor agregado se conoce como agregación de tiempo. Las opciones disponibles son Media, Mínimo, Máximo, Suma, Último y Recuento.

Un minuto es un intervalo corto para determinar si algún cambio en la métrica tiene la duración suficiente para que la escalabilidad automática valga la pena. Por tanto, una regla de escalabilidad automática ejecuta un segundo paso que realiza una agregación adicional del valor calculado por la agregación de tiempo durante un período más largo especificado por el usuario, conocido como duración. La duración mínima es de 5 minutos. Si la duración se establece en 10 minutos, por ejemplo, la regla de escalabilidad automática agrega los 10 valores calculados para el intervalo de agregación.

El cálculo de agregación para la duración puede ser diferente al del intervalo de agregación. Por ejemplo, si la agregación de tiempo es Promedio y la estadística que se obtiene es Porcentaje de CPU durante un intervalo de agregación de 1 minuto, se calcula cada minuto del porcentaje de uso de la CPU promedio entre todas las instancias durante ese minuto. Si la estadística de intervalo de agregación se establece en Máximo y la duración de la regla se establece en 10 minutos, el valor máximo de los 10 valores promedio del porcentaje de utilización de la CPU es para determinar si se ha superado el umbral de la regla.

Acciones de escalabilidad automática

Cuando una regla de escalabilidad automática detecta que una métrica ha superado un umbral, puede realizar una acción de escalabilidad automática. Una acción de escalabilidad automática puede ser de escalabilidad horizontal o reducción horizontal. Una acción de escalabilidad horizontal incrementa el número de instancias, mientras que una acción de reducción horizontal lo reduce. Una acción de escalabilidad automática usa un operador (como menor que, mayor que, igual a y así sucesivamente) para determinar cómo reaccionar ante el umbral. Las acciones de escalabilidad horizontal normalmente usan el operador mayor que para comparar el valor de la métrica con el umbral. Las acciones de reducción horizontal tienden a comparar el valor de la métrica con el umbral mediante el operador menor que. Una acción de escalabilidad automática también puede establecer el recuento de instancias en un nivel específico, en lugar de aumentar o reducir el número disponible.

Una acción de escalabilidad automática tiene un período de tiempo de finalización, que se especifica en minutos. Durante este intervalo, la regla de escalado no se vuelve a desencadenar. Esto permite que el sistema se estabilice entre los eventos de escalabilidad automática. Recuerde que se tarda tiempo en iniciar o apagar las instancias, por lo que es posible que las métricas recopiladas no muestren cambios significativos durante varios minutos. El período de tiempo de finalización mínimo es de cinco minutos.

Emparejamiento de reglas de escalabilidad automática

Debe planear la reducción horizontal al disminuir una carga de trabajo. Considere la posibilidad de definir reglas de escalabilidad automática en pares en la misma condición de escalabilidad automática. Una regla de escalabilidad automática debe indicar cómo escalar horizontalmente el sistema si una métrica supera un umbral superior. Posteriormente, otra regla debe definir cómo volver a escalar el sistema si la misma métrica se sitúa por debajo de un umbral inferior.

Combinación de reglas de escalabilidad automática

Una misma condición de escalabilidad automática puede contener varias reglas de escalabilidad automática (por ejemplo, una de escalabilidad horizontal y la correspondiente de reducción horizontal). Pero no es necesario que las reglas de escalabilidad automática de una condición de escalabilidad automática estén directamente relacionadas. Podría definir las cuatro reglas siguientes en la misma condición de escalabilidad automática:

  • Si la longitud de la cola HTTP es superior a 10, escalar horizontalmente en 1.
  • Si el uso de la CPU supera el 70 %, escalar horizontalmente en 1.
  • Si la longitud de la cola HTTP es cero, reducir horizontalmente en 1.
  • Si el uso de la CPU es inferior al 50 %, reducir horizontalmente en 1.

Al determinar si se debe escalar horizontalmente, la acción de escalabilidad automática se realiza si se cumple cualquiera de las reglas de escalabilidad horizontal (la longitud de la cola HTTP es superior a 10, o bien el uso de la CPU supera el 70 %). Al reducir horizontalmente, la acción de escalabilidad automática se realiza solo si se cumplen todas las reglas de reducción horizontal (la longitud de la cola HTTP se reduce a cero y el uso de la CPU es inferior al 50 %). En el caso de que tenga que reducir horizontalmente si solo se cumple una de las reglas de reducción horizontal, tendrá que definir las reglas en condiciones independientes de escalabilidad automática.