Escalar según las predicciones


Puedes configurar el autoescalado de un grupo de instancias gestionado (MIG) para añadir o eliminar automáticamente instancias de máquina virtual (VM) en función de los aumentos o las disminuciones de la carga. Sin embargo, si tu aplicación tarda unos minutos o más en inicializarse, añadir instancias en respuesta a los cambios en tiempo real podría no aumentar la capacidad de tu aplicación con la suficiente rapidez. Por ejemplo, si hay un gran aumento de la carga (como cuando los usuarios se despiertan por la mañana), algunos usuarios pueden experimentar retrasos mientras se inicializa tu aplicación en nuevas instancias.

Puedes usar el autoescalado predictivo para mejorar los tiempos de respuesta de las aplicaciones que tienen tiempos de inicialización largos y cuyas cargas de trabajo varían de forma predecible con ciclos diarios o semanales.

Cuando habilitas el autoescalado predictivo, Compute Engine pronostica la carga futura en función del historial de tu MIG y lo escala antes de que se produzca la carga prevista, de modo que las instancias nuevas estén listas para servir cuando llegue la carga. Sin el autoescalado predictivo, una herramienta de adaptación dinámica solo puede escalar un grupo de forma reactiva, en función de los cambios observados en la carga en tiempo real. Con el autoescalado predictivo habilitado, el autoescalador funciona con datos en tiempo real y con datos históricos para cubrir la carga actual y la prevista. Para obtener más información, consulta Cómo funciona el autoescalado predictivo y Comprobar si el autoescalado predictivo es adecuado para tu carga de trabajo.

Antes de empezar

  • Si quieres usar los ejemplos de línea de comandos de esta guía, instala la CLI de Google Cloud o inicia Cloud Shell.
  • Consulta los conceptos básicos del escalado automático.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Precios

El autoescalado predictivo no tiene coste económico. Sin embargo, si habilitas el autoescalado predictivo para optimizar la disponibilidad, pagas por los recursos de Compute Engine que utilice tu MIG.

Limitaciones

  • El autoescalado predictivo solo funciona con el uso de CPU como métrica de escalado. No se admiten las métricas de Cloud Load Balancing ni de Cloud Monitoring.
  • Compute Engine necesita 3 días de historial de autoescalado basado en la CPU para generar predicciones.
  • Las predicciones se basan en los patrones de carga semanales y diarios. Compute Engine no predice eventos mensuales, anuales ni únicos, y tampoco predice patrones de carga que duren menos de 10 minutos. Puedes usar el autoescalado basado en la programación para solicitar capacidad para patrones de carga únicos o de otro tipo.

Cargas de trabajo adecuadas

El autoescalado predictivo funciona mejor si tu carga de trabajo cumple los siguientes criterios:

  • Tu aplicación tarda mucho tiempo en inicializarse. Por ejemplo, si configuras un periodo de inicialización de más de 2 minutos.
  • Tu carga de trabajo varía de forma predecible con ciclos diarios o semanales.

Si tu servicio tarda mucho en inicializarse, es posible que tus usuarios experimenten latencia del servicio después de un evento de escalado horizontal, es decir, mientras se aprovisionan las nuevas máquinas virtuales, pero aún no están operativas. El autoescalado predictivo tiene en cuenta el tiempo de inicialización de tu aplicación y escala horizontalmente antes de los aumentos previstos en el uso, lo que ayuda a asegurar que el número de instancias de servicio disponibles sea suficiente para la utilización objetivo.

Para ver cómo puede afectar el autoescalado predictivo a tu grupo, consulta Comprobar si el autoescalado predictivo es adecuado para tu carga de trabajo.

Habilitar e inhabilitar el autoescalado predictivo

Puedes habilitar el autoescalado predictivo cuando escales en función del uso de CPU. Para obtener más información sobre cómo configurar el autoescalado basado en la CPU, consulta el artículo Escalar en función del uso de la CPU.

Si tu MIG no tiene historial de autoescalado, pueden pasar 3 días antes de que el algoritmo predictivo afecte al autoescalador. Durante este tiempo, el grupo se ajusta en función de los datos en tiempo real. Después de 3 días, el grupo empieza a escalar usando predicciones. A medida que se recopila más carga histórica, el autoescalador predictivo comprende mejor tus patrones de carga y sus previsiones mejoran. Compute Engine usa hasta 3 semanas del historial de carga de tu MIG para entrenar el modelo de aprendizaje automático.

Consola

  1. En la consola, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. En la lista, haz clic en el nombre de un MIG para abrir la página de resumen del grupo.

  3. Haz clic en Editar.

  4. Haga clic en Tamaño del grupo y escalado automático para desplegar la sección y haga lo siguiente:

    1. Si no existe ninguna configuración de autoescalado, configúrala de la siguiente manera:

      1. En la sección Autoescalado, haga clic en Configurar autoescalado. La señal de uso de CPU se añade de forma predeterminada.
      2. Especifica el número mínimo y máximo de instancias que quieres que cree el escalador automático en este grupo.
      3. En la sección Señales de escalado automático, haga clic en la señal de utilización de la CPU.
      4. Modifica el Tipo de señal y el Uso de CPU objetivo según sea necesario.
      5. En la sección Autoescalado predictivo, seleccione Optimizar la disponibilidad para habilitar el autoescalado predictivo.

        • Si quieres inhabilitar el algoritmo predictivo y usar solo el autoescalador en tiempo real, selecciona Desactivado.
      6. Haz clic en Listo.

    2. Si ya has configurado el autoescalado en función del uso de la CPU, haz lo siguiente:

      1. En la sección Señales de escalado automático, haga clic en la señal de utilización de la CPU.
      2. En la sección Autoescalado predictivo, seleccione Optimizar la disponibilidad para habilitar el autoescalado predictivo.
    3. Haz clic en Listo.

  5. En la sección Periodo de inicialización, especifica cuánto tiempo tarda tu aplicación en inicializarse en una instancia nueva. Este ajuste indica al autoescalador predictivo que escale en sentido horizontal con más antelación a la carga prevista, de forma que las aplicaciones se inicialicen cuando llegue la carga.

  6. Haz clic en Guardar.

gcloud

Cuando definas o actualices el escalador automático de un MIG, incluye la marca --cpu-utilization-predictive-method con uno de los siguientes valores:

  • optimize-availability: para habilitar el algoritmo predictivo
  • none (valor predeterminado): inhabilita el algoritmo predictivo.

Si el autoescalado basado en la CPU aún no está habilitado en el grupo, debe habilitarlo. Puedes usar el comando set-autoscaling para configurar desde cero la política de escalado automático de un grupo. Por ejemplo, el siguiente comando muestra cómo configurar el autoescalado con los siguientes ajustes:

  • Autoescalado predictivo habilitado.
  • Uso de CPU objetivo del 75%.
  • El número máximo de instancias se ha definido en 20.
  • Un periodo de inicialización (--cool-down-period) de 5 minutos. Este ajuste indica al autoescalador predictivo que escale horizontalmente 5 minutos antes de la carga prevista, de modo que las aplicaciones se inicialicen cuando llegue la carga.
gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method optimize-availability \
  --target-cpu-utilization 0.75 \
  --max-num-replicas 20 \
  --cool-down-period 300

Si el autoescalado basado en la CPU ya está habilitado en el grupo, usa el comando update-autoscaling para habilitar el algoritmo predictivo:

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
  --cpu-utilization-predictive-method=optimize-availability

REST

Cuando cree o actualice un escalador automático, incluya el campo predictiveMethod en el cuerpo de la solicitud con uno de los siguientes valores:

  • OPTIMIZE_AVAILABILITY: para habilitar el algoritmo predictivo
  • NONE (valor predeterminado): inhabilita el algoritmo predictivo.

Si el grupo no tiene ninguna configuración de escalado automático, haz lo siguiente:

Si el grupo ya tiene una configuración de autoescalado, haz lo siguiente:

Si el autoescalado basado en la CPU aún no está habilitado en el grupo, debe habilitarlo.

Por ejemplo, la siguiente solicitud aplica un parche a un recurso de escalador automático para habilitar el escalado automático basado en la CPU con los siguientes ajustes:

  • Autoescalado predictivo habilitado.
  • Uso de CPU objetivo del 75%.
  • El número máximo de instancias se ha definido en 20.
  • Un periodo de inicialización (coolDownPeriodSec) de 5 minutos. Este ajuste indica al autoescalador predictivo que escale horizontalmente 5 minutos antes de la carga prevista, de modo que las aplicaciones se inicialicen cuando llegue la carga.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers/

{
  "name": "AUTOSCALER_NAME",
  "target": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME",
  "autoscalingPolicy": {
    "cpuUtilization": {
       "utilizationTarget": 0.75,
       "predictiveMethod": "OPTIMIZE_AVAILABILITY"
     },
    "maxNumReplicas": 20,
    "coolDownPeriodSec": 300
  }
}

Comprobar si el autoescalador predictivo está habilitado

Para ver la configuración de autoescalado actual de un MIG, consulta Obtener las propiedades de un MIG.

Configurar el autoescalado predictivo

Para obtener más información sobre cómo configurar la utilización objetivo, el número mínimo y máximo de instancias, y el periodo de inicialización, consulta Escalar en función de la utilización de la CPU. Cuando configuras estas opciones, el autoescalador predictivo trabaja para mantener todas las instancias en el nivel de utilización objetivo que hayas definido, dentro de los límites mínimo y máximo del grupo, de la misma forma que lo hace un autoescalador en tiempo real.

Usa el ajuste del periodo de inicialización para tener en cuenta el tiempo que tarda tu aplicación en inicializarse. Este ajuste influye en el tiempo de antelación con el que el autoescalado predictivo inicia nuevas instancias antes del aumento previsto de la carga, de modo que tu aplicación esté lista para servir contenido cuando llegue la carga.

Comprobar si el autoescalado predictivo es adecuado para tu carga de trabajo

Para ver si el autoescalado predictivo puede mejorar la disponibilidad de tu aplicación, puedes comparar el rendimiento de la configuración de autoescalado basada en la CPU actual de tu grupo con el autoescalado predictivo. No es necesario que habilites el autoescalado predictivo para hacer la comparación.

Para obtener más información sobre las cargas de trabajo adecuadas para el ajuste automático predictivo, consulta Cargas de trabajo adecuadas.

Comprobar si hay sobrecargas

Una MIG con autoescalado está sobrecargada cuando su uso medio de la CPU supera el objetivo. Para comprobar si tu configuración de autoescalado ha provocado que las VMs se sobrecarguen durante los últimos 7 días y si el autoescalado predictivo puede reducir las sobrecargas, sigue estos pasos:

  1. En la consola, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haga clic en un MIG para el que se haya configurado el autoescalado basado en la CPU. Se abrirá la página de resumen del grupo.

  3. Haz clic en Editar.

  4. Haga clic en Tamaño del grupo y escalado automático para desplegar la sección.

  5. En la sección Autoescalado, vaya a Señales de autoescalado, despliegue la sección Uso de CPU y, a continuación, haga clic en Comprueba si puedes optimizar la disponibilidad con el autoescalado predictivo.

  6. En función de los datos de los últimos 7 días, la tabla muestra cuántas VMs se han usado al día y cuántas VMs se han sobrecargado al día en las siguientes filas:

    • Configuración de autoescalado actual: muestra el rendimiento del autoescalador en función de su configuración durante los últimos 7 días.
    • Con el autoescalado predictivo configurado como "Optimizar la disponibilidad": muestra cómo habría funcionado el autoescalador si el autoescalado predictivo se hubiera habilitado en los últimos 7 días.

Puedes usar el "Número de VMs usadas al día" como proxy de los costes. Por ejemplo, para reducir el número diario de VMs sobrecargadas, el autoescalador predictivo puede crear VMs antes y ejecutarlas durante más tiempo, lo que conlleva cargos adicionales.

Monitorizar y simular el autoescalado predictivo

Puedes visualizar el tamaño histórico de tu grupo con Cloud Monitoring. El gráfico de monitorización muestra cómo ha escalado tu grupo la configuración de autoescalado a lo largo del tiempo, así como cómo lo habría escalado el autoescalado predictivo, si estuviera habilitado.

En los grupos en los que el autoescalado predictivo esté inhabilitado, puede usar esta herramienta para simular el autoescalado predictivo antes de habilitarlo.

  1. En la consola, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haga clic en un MIG para el que se haya configurado el autoescalado basado en la CPU. Se abrirá la página de resumen del grupo.

  3. Haz clic en Monitorización para ver los gráficos relacionados con el grupo.

  4. En el primer gráfico, haz clic en el título y selecciona Escalado automático predictivo. En esta vista se muestra el tamaño real del grupo, así como el previsto.

  5. Puedes seleccionar otro periodo para ver más historial o ampliar un periodo en el que la demanda haya aumentado para ver cómo afecta el autoescalado predictivo al tamaño del grupo antes de la carga prevista.

Cómo funciona el autoescalado predictivo

La herramienta de autoescalado predictivo pronostica tu métrica de escalado en función de las tendencias históricas de la métrica. Las previsiones se vuelven a calcular cada pocos minutos, lo que permite que el escalador automático adapte rápidamente su previsión a los cambios muy recientes en la carga. El autoescalador predictivo necesita al menos 3 días de historial para determinar un patrón de uso del servicio representativo antes de poder proporcionar predicciones. Compute Engine usa hasta 3 semanas del historial de carga de tu MIG para entrenar el modelo de aprendizaje automático.

La herramienta de escalado automático predictivo calcula el número de VMs necesarias para alcanzar tu objetivo de utilización en función de numerosos factores, entre los que se incluyen los siguientes:

  • Valor futuro previsto de la métrica de escalado.
  • Valor actual de la métrica de escalado.
  • Confianza en las tendencias anteriores, incluida la variabilidad de la métrica de escalado
  • El periodo de inicialización de la aplicación configurado, también denominado periodo de inicialización

En función de estos factores, el escalador automático predictivo amplía tu grupo antes de la demanda prevista.

Comparación de las VMs de servicio con y sin autoescalado predictivo.

Imagen 1. Comparación de las VMs de servicio con y sin autoescalado predictivo.

En la figura 1, la línea azul muestra una demanda creciente de máquinas virtuales. La línea negra muestra la respuesta del escalador automático: se añaden más máquinas virtuales. Sin embargo, en el caso de las aplicaciones con tiempos de inicialización largos, la línea gris muestra que las VMs añadidas requieren más tiempo antes de estar listas para servir contenido, lo que puede provocar que no haya suficientes VMs para satisfacer la demanda. Si el autoescalado predictivo está habilitado, se tienen en cuenta el aumento previsto de la demanda y el largo tiempo de inicialización de la aplicación. La herramienta de autoescalado responde añadiendo VMs antes, lo que da como resultado un número suficiente de VMs de servicio. Puedes configurar con cuánta antelación se añaden las nuevas instancias definiendo el periodo de inicialización.

Datos de uso en tiempo real

El escalado automático predictivo no puede determinar un patrón para todos los cambios futuros en el uso basándose en el historial de datos, por lo que también funciona a la perfección con los datos en tiempo real. Por ejemplo, una noticia inesperada puede contribuir a un aumento del uso que no se podría haber previsto basándose únicamente en el historial. Para gestionar estos cambios impredecibles en la carga, el autoescalador predictivo responde de la siguiente manera:

  • Adapta sus predicciones: las predicciones se recalculan constantemente, en cuestión de minutos, por lo que se ajustan para incorporar los datos más recientes. El momento exacto en el que se ajustan los nuevos patrones depende, entre otras cosas, de lo repetible que sea el nuevo patrón y de la diferencia entre el nuevo patrón y las predicciones anteriores.
  • Se basa en datos en tiempo real: el número de instancias recomendado por la herramienta de ajuste automático, basado en los valores en tiempo real de la métrica, siempre es suficiente para alcanzar el objetivo de utilización del grupo. Si el valor actual de una señal en tiempo real es mayor que la predicción, el valor actual de la señal tiene prioridad sobre la predicción. Por lo tanto, los grupos de instancias gestionados que tienen habilitado el autoescalado predictivo siempre tienen más disponibilidad que los que no lo tienen.

En dos gráficos se muestra cómo se adaptan las predicciones al uso real de la CPU.

Imagen 2. En dos gráficos se muestra cómo se adaptan las predicciones al uso real de la CPU.

En la imagen 2, la línea amarilla de puntos muestra la predicción en t1. Sin embargo, el uso real de la CPU, representado por la línea azul continua, es diferente del previsto. En el gráfico de la izquierda, el uso real de la CPU es superior al previsto. En el gráfico de la derecha, el uso real de la CPU es inferior al previsto. La línea azul de puntos muestra la predicción ajustada.

Picos cortos e impredecibles

Los picos cortos e impredecibles se cubren en tiempo real. La herramienta de adaptación dinámica crea al menos tantas instancias como sean necesarias para mantener la utilización en el objetivo configurado, en función del valor real actual de la métrica. Sin embargo, estas instancias no se crean con antelación, como se muestra en la siguiente figura.

Un pico breve e impredecible hace que el escalador automático reaccione en tiempo real.

Imagen 3. Un pico breve e impredecible hace que el escalador automático reaccione en tiempo real.

En la figura 3, la línea azul continua muestra el uso real de la CPU. No se ha podido predecir un aumento inesperado del uso de la CPU. Como el escalador automático siempre monitoriza los datos en tiempo real, añade instancias para adaptarse al pico. La línea negra continua muestra la adición reactiva de VMs por parte del escalador automático en respuesta al pico. La línea continua gris muestra el número de VMs en funcionamiento. La línea gris va por detrás de la negra debido al tiempo de inicialización de la aplicación. En este caso, el grupo está sobrecargado temporalmente.

Caídas repentinas

Otro tipo de cambio impredecible en el uso es un descenso repentino, por ejemplo, un descenso causado por un fallo en una parte de la pila de aplicaciones. Cuando esto ocurre, el número de instancias sigue inicialmente la previsión. Sin embargo, con el tiempo, la previsión se ajusta al uso inferior al previsto, lo que provoca una reducción. El momento exacto de este ajuste depende de varios factores, como la frecuencia con la que se ha producido el patrón en el pasado, la duración de la bajada y la profundidad de la bajada.

Si se produce un descenso repentino, el autoescalador predictivo cambiará su previsión.

Imagen 4. Si se produce un descenso repentino, el autoescalador predictivo cambiará su previsión.

En la figura 4, la línea amarilla de puntos muestra la predicción en t1. Sin embargo, el uso real de la CPU, representado por la línea azul continua, fue inferior al previsto. La línea azul de puntos muestra la predicción actualizada, que se ajustó automáticamente después de observar un uso inferior al previsto. De este modo, la herramienta de ajuste automático de escala eliminará las instancias tras el periodo de estabilización estándar.

Historial de datos

El autoescalado predictivo necesita al menos 3 días de historial de carga para empezar a hacer previsiones. Si tienes un MIG nuevo que no tiene datos históricos, Compute Engine escalará tu grupo de forma reactiva usando datos en tiempo real hasta que haya suficientes datos históricos disponibles. Después de 3 días, a medida que Compute Engine recoge más datos de uso, las predicciones mejoran.

Si actualizas tu aplicación creando un MIG y eliminando el antiguo (por ejemplo, un despliegue azul-verde), el nuevo MIG necesitará 3 días de datos de carga históricos para que el escalado automático predictivo pueda volver a generar previsiones. Si quieres conservar el historial de carga en varios MIGs para que las previsiones puedan empezar inmediatamente cuando crees un nuevo MIG, ponte en contacto con nosotros para solicitar instrucciones sobre cómo unirte a una vista previa privada.

Siguientes pasos