Identificación de los factores para implementar el escalado automático

Completado

La escalabilidad automática permite especificar las condiciones bajo las que se debe escalar horizontalmente una aplicación web y, luego, reducirla horizontalmente. La escalabilidad automática eficaz garantiza que haya suficientes recursos disponibles para controlar grandes volúmenes de solicitudes en horas pico, al tiempo que mantiene bajos los costes generales cuando disminuye la demanda.

Puede configurar la escalabilidad automática para detectar cuándo escalar horizontalmente y escalar horizontalmente según una combinación de factores basados en el uso de los recursos. También puede configurar la escalabilidad automática en base a una programación.

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

Escalabilidad automática y planes de App Service

Cuando se crea una aplicación web, también se crea un plan de App Service. El plan de App Service define el sistema operativo (Windows o Linux) que se usa para hospedar la aplicación web. El plan de tarifa del plan especifica el hardware disponible (capacidad de memoria, capacidad de procesamiento de CPU y almacenamiento en disco) y otros servicios, como las copias de seguridad periódicas de cada instancia de la aplicación web.

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 más instancias del hardware definidas por el plan de App Service para la aplicación.

Para evitar la escalabilidad automática descontrolada costosa, el plan de App Service tiene un límite de instancias. Los planes de los planes de tarifa más caros tienen límites de instancia más altos. La escalabilidad automática no puede superar el límite de instancias del plan de App Service. Por ejemplo, la serie de planes de servicio Estándar admite hasta 10 instancias a un coste estimado de 0,40 USD por hora para cada instancia. La serie Premium de planes de servicio permite hasta 20 instancias con un coste estimado de 0,80 USD por hora para cada instancia. Los planes de servicio Aislado permiten hasta 100 instancias con un coste estimado de 1,60 USD por hora para cada instancia.

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 puede especificar una fecha o hora para que el sistema se reduzca horizontalmente.

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

Puede crear varias condiciones de escalabilidad automática para controlar métricas y programaciones diferentes. Azure escala automáticamente el servicio cuando se aplica cualquiera de las condiciones establecidas. Cada plan de App Service también tiene una condición de escalabilidad automática predeterminada que se usa si no se aplican otras condiciones. La condición de escalabilidad automática predeterminada 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. En la lista siguiente se describen las métricas que puede supervisar para una aplicación web:

  • Porcentaje de CPU indica el uso de la CPU en todas las instancias. Un porcentaje de CPU alto muestra que las instancias están enlazadas a la CPU, lo que podría provocar retrasos en el procesamiento de las solicitudes cliente.
  • El porcentaje de memoria captura la ocupación de la memoria de la aplicación en todas las instancias. Un porcentaje de memoria 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.
  • La longitud de cola de disco mide el número de solicitudes de E/S pendientes en todas las instancias. Una longitud de cola de disco elevada significa que podría producirse la contención de disco.
  • La longitud de cola HTTP muestra cuántas solicitudes cliente están a la espera de procesamiento por parte de la aplicación web. Si la longitud de cola HTTP es grande, es posible que se produzcan errores HTTP 408 (tiempo de espera) en las solicitudes cliente.
  • Datos entrantes es el número de bytes recibidos en todas las instancias.
  • Datos de salida es el número de bytes enviados en todas las instancias.

También puede escalar en función de métricas para otros servicios de Azure. Por ejemplo, si una aplicación web procesa las solicitudes recibidas desde una cola de Service Bus, le podría interesar poner en marcha instancias adicionales de esa aplicación 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 y 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 un minuto. El valor agregado se conoce como agregación de tiempo. Las opciones de agregación de tiempo son Promedio, Mínimo, Máximo, Total, Ú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 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 cinco 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 cálculo de agregación del intervalo de agregación. Por ejemplo, si la agregación de tiempo es Promedio y la métrica 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.

Para otro ejemplo, supongamos que la agregación de tiempo se establece en Máximo y la Duración de la regla se establece en 10 minutos. Este ejemplo de configuración utilizaría el máximo de los 10 valores medios del porcentaje de uso de la CPU 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, la regla de escalabilidad automática 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 recuperación, que se especifica en minutos. Durante el período de recuperación, la regla de escalado no se desencadena de nuevo. El periodo de recuperación permite al sistema estabilizarse entre 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 tiempo de recuperació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. Por ejemplo, podría definir las cuatro reglas de escalabilidad automática siguientes en una única 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 regla de reducción horizontal, tendrá que definir las reglas en condiciones independientes de escalabilidad automática.