Escalado automático en Azure App Service

Nota:

El escalado automático está disponible para todos los tipos de aplicaciones: Windows y Linux (implementar como código y contenedor). El escalado automático no se admite para el tráfico de ranuras de implementación.

El escalado automático es una nueva opción de escalado horizontal que controla automáticamente las decisiones de escalado de las aplicaciones web y los planes de App Service. Es diferente de la escalabilidad automática de Azure ya existente, que permite definir reglas de escalado basadas en programaciones y recursos. Con el escalado automático, es posible ajustar la configuración de escalado para mejorar el rendimiento de la aplicación y evitar problemas de arranque en frío. La plataforma precalienta las instancias para que actúen como un búfer al escalar horizontalmente, lo que garantizará transiciones de rendimiento fluidas. Se le cobrará por segundo por cada instancia, incluidas las instancias activadas previamente.

Comparación de las opciones de escalabilidad horizontal y reducción horizontal disponibles en App Service:

  Manual Autoscale Escalado automático
Planes de tarifa disponibles Básico y superiores Estándar y superiores Planes de tarifa Premium V2 (P1V2, P2V2, P3V2) y Premium V3 (P0V3, P1V3, P2V3, P3V3, P1MV3, P2MV3, P3MV3, P4MV3, P5MV3)
Escalado basado en reglas No No, la plataforma administra la escalabilidad y la reducción horizontal en función del tráfico HTTP.
Escalado basado en programación No No
Instancias siempre preparadas No, la aplicación web se ejecuta en el número de instancias escaladas manualmente. No, la aplicación web se ejecuta en otras instancias disponibles durante la operación de escalabilidad horizontal, en función del umbral definido para las reglas de escalabilidad automática. Sí (mínimo 1)
Instancias activadas previamente No No Sí (valor predeterminado 1)
Máximo por aplicación No No

Cómo funciona el escalado automático

Habilite el escalado automático para un plan de App Service y configure un rango de instancias para cada una de las aplicaciones web. A medida que la aplicación web comience a recibir tráfico HTTP, App Service supervisará la carga y agregará instancias. Los recursos se pueden compartir cuando se requiere que varias aplicaciones web de un plan de App Service escalen horizontalmente a la vez.

Estos son algunos escenarios en los que debe escalar horizontalmente de manera automática:

  • No se recomienda configurar reglas de escalabilidad automática basadas en métricas de recursos.
  • Se recomienda que las aplicaciones web en el mismo plan de App Service se escalen de forma diferente e independientemente unas de otras.
  • La aplicación web está conectada a una base de datos o a un sistema heredado, que podría no escalar tan rápido como la aplicación web. El escalado permite establecer automáticamente el número máximo de instancias a las que puede escalar con el plan de App Service. Esta configuración ayuda a la aplicación web a no sobrecargar el back-end.

Habilitación del escalado automático

Ráfaga máxima es el número máximo de instancias que se pueden aumentar con el plan de App Service en función de las solicitudes HTTP entrantes. En el caso de los planes Premium v2 y v3, puede establecer una ráfaga máxima de hasta 30 instancias. La ráfaga máxima debe ser igual o mayor que el número de trabajos especificados para el plan de App Service.

Para habilitar el escalado automático, vaya al menú de la izquierda de la aplicación web y seleccione Escalabilidad horizontal (plan de App Service). Seleccione Automático, actualice el valor de Ráfaga máxima y seleccione el botón Guardar.

Escalado automático en Azure Portal

Establecimiento del número mínimo de instancias de aplicación web

Las instancias siempre preparadas son una configuración de nivel de aplicación para especificar el número mínimo de instancias. Si la carga supera lo que las instancias siempre listas pueden controlar, se agregan instancias adicionales (hasta la ráfaga máxima especificada para el plan de App Service).

Para establecer el número mínimo de instancias de aplicación web, vaya al menú izquierdo de la aplicación web y seleccione Escalabilidad horizontal (plan de App Service). Actualice el valor Instancias siempre listas y seleccione el botón Guardar.

Captura de pantalla de las Instancias siempre preparadas

Establecimiento del número máximo de instancias de aplicación web

El límite de escala máximo establece el número máximo de instancias a las que una aplicación web puede escalar. El límite de escala máximo ayuda cuando un componente de nivel inferior, como una base de datos, tiene un rendimiento limitado. El máximo por aplicación puede estar entre 1 y la ráfaga máxima.

Para establecer el número máximo de instancias de aplicación web, vaya al menú izquierdo de la aplicación web y seleccione Escalabilidad horizontal (plan de App Service). Seleccione Aplicar límite de escalabilidad horizontal, actualice el valor de Límite de escalado máximo y seleccione el botón Guardar.

Captura de pantalla del límite de escala máximo

Actualización de instancias precalentadas

La configuración de instancias actividades previamente proporciona instancias inicializadas como búfer durante los eventos de activación y escala HTTP. Las instancias activadas previamente siguen almacenándose en el búfer hasta que se alcanza el límite máximo de escalabilidad horizontal. El número predeterminado de instancias activadas previamente es 1 y, en la mayoría de los escenarios, este valor debería dejarse en 1.

No puede cambiar la configuración de las instancias activadas previamente en el portal; en su lugar, debe usar la CLI de Azure.

Deshabilitación del escalado automático

Para deshabilitar el escalado automático, vaya al menú izquierdo de la aplicación web y seleccione Escalabilidad horizontal (plan de App Service). Seleccione Manual y seleccione el botón Guardar.

Captura de pantalla del escalado manual

¿El escalado automático admite las aplicaciones de Azure Functions?

Precaución

El escalado automático se deshabilita cuando las aplicaciones web de App Service y las aplicaciones de Azure Functions están en el mismo plan de App Service.

No, solo puede tener aplicaciones web de Azure App Service en el plan de App Service en el que desea habilitar el escalado automático. Para Functions, se recomienda usar el plan Premium de Azure Functions en su lugar.

¿Cómo funciona el escalado automático en segundo plano?

Las aplicaciones establecidas en escalado automático se supervisan continuamente, con evaluaciones del estado del trabajo que se producen al menos una vez cada pocos segundos. Si el sistema detecta una mayor carga en la aplicación, las comprobaciones de estado se vuelven más frecuentes. En caso de deterioro del estado del trabajo y ralentización de las solicitudes, se solicitan instancias adicionales. La velocidad a la que se agregan las instancias varía en función del patrón de carga y el tiempo de arranque de la aplicación individual. Las aplicaciones con tiempos de arranque reducidos y ráfagas intermitentes de carga pueden ver que una máquina virtual se agrega cada pocos segundos a un minuto.

Una vez que la carga se reduzca, la plataforma inicia una revisión para una posible reducción horizontal. Este proceso suele comenzar aproximadamente entre 5 y 10 minutos después de que la carga deje de aumentar. Durante la reducción horizontal, las instancias se quitan a una velocidad máxima de entre una cada pocos segundos y un minuto.

Además, si se implementan varias aplicaciones web en el mismo plan de App Service, la plataforma se esfuerza por asignar recursos a las instancias disponibles en función de la carga de cada una de las aplicaciones web.

¿Cómo se facturan las instancias activadas previamente?

Para saber cómo se facturan las instancias activadas previamente, piense en este escenario: Supongamos que la aplicación web tiene cinco instancias que están siempre listas, junto con una instancia activada previamente establecida como predeterminada.

Cuando la aplicación web está inactiva y no recibe solicitudes HTTP, se ejecuta con las cinco instancias siempre listas. Durante este tiempo, no se le facturan las instancias activadas previamente porque no se usan las instancias que están siempre listas y, por tanto, no se asigna ninguna instancia activada previamente.

Sin embargo, en cuanto la aplicación web empiece a recibir solicitudes HTTP y las cinco instancias que están siempre listas se activen, se asigna una instancia activada previamente y comienza su facturación.

Si la tasa de solicitudes HTTP sigue aumentando y App Service decide escalar más allá de las cinco instancias iniciales, comenzará a usar la instancia activada previamente. Esto significa que, cuando hay seis instancias activas, se aprovisiona inmediatamente una séptima para rellenar el búfer activado previamente.

Este proceso de escalado y activación previa continúa hasta que se alcanza el recuento de instancias máximo de la aplicación. Es importante tener en cuenta que ninguna instancia está activada previamente ni se activa más allá del número máximo de instancias.

¿Por qué AppServiceHTTPLogs tiene entradas de registro similares a "/admin/host/ping" con un estado 404?

El escalado automático de App Service comprueba periódicamente el punto de conexión /admin/host/ping, junto con otros mecanismos de comprobación del estado inherentes a la plataforma. Estas comprobaciones son características que se implementan específicamente. En ocasiones, debido a las configuraciones de plataforma existentes, estos pings pueden devolver errores 404. Sin embargo, es importante tener en cuenta que estos errores 404 no deben afectar a la disponibilidad ni al rendimiento del escalado de la aplicación.

Si la aplicación web devuelve un estado 5xx, estos pings del punto de conexión pueden dar lugar a reinicios intermitentes, aunque es algo poco frecuente. Actualmente estamos implementando mejoras que solucionen el problema de los reinicios intermitentes. Hasta entonces, asegúrese de que la aplicación web no devuelve un estado 5xx en este punto de conexión. Tenga en cuenta que estos puntos de conexión no se pueden personalizar.

¿Cómo se realiza un seguimiento del número de instancias escaladas horizontalmente durante el evento Escalado automático?

La métrica AutomaticScalingInstanceCount notificará el número de máquinas virtuales en las que se ejecuta la aplicación, incluida la instancia activada previamente, si se implementa. Esta métrica también se puede usar para hacer un seguimiento del número máximo de instancias que una aplicación web ha escalado horizontalmente durante un evento Escalado automático. Esta métrica solo está disponible para las aplicaciones que tienen habilitado el evento Escalado automático.

¿Cómo afecta la afinidad de ARR al escalado automático?

Azure App Service usa las cookies de Enrutamiento de solicitud de aplicaciones conocidas como Afinidad de ARR. Las cookies de Afinidad de ARR restringen el escalado, ya que envían solicitudes solo a los servidores asociados a la cookie, en lugar de a cualquier instancia disponible. En las aplicaciones que almacenan el estado, es mejor escalar verticalmente (aumentar el número de recursos que hay en una sola instancia). En las aplicaciones sin estado, el escalado horizontal (agregar más instancias) ofrece más flexibilidad y escalabilidad. Las cookies de Afinidad de ARR están habilitadas de forma predeterminada en App Service. En función de las necesidades de la aplicación, puede optar por deshabilitar las cookies de Afinidad de ARR al usar el escalado automático.

Para deshabilitar estas cookies: seleccione la aplicación de App Service y, en Configuración, seleccione Configuración. A continuación, seleccione la pestaña Configuración general. En Afinidad de ARR, seleccione Desactivado y, después, seleccione el botón Guardar.

Más recursos