Comprender las decisiones del escalador automático


El escalado automático agrega automáticamente VM (escalamiento horizontal) o elimina VM (escalamiento horizontal) de su grupo de instancias administrado (MIG) . Este documento explica cómo un escalador automático determina cuándo escalar sus MIG.

Cuando configura un escalador automático para un MIG, el escalador automático monitorea constantemente el grupo y establece el tamaño recomendado del grupo en la cantidad de instancias de máquina virtual (VM) que se requieren para atender la carga máxima durante el per��odo de estabilización .

El tamaño recomendado está limitado por el número mínimo y máximo de instancias que establezca en la política de escalado automático.

Si su política de escalado automático incluye controles de escalabilidad horizontal , el tamaño recomendado estará aún más restringido por sus controles de escalabilidad horizontal.

Si habilita el escalado automático predictivo , el escalador automático utiliza patrones históricos de utilización de CPU para pronosticar la carga futura y establece el tamaño recomendado del grupo según su predicción.

La respuesta del MIG al tamaño recomendado del escalador automático depende de cómo configure el mode del escalador automático:

  • ON . El MIG establece su tamaño objetivo en el tamaño recomendado y luego Compute Engine escala automáticamente el MIG para alcanzar su tamaño objetivo.
  • ONLY_SCALE_OUT . El tamaño objetivo del MIG sólo se puede aumentar en respuesta a un tamaño recomendado aumentado.
  • OFF . El tamaño objetivo no se ve afectado por el tamaño recomendado. Sin embargo, el tamaño recomendado aún está calculado.

Si se elimina la configuración del escalador automático, no se calcula ningún tamaño recomendado.

Brechas entre las métricas de utilización objetivo y real

Al utilizar una política de escalado automático con señales basadas en métricas , es posible que observe que, para grupos de instancias más pequeños, la utilización real del grupo de instancias y la utilización objetivo pueden parecer muy diferentes. Esto se debe a que un escalador automático siempre actúa de manera conservadora redondeando hacia arriba o hacia abajo cuando interpreta los datos de utilización y determina cuántas instancias agregar o eliminar. Esto evita que el escalador automático agregue una cantidad insuficiente de recursos o elimine demasiados recursos.

Por ejemplo, si establece un objetivo de utilización de 0,7 y su aplicación supera el objetivo de utilización, el escalador automático podría determinar que agregar 1,5 instancias de máquina virtual (VM) reduciría la utilización a cerca de 0,7. Como no se pueden agregar 1,5 instancias de VM, el escalador automático redondea y agrega dos instancias. Esto podría disminuir la utilización promedio de la CPU a un valor inferior a 0,7, pero garantiza que su aplicación tenga suficientes recursos para admitirla.

De manera similar, si el escalador automático determina que eliminar 1,5 instancias de VM aumentaría su utilización demasiado cerca de 0,7, eliminará solo una instancia.

Para grupos más grandes con más instancias de VM, la utilización se divide en una mayor cantidad de instancias, y agregar o eliminar instancias de VM causa una brecha menor entre la utilización real y la utilización objetivo.

Si utiliza el escalado automático basado en programación con otra señal de escalado automático, una programación activa podría requerir más máquinas virtuales de las que necesita su utilización. En estas situaciones, su utilización real es menor que su utilización objetivo porque el programa de escalado automático determina el tamaño recomendado del grupo de instancias.

Retrasos en la ampliación

Cuando configura el escalado automático, especifica un período de inicialización que refleja el tiempo que tardan sus máquinas virtuales en inicializarse. El escalador automático solo recomienda realizar un escalamiento horizontal si la utilización promedio de las instancias que no se están inicializando es mayor que la utilización objetivo.

Si establece un valor de período de inicialización que es significativamente más largo que el tiempo que tarda una instancia en inicializarse, entonces su escalador automático podría ignorar los datos de utilización legítimos y podría subestimar el tamaño requerido de su grupo.

Retrasos en la ampliación

Para fines de ampliación, el escalador automático calcula el tamaño objetivo recomendado del grupo en función de la carga máxima durante los últimos 10 minutos o el período de inicialización que usted establezca, lo que sea más largo. Esta duración se conoce como período de estabilización .

Observar el uso durante el período de estabilización ayuda al escalador automático a:

  • Asegúrese de que la información de uso recopilada del grupo de instancias sea estable.
  • Evite comportamientos en los que un escalador automático agrega o elimina instancias continuamente a un ritmo excesivo.
  • Elimine instancias de forma segura determinando que el tamaño del grupo más pequeño es suficiente para soportar la carga máxima del período de estabilización.
  • Si su aplicación tarda más de 10 minutos en inicializarse en una nueva máquina virtual, entonces el grupo utiliza el período de inicialización como período de estabilización. Esto garantiza que la decisión del escalador automático de eliminar la máquina virtual tenga en cuenta cuánto tiempo lleva recuperar la capacidad de servicio.

El período de estabilización puede parecer un retraso en el escalado, pero en realidad es una característica incorporada del escalado automático. El período de estabilización también garantiza que si se agrega una nueva instancia al grupo de instancias administrado, la instancia complete su período de inicialización o se ejecute durante al menos 10 minutos antes de que sea elegible para ser eliminada.

Los períodos de inicialización para nuevas instancias se ignoran al decidir si escalar en un grupo.

El drenaje de la conexión causa retrasos

Si el grupo forma parte de un servicio backend que ha habilitado el drenaje de la conexión , pueden pasar hasta 60 segundos adicionales después de que haya transcurrido la duración del drenaje de la conexión antes de que se elimine o elimine la instancia de VM.

Controles de escala

Cuando configura los controles de escalado automático , usted controla la velocidad de escalado. El escalador automático nunca escala más rápido que su velocidad configurada:

Escalador automático con y sin controles de escalado.

  1. Cuando la carga disminuye, el escalador automático mantiene el tamaño del grupo en un nivel requerido para atender la carga máxima observada en el ( período de estabilización ). Esto funciona igual con y sin controles de escalado.
  2. Un escalador automático sin controles de escalamiento horizontal mantiene solo las instancias necesarias para manejar la carga observada recientemente. Después del período de estabilización, el escalador automático elimina todas las instancias innecesarias en un solo paso. Una caída repentina de la carga puede provocar una reducción drástica del tamaño del grupo de instancias.
  3. Un escalador automático con controles de escalamiento horizontal limita la cantidad de instancias de VM que se pueden eliminar en un período de tiempo configurado (en este caso, 10 VM en 20 minutos). Esto ralentiza la tasa de reducción de instancias.
  4. Con un nuevo pico de carga, el escalador automático agrega nuevas instancias para manejar la carga. Sin embargo, debido al largo tiempo de inicialización, las nuevas máquinas virtuales no están listas para atender la carga. Con controles escalables, se mantuvo la capacidad anterior, lo que permitió que las máquinas virtuales existentes atendieran el pico.

Usted controla la tasa de escalado configurando la reducción máxima permitida del Autoscaler dentro de una ventana de tiempo final , específicamente:

  • Reducción máxima permitida ( maxScaledInReplicas : número o porcentaje de instancias de VM). La cantidad de instancias que su carga de trabajo puede permitirse perder (desde el tamaño máximo del grupo) dentro del período de tiempo final especificado. Utilice este parámetro para limitar el escalamiento vertical de su grupo, de modo que pueda seguir atendiendo un posible pico de carga hasta que comiencen a servir más instancias. Cuanto menor sea la reducción máxima permitida, más lenta será la velocidad de escala.
  • Ventana de tiempo final ( timeWindowSec : segundos). Tiempo durante el cual es probable que un pico de carga siga a una disminución temporal y durante el cual no desea que el tamaño de su grupo aumente más allá de la reducción máxima permitida. Utilice este parámetro para definir la ventana de tiempo en la que el escalador automático buscará el tamaño de pico suficiente para atender la carga histórica. El escalador automático no cambiará el tamaño por debajo de la reducción máxima permitida restada del tamaño máximo observado en la ventana de tiempo final. Con una ventana de tiempo de seguimiento más larga, el escalador automático considera una carga máxima histórica, lo que hace que el escalado sea más conservador y estable.

Cuando configura controles de ampliación, el escalador automático restringe las operaciones de ampliación a la reducción máxima permitida del tamaño máximo observado en la ventana de tiempo final. El escalador automático utiliza los siguientes pasos:

  1. Monitorea continuamente el tamaño del pico histórico observado en la ventana de tiempo final.
  2. Utiliza la reducción máxima permitida para calcular el tamaño de escalamiento restringido (tamaño máximo: maxScaledInReplicas )
  3. Establece el tamaño recomendado del grupo en el tamaño de escalamiento restringido. Por ejemplo, si un escalador automático cambiaría el tamaño de un grupo de instancias a 20 VM pero las restricciones de escalamiento horizontal solo permiten un escalado a 40 VM, entonces el tamaño recomendado se establece en 40 VM.

Con controles de escalamiento horizontal, el escalador automático monitorea continuamente el tamaño máximo de un grupo de instancias dentro de la ventana de tiempo final configurada para identificar el tamaño suficiente para atender la carga histórica. El escalador automático no escala más allá de la reducción máxima permitida medida a partir del tamaño del pico observado:

Escalador automático con controles de escalado.

Por ejemplo, en el diagrama anterior, los controles de escalamiento horizontal están configurados para una reducción máxima permitida de 20 VM en una ventana de tiempo final de 30 minutos:

  1. Cuando la carga disminuye, el escalador automático elimina 20 máquinas virtuales, que es la reducción máxima permitida configurada en los controles de escalamiento horizontal.
  2. A medida que la carga sube y baja, el escalador automático monitorea constantemente la ventana de tiempo de seguimiento de los últimos 30 minutos para detectar el tamaño máximo suficiente para atender la carga histórica. Este tamaño de pico se utiliza como base para los controles de ampliación a fin de limitar la tasa de ampliación. Si, en los últimos 30 minutos, el tamaño máximo fue de 70 VM y la reducción máxima permitida se establece en 20 VM, el escalador automático puede escalar a 50 VM. Si el tamaño actual es de 65 VM, el escalador automático solo puede eliminar 15 VM.
  3. A medida que la carga disminuye, el escalador automático continúa eliminando instancias de VM, pero limita la velocidad a un máximo de 20 VM desde el tamaño máximo del grupo de instancias medido en los últimos 30 minutos.

La reducción máxima permitida en el tamaño del grupo puede ocurrir de una vez, por lo que debe configurar la reducción máxima permitida para que su aplicación pueda permitirse perder tantas instancias a la vez. Utilice el parámetro de reducción máxima permitida para indicar cuánta reducción en la capacidad de servicio puede tolerar su aplicación.

Al limitar la cantidad de instancias de VM que el escalado automático puede eliminar y al aumentar la ventana de tiempo de seguimiento observada, las aplicaciones con picos de carga y tiempos de inicialización prolongados deberían experimentar una disponibilidad mejorada. En particular, el tamaño del grupo de instancias no disminuye abruptamente en respuesta a una caída significativa en la carga, sino que disminuye gradualmente con el tiempo. Si la carga aumenta poco después de que se haya producido una ampliación, el número restante de máquinas virtuales aún debería poder absorber el aumento dentro de su tolerancia. Además, se deben iniciar menos máquinas virtuales para atender suficientemente el pico.

Puede configurar controles de escalamiento horizontal para el escalado automático de MIG tanto zonales como regionales. La configuración es la misma para ambos casos. Los controles ampliables funcionan para cualquier tamaño de grupo.

Controles de escalabilidad versus estabilización de escala automática

Configurar controles de escalado horizontal no significa desactivar el mecanismo de estabilización integrado del escalador automático. El escalador automático siempre mantiene el tamaño del grupo de instancias en un nivel requerido para atender la carga máxima, observada durante el período de estabilización. Los controles de escalamiento horizontal le brindan un mecanismo adicional para controlar la velocidad a la que se cambia el tamaño de un grupo de instancias.

Escalador automático incorporado:
Periodo de estabilización
Controles de escalabilidad:
Ventana de tiempo final
¿Configurable? No, no configurable Si, configurable
¿Qué se monitorea? Monitorea la carga máxima durante los 10 minutos anteriores o el período de inicialización, lo que sea más largo. Supervisa el tamaño máximo del grupo de instancias en el período anterior establecido por la ventana de tiempo final
¿Cómo ayuda esto? Garantiza que el tamaño del grupo de instancias siga siendo suficiente para atender la carga máxima que se observó durante los últimos 10 minutos o el período de inicialización, lo que sea más largo. Garantiza que el tamaño del grupo de instancias no se reduzca en más instancias de VM de las que su carga de trabajo puede tolerar al manejar picos de carga durante un período de tiempo específico.

Controles de escalabilidad con modo de escalador automático

Hay dos escenarios similares pero ligeramente diferentes cuando su MIG no tiene escalado automático y desea activar el escalado automático. Estos dependen de si está configurando el escalado automático por primera vez o si el escalado automático está configurado pero temporalmente restringido o desactivado .

Configurando el escalador automático por primera vez

Cuando tiene un MIG sin escalado automático y configura el escalado automático desde cero, el escalador automático utiliza el tamaño de MIG actual como punto de partida. Antes de realizar la ampliación, el escalador automático utiliza el período de estabilización y luego utiliza controles de ampliación para limitar la tasa de ampliación:

Configurando el escalador automático por primera vez.

Cambiar el modo de escalador automático

Con el modo de escalado automático , puede desactivar o restringir temporalmente las actividades de escalado automático. La configuración del escalador automático persiste y el escalador automático continúa realizando cálculos en segundo plano mientras el escalador automático está apagado o restringido. El escalador automático tiene en cuenta los controles de escalado en sus cálculos en segundo plano mientras está en modo apagado o restringido. Todas las actividades de escalado automático se reanudan utilizando los cálculos más recientes cuando vuelves a activar el escalado automático o cuando levantas la restricción:

Reanudando el escalador automático, incluidos los controles de escalado.

  1. El escalador automático activado se comporta como de costumbre (con controles de escala en este caso).
  2. Cuando desactiva el escalador automático, aún calcula el tamaño del grupo de instancias recomendado en función de la carga. Los cálculos del escalador automático todavía consideran controles de escalado. Sin embargo, el escalador automático no aplica cálculos de tamaño cuando el escalador automático está APAGADO. El tamaño del grupo de instancias permanece constante hasta que el escalador automático esté activado nuevamente.
  3. Cuando enciende nuevamente el escalador automático, aplica inmediatamente el tamaño calculado previamente. Esto permite un escalado más rápido al tamaño correcto. Volver a habilitar el escalador automático puede provocar una escala abrupta (aquí de 80 a 40 instancias de VM). Esto es seguro porque los cálculos en segundo plano ya consideran controles de ampliación.

Escalado automático predictivo

Para obtener información sobre el escalado automático predictivo, incluido cómo funciona , consulte Escalado basado en predicciones .

Preparándose para detener instancias

Cuando el escalador automático se amplía, determina la cantidad de instancias de VM que se eliminarán. El escalador automático prioriza las instancias de VM para eliminar en función de varios factores, incluidos los siguientes:

  • Máquinas virtuales que no se están ejecutando por algún motivo.
  • Máquinas virtuales que están experimentando o programadas para cambios disruptivos (por ejemplo, actualizar, reiniciar o reemplazar).
  • Máquinas virtuales que aún no están actualizadas a la versión prevista de la plantilla de instancias.
  • Máquinas virtuales que tienen la señal de escalado automático más baja. Por ejemplo, si configura su MIG para escalar según la utilización de la CPU y el grupo necesita escalar, el escalador automático intenta eliminar las máquinas virtuales que tienen la menor utilización de la CPU.

Antes de detener una instancia, es posible que desee asegurarse de que estas instancias realicen ciertas tareas, como cerrar cualquier conexión existente, cerrar correctamente cualquier aplicación o servidor de aplicaciones, cargar registros, etc. Puede indicarle a su instancia que realice estas tareas usando un script de apagado . Un script de cierre se ejecuta, en el mejor de los casos , en el breve período entre el momento en que se realiza la solicitud de detención y el momento en que se detiene realmente la instancia. Durante este período, Compute Engine intenta ejecutar su secuencia de comandos de apagado para realizar cualquier tarea que proporcione en la secuencia de comandos.

Esto es particularmente útil si utiliza el equilibrio de carga con su grupo de instancias administrado. Si su instancia deja de estar en buen estado, es posible que el balanceador de carga tarde algún tiempo en reconocer que la instancia no está en buen estado, lo que hace que el balanceador de carga continúe enviando nuevas solicitudes a la instancia. Con un script de apagado, la instancia puede informar que no está en buen estado mientras se está cerrando para que el balanceador de carga pueda dejar de enviar tráfico a la instancia. Para obtener más información sobre las comprobaciones de estado del equilibrio de carga, consulte la descripción general de las comprobaciones de estado .

Para obtener más información sobre los scripts de apagado, consulte Scripts de apagado .

Para obtener más información sobre el cierre de instancias, lea la documentación sobre cómo detener o eliminar una instancia.

Monitoreo de gráficos y registros de escalado automático

Compute Engine proporciona varios gráficos y registros que te permiten monitorear el comportamiento de tu grupo de instancias administrado en cualquier momento.

Puede acceder a los gráficos y registros en la consola de Google Cloud.

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

  2. Haga clic en el nombre del grupo de instancias administrado que desea ver.
  3. En la página del grupo de instancias administrado, seleccione la pestaña Monitoreo .

Los gráficos de seguimiento muestran la evolución de las siguientes métricas:

  • Tamaño del grupo
  • Utilización del escalador automático
  • utilización de la CPU
  • E/S de disco (bytes)
  • E/S de disco (operaciones)
  • Bytes de red
  • paquetes de red

Una información sobre herramientas junto al título de cada gráfico proporciona detalles contextuales adicionales sobre la métrica mostrada.

Hay un panel de Registros disponible en la parte inferior de la página, donde puede encontrar una lista de registros de eventos para su grupo de instancias administrado. Para ver los registros, haga clic en la flecha de expansión.

Todos los gráficos y registros están vinculados a un único período de tiempo que puede personalizar con el selector de rango de tiempo. Al hacer clic y arrastrar cualquier gráfico, puede ampliar un evento en particular y analizar los gráficos y registros dentro del rango de tiempo seleccionado.

Supervisión del escalado automático predictivo

Compute Engine proporciona un gráfico para monitorear las predicciones del escalador automático. Para ver este gráfico, haga clic en el título Tamaño del grupo en el primer gráfico y seleccione Escalado automático predictivo .

Si el escalado automático está habilitado, puede ver cómo las predicciones del escalador automático determinan el tamaño de su grupo de instancias. Si el escalado automático no está habilitado, aún puede ver las predicciones del escalador automático y usarlas para informar sus decisiones con respecto al tamaño de su grupo.

Utilice la siguiente información para comprender este cuadro.

  • La línea azul indica la cantidad de instancias en el grupo de instancias administrado.
  • La línea verde muestra la cantidad de instancias predichas por el escalador automático.
    • Si la línea verde está debajo de la línea azul, hay una gran cantidad de capacidad disponible y es probable que sus instancias de VM estén infrautilizadas.
    • Si la línea verde está por encima de la línea azul, entonces queda poca capacidad, si es que queda alguna, y debe agregar más instancias al grupo de instancias.
  • Las líneas rojas horizontales discontinuas indican el número mínimo y máximo de instancias permitidas en su grupo de instancias.

Ver mensajes de estado

Cuando el escalador automático experimenta un problema de escala, devuelve un mensaje de advertencia o error. Puede revisar estos mensajes de estado de dos maneras.

Ver mensajes de estado en la página de grupos de instancias

Puedes ver los mensajes de estado directamente en la página de grupos de instancias en la consola de Google Cloud .

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

  2. Busque cualquier grupo de instancias que tenga el ícono de precaución antes de sus nombres.

    Por ejemplo:

    Mensajes de estado en la página de grupos de instancias.

  3. Mantenga el puntero sobre un icono de estado para obtener detalles del mensaje de estado.

Ver mensajes de estado en la página de descripción general del grupo de instancias

Puede ir directamente a la página de descripción general de un grupo de instancias específico para ver mensajes de estado relevantes.

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

  2. Haga clic en el grupo de instancias para el cual desea ver los mensajes de estado.
  3. En la página del grupo de instancias, vea el mensaje de estado debajo del nombre del grupo de instancias.

Mensajes de estado comúnmente devueltos

Cuando el escalador automático experimenta un problema de escala, devuelve un mensaje de advertencia o error. A continuación se muestran algunos mensajes devueltos habitualmente y su significado.

All instances in the instance group are unhealthy (not in RUNNING state). If this is an error, check the instances.
Todas las instancias del grupo de instancias tienen un estado distinto de RUNNING . Si esto es intencional, puedes ignorar este mensaje. Si esto no es intencional, solucione el problema del grupo de instancias.
The number of instances has reached the maxNumReplicas. The autoscaler cannot add more instances.
Cuando creaste el escalador automático, indicaste la cantidad máxima de instancias que puede tener el grupo de instancias. Actualmente, el escalador automático está intentando escalar horizontalmente el grupo de instancias para satisfacer la demanda, pero alcanzó el maxNumReplicas . Para obtener información sobre cómo actualizar maxNumReplicas a un número mayor, consulte Actualización de un escalador automático .
The monitoring metric that was specified does not exist or does not have the required labels. Check the metric.

Estás realizando el escalado automático usando una métrica de Cloud Monitoring, pero la métrica que proporcionaste no existe, carece de las etiquetas necesarias o no es accesible para el agente de servicio de Compute Engine .

Quota for some resources is exceeded. Increase the quota or delete resources to free up more quota.

Puede obtener información sobre su cuota disponible en la página Cuota en la consola de Google Cloud.

Autoscaling does not work with an HTTP/S load balancer configured for maxRate.

La carga del grupo de instancias se equilibra mediante la configuración maxRate , pero el escalador automático no admite este modo. Cambie la configuración o desactive el escalado automático. Para obtener más información sobre maxRate , lea las Restricciones y pautas en la documentación de equilibrio de carga.

The autoscaler is configured to scale based on a load balancing signal but the instance group has not received any queries from the load balancer. Check that the load balancing configuration is working.

Se está equilibrando la carga del grupo de instancias, pero el grupo no tiene consultas entrantes. Es posible que el servicio esté experimentando un período de inactividad, en cuyo caso no hay nada de qué preocuparse. Sin embargo, este mensaje también puede deberse a una mala configuración; por ejemplo, un grupo de instancias con escalado automático podría ser el destino de más de un balanceador de carga, lo cual no es compatible. Para obtener una lista completa de pautas, consulte Restricciones y pautas en la documentación de equilibrio de carga.