Comprende las decisiones de los escaladores automáticos


El ajuste de escala automático agrega (escala horizontalmente) o quita las VM (escala verticalmente) de forma automática de tu grupo de instancias administrado (MIG). En este documento, se explica cómo un escalador automático determina cuándo escalar los MIG.

Cuando configuras un escalador automático para un MIG, el escalador automático supervisa de manera constante el grupo y establece el tamaño recomendado del grupo en la cantidad de instancias de máquinas virtuales (VM) que se necesitan para entregar la carga máxima durante el período de estabilización.

El tamaño recomendado está restringido por la cantidad mínima y máxima de instancias que estableces en la política de ajuste de escala automático.

Si tu política de ajuste de escala automático incluye controles de reducción de escala, el tamaño recomendado está más restringido por tus controles de reducción de escala.

Si habilitas el ajuste de escala automático predictivo, el escalador automático usa patrones de uso de CPU históricos para hacer una previsión de la carga futura y establece el tamaño recomendado del grupo en función de su predicción.

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

  • ON. El MIG establece su tamaño de destino en el tamaño recomendado y, luego, Compute Engine escala horizontalmente de forma automática el MIG para alcanzar su tamaño de destino.
  • ONLY_SCALE_OUT. El objetivo de tamaño del MIG solo se puede incrementar si se aumenta el tamaño recomendado.
  • OFF. El objetivo de tamaño no se ve afectado por el tamaño recomendado. Sin embargo, el tamaño recomendado todavía se calcula.

Si se borra la configuración del escalador automático, no se calcula el tamaño recomendado.

Brechas entre el uso objetivo y el uso real

Cuando se utiliza una política de ajuste de escala automático con indicadores basados en métricas, puedes notar que, para grupos de instancias más pequeños, el uso real del grupo de instancias y el uso objetivo pueden parecer dispares. Esto se debe a que un escalador automático siempre actúa de manera conservadora a la hora de redondear hacia arriba o hacia abajo cuando interpreta los datos de uso y determina cuántas instancias agregar o quitar. Esto evita que el escalador automático agregue una cantidad de recursos insuficiente o quite demasiados recursos.

Por ejemplo, si configuras un objetivo de uso de 0.7 y tu aplicación excede ese objetivo, el escalador automático puede determinar que agregar 1.5 instancias de máquina virtual (VM) disminuirá el uso a 0.7 aproximadamente. Debido a que no puedes agregar 1.5 instancias de VM, el escalador automático redondea hacia arriba y agrega dos instancias. Esto puede disminuir el uso de CPU promedio a un valor inferior a 0.7, pero garantiza que la app tenga recursos suficientes para admitirlo.

De manera similar, si el escalador automático determina que quitar 1.5 instancias de VM aumentará el uso a 0.7, quitará solo una instancia.

En el caso de grupos más grandes con más instancias de VM, el uso se divide en un mayor número de instancias, y agregar o quitar instancias de VM genera menos diferencias entre el uso real y el uso objetivo.

Si usas el ajuste de escala automático basado en programaciones con otra señal de ajuste de escala automático, una programación activa podría requerir más VM que tus necesidades de uso. En estas situaciones, tu uso real es menor que el uso objetivo, ya que el programa de ajuste de escala automático determina el tamaño recomendado del grupo de instancias.

MIG regionales y distribuciones desiguales de VM

Si una región tiene una cantidad desigual de instancias entre zonas, ya sea debido a una recuperación ante una falla zonal o debido a una carga de trabajo distribuida de manera desigual, con el ajuste de escala automático se mantienen más instancias en ejecución en zonas cuyo uso real es superior al promedio. Compute Engine toma esta precaución para garantizar una alta disponibilidad en toda la región de manera integral y en todas las zonas de forma individual, incluso si algunas de las zonas experimentan una carga mayor que otras.

Demoras en el escalamiento horizontal

Cuando configuras el ajuste de escala automático, especificas un período de inicialización que refleja el tiempo que toman las VMs en inicializarse. El escalador automático solo recomienda escalar horizontalmente si el uso promedio de las instancias que no se inicializan es mayor que el uso objetivo.

Si estableces un valor de período de inicializción significativamente mayor que el tiempo que toma una instancia en inicializarse, es posible que el escalador automático ignore datos de uso legítimos y subestime el tamaño requerido de tu grupo.

Demoras en la reducción del escalamiento

Para la reducció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 establezcas. lo que sea más largo. Esta duración se denomina período de estabilización.

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

  • Asegurarse de que la información de uso recopilada del grupo de instancias sea segura
  • Evitar el comportamiento en el que un escalador automático agrega o quita instancias de forma continua a una velocidad excesiva
  • Quitar instancias de forma segura cuando se determine el tamaño del grupo más pequeño es suficiente para admitir la carga máxima del período de estabilización
  • Si tu aplicación tarda más de 10 minutos en inicializarse en una VM nueva, el grupo usará el período de inicialización como el período de estabilización. Esto garantiza que la decisión del escalador automático de borrar la VM tenga en cuenta cuánto tiempo se necesita para recuperar la capacidad de entrega.

El período de estabilización puede aparecer como un retraso en la reducción de escala, pero en realidad es una característica integrada del ajuste de escala automático. El período de estabilización también garantiza que, si se agrega una instancia nueva al grupo de instancias administrado, la instancia completa su período de inicialización o se ejecuta durante al menos 10 minutos antes de que sea apta para ser borrado.

Los períodos de inicialización de las instancias nuevas se ignoran cuando decides escalar verticalmente un grupo.

El vaciado de conexiones causa demoras

Si el grupo forma parte de un servicio de backend en el que el vaciado de conexiones está habilitado, pueden transcurrir hasta 60 segundos más después de que se complete el vaciado de conexiones hasta que se quite o se borre la instancia de VM.

Controles de reducción de escala

Cuando configuras los controles de escalamiento vertical automático, controlas la velocidad de escalamiento. El escalador automático nunca escala verticalmente más rápido que la velocidad configurada:

Escalador automático con y sin controles de escalamiento vertical.

  1. Cuando la carga disminuye, el escalador automático mantiene el tamaño del grupo en un nivel requerido para entregar la carga máxima observada en el período de estabilización. Esto funciona de la misma manera con los controles de escalamiento vertical y sin ellos.
  2. Un escalador automático sin controles de escalamiento vertical solo mantiene las instancias necesarias para manejar la carga observada durante los últimos tiempos. Después del período de estabilización, el escalador automático quita todas las instancias innecesarias en un solo paso. Con una disminución repentina de la carga, se puede generar una drástica reducción del tamaño del grupo de instancias.
  3. Un escalador automático con controles de escalamiento vertical limita cuántas instancias de VM se pueden quitar en un período configurado (en este caso, 10 VM en 20 minutos). Así, se disminuye la velocidad de reducción de instancias.
  4. Con un pico de carga nuevo, el escalador automático agrega nuevas instancias para manejar la carga. Sin embargo, debido a un largo tiempo de inicialización, las VM nuevas no están listas para entregar la carga. Con los controles de escalamiento vertical, se conservaba la capacidad anterior, lo que permitía que las VM existentes entregaran el pico.

Puedes controlar la velocidad de escalamiento vertical mediante la configuración de la reducción máxima permitida del escalador automático dentro de un margen de tiempo final, que se especifica a continuación:

  • Reducción máxima permitida (maxScaledInReplicas: cantidad o % de instancias de VM). La cantidad de instancias que tu carga de trabajo puede permitirse perder (del tamaño máximo del grupo) dentro del tiempo final especificado. Usa este parámetro para limitar la escala vertical de tu grupo a fin de que puedas entregar un pico de carga probable hasta que comiencen a entregarse más instancias. Cuanto más baja sea la reducción máxima permitida, más lenta será la velocidad de escalamiento.
  • Margen de tiempo final (timeWindowSec: segundos). Período durante el cual es probable que un pico de carga siga a una disminución temporal y durante el cual no deseas que el tamaño de tu grupo escale más allá de la reducción máxima permitida. Usa este parámetro con el fin de definir el margen en el que el escalador automático buscará el tamaño máximo suficiente para entregar la carga histórica. El escalador automático no cambiará el tamaño por debajo de la reducción máxima permitida del tamaño máximo observado en el período final. Con un margen de tiempo final más largo, el escalador automático toma en cuenta un mayor período de cargas máximas, lo que hace que el escalamiento sea más conservador y estable.

Cuando configuras controles de escalamiento vertical, el escalador automático limita las operaciones de escalamiento vertical a la reducción máxima permitida del tamaño máximo observado en el margen de tiempo final. El escalador automático sigue los siguientes pasos:

  1. Supervisa de forma continua el tamaño máximo histórico observado en el margen de tiempo final.
  2. Usa la reducción máxima permitida para calcular el tamaño de escala vertical limitado (tamaño máximo: maxScaledInReplicas).
  3. Establece el tamaño recomendado del grupo en el tamaño de escala vertical restringido. Por ejemplo, si un escalador automático cambia el tamaño de un grupo de instancias a 20 VM, pero las restricciones de escalamiento vertical solo permiten un escalamiento a 40 VM, el tamaño recomendado se establece en 40 VM.

Con los controles de escalamiento vertical, el escalador automático supervisa de forma continua el tamaño máximo de un grupo de instancias dentro del margen de tiempo final configurado a fin de identificar el tamaño suficiente para entregar 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 máximo observado:

Escalador automático con controles de escalamiento vertical

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

  1. Cuando la carga disminuye, el escalador automático quita 20 VM, que es la reducción máxima permitida configurada en los controles de escalamiento vertical.
  2. A medida que la carga aumenta o disminuye, el escalador automático supervisa de forma constante el último margen de tiempo final de 30 minutos en busca del tamaño máximo suficiente para entregar la carga histórica. Este tamaño máximo se usa como base para los controles de escalamiento vertical a fin de limitar la velocidad de escalamiento vertical. Si en los últimos 30 minutos el tamaño máximo era de 70 VM y la reducción máxima permitida de 20 VM, el escalador automático puede escalar horizontalmente a 50 VM. Si el tamaño actual es de 65 VM, el escalador automático solo puede quitar 15 VM.
  3. A medida que la carga disminuye, el escalador automático continúa quitando instancias de VM, pero limita el volumen a un máximo de 20 VM del 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 a la misma vez, por lo que debes configurar la reducción máxima permitida para que tu aplicación pueda permitirse perder esa cantidad de instancias a la vez. Usa el parámetro de reducción máxima permitida para indicar cuánta reducción de capacidad de entrega puede tolerar tu aplicación.

Cuando se limita la cantidad de instancias de VM que el ajuste de escala automático puede quitar, y cuando aumenta el margen de tiempo final, las aplicaciones con picos de carga y tiempos de inicialización largos deberían experimentar una mejor disponibilidad. En particular, el tamaño del grupo de instancias no disminuye de forma abrupta en respuesta a una disminución significativa de la carga y, en cambio, disminuye de forma gradual con el tiempo. Si los picos de carga se producen poco después de que se genere el escalamiento vertical, la cantidad restante de VM debería poder seguir asimilando el pico dentro de tu tolerancia. Además, se deben iniciar menos VM para entregar el pico de manera satisfactoria.

Puedes configurar controles de escalamiento vertical para el ajuste de escala automático de MIG zonales y regionales. La configuración es la misma para ambos casos. Los controles de escalamiento vertical funcionan para cualquier tamaño de grupo.

Controles de reducción de escalamiento en comparación con la estabilización del escalador automático

Configurar controles de escalamiento vertical 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 entregar la carga máxima, que se observa durante el período de estabilización. Los controles de reducción de escalamiento te brindan un mecanismo adicional para controlar el ritmo al que se cambia el tamaño de un grupo de instancias.

Escalador automático integrado:
Período de estabilización
Controles de reducción de escalamiento:
Margen de tiempo final
¿Se puede configurar? No, no es configurable. Sí, es configurable.
¿Qué se supervisa? Supervisa la carga máxima durante los 10 minutos anteriores o el período de inicialización, el que sea más largo. Supervisa el tamaño máximo del grupo de instancias en el período anterior establecido por el margen de tiempo final.
¿Cuál es el beneficio? Garantiza que el tamaño del grupo de instancias sea suficiente para entregar la carga máxima detectada 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 por más instancias de VM de las que tu carga de trabajo puede tolerar cuando se manejan aumentos repentinos de carga por encima del margen de tiempo final especificado.

Controles de reducción de escalamiento con el modo de escalador automático

Existen dos situaciones similares, pero ligeramente diferentes, en las que tu MIG no tiene ajuste de escala automático, pero es necesario activarlo. Estos dependen de si estás configurando el ajuste de escala automático por primera vez o si el ajuste de escala automático está configurado, pero está restringido o desactivado de forma temporal.

Configura el escalador automático por primera vez

Cuando tienes un MIG sin ajuste de escala automático y configuras el ajuste de escala automático desde cero, este usa el tamaño del MIG actual como punto de partida. Antes de escalar de forma vertical, el escalador automático usa el período de estabilización y, luego, los controles de escalamiento vertical para limitar la velocidad de escalamiento:

Configura el escalador automático por primera vez.

Cambia el modo de escalador automático

Con el modo de ajuste de escala automático, puedes desactivar o restringir de forma temporal las actividades de ajuste de escala automático. La configuración del escalador automático se conserva y el escalador automático sigue realizando cálculos en segundo plano mientras el escalador automático está desactivado o restringido. El escalador automático tiene en cuenta los controles de escalamiento vertical en sus cálculos en segundo plano cuando está desactivado o en modo restringido. Todas las actividades de ajuste de escala automático se reanudan mediante los cálculos más recientes cuando vuelves a activar el ajuste de escala automático o cuando levantas la restricción:

Reanuda el escalador automático, incluidos los controles de escalamiento vertical.

  1. El escalador automático ACTIVADO funciona como siempre (con controles de escalamiento vertical en este caso).
  2. Cuando desactivas el escalador automático, se calcula el tamaño del grupo de instancias recomendado según la carga. Para los cálculos del escalador automático, aún se tienen en cuenta los controles de escalamiento vertical. Sin embargo, el escalador automático no aplica cálculos de tamaño cuando está DESACTIVADO. El tamaño del grupo de instancias se mantiene constante hasta que el escalador automático esté ACTIVADO otra vez.
  3. Cuando vuelves a ACTIVAR el escalador automático, aplica de inmediato el tamaño calculado con anterioridad. Esto permite un escalamiento más rápido al tamaño correcto. Volver a habilitar el escalador automático puede provocar un escalamiento vertical abrupto (en este caso, de 80 a 40 instancias de VM). Esto no genera problemas porque en los cálculos en segundo plano ya se toman en cuenta los controles de escalamiento.

Ajuste de escala automático predictivo

Para obtener información sobre el ajuste de escala automático predictivo, incluido cómo funciona, consulta Escalamiento basado en predicciones.

Prepárate para detener instancias

Cuando el escalador automático reduce la escala, determina la cantidad de instancias de VM que se borrarán. El escalador automático prioriza las instancias de VM que se borrarán en función de varios factores, incluidos los siguientes:

  • VMs que no se están ejecutando por algún motivo.
  • VMs que experimentan o están programadas para someterse a cambios disruptivos, por ejemplo, actualizar, reiniciar o reemplazar.
  • VMs que aún no se actualizaron a la versión deseada de la plantilla de instancias.
  • VMs que tienen la señal de ajuste de escala automático más baja. Por ejemplo, si configuras tu MIG para que escale según el uso de CPU y el grupo debe reducir la escala, entonces el escalador automático intenta quitar las VMs que tienen el uso de CPU más bajo.

Antes de detener una instancia, asegúrate de que estas instancias realicen algunas tareas, como cerrar cualquier conexión existente, cerrar cualquier app o servidor de apps de manera correcta, subir registros y otras tareas más. Puedes indicarle a la instancia que realice estas tareas mediante una secuencia de comandos de apagado. Una secuencia de comandos de apagado se ejecuta, en función del mejor esfuerzo, en un período breve entre el momento en que se realiza la solicitud de detención y en el que se detiene la instancia. Durante este período, Compute Engine intenta ejecutar la secuencia de comandos de apagado para realizar cualquier tarea que proporciones en ella.

Esta función es útil si usas el balanceo de cargas con el grupo de instancias administrado. Si la instancia es incorrecta, el balanceador de cargas puede tardar un tiempo en reconocer que la instancia está en mal estado, lo que hará que el balanceador de cargas continúe enviando solicitudes nuevas a la instancia. Con una secuencia de comandos de apagado, la instancia puede informar que está en mal estado y, a su vez, que se está cerrando para que el balanceador de cargas pueda dejar de enviar tráfico a la instancia. Para obtener más información sobre las verificaciones de estado del balanceo de cargas, consulta la descripción general de las verificaciones de estado.

Para obtener más información sobre las secuencias de comandos de apagado, consulta la sección Secuencias de comandos de apagado.

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

Supervisa gráficos y registros de ajuste de escala automático

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

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

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre del grupo de instancias administrado que deseas ver.
  3. En la página del grupo de instancias administrado, selecciona la pestaña Supervisión.

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

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

Un cuadro de información sobre la herramienta junto al título de cada gráfico proporciona detalles contextuales adicionales sobre la métrica que se muestra.

Hay un panel de registros disponible en la parte inferior de la página, en el que puedes encontrar una lista de registros de eventos para tu grupo de instancias administrado. Para ver los registros, haz clic en la flecha de expansión.

Todos los gráficos y registros están vinculados a un solo período que puedes personalizar con el selector de rango de tiempo. Si haces clic y arrastras cualquier gráfico, puedes acercar un evento en particular y analizar los gráficos y registros dentro del rango de tiempo seleccionado.

Supervisa el ajuste de escala automático predictivo

Compute Engine proporciona un gráfico para supervisar las predicciones del escalador automático. Para ver este gráfico, haz clic en el título Tamaño del grupo en el primer gráfico y selecciona Ajuste de escala automático predictivo.

Si el ajuste de escala automático está habilitado, puedes ver cómo las predicciones del escalador automático determinan el tamaño de tu grupo de instancias. Si el ajuste de escala automático no está habilitado, de todos modos puedes ver las predicciones del escalador automático y usarlas para fundamentar tus decisiones sobre el tamaño del grupo.

Usa la siguiente información para comprender este gráfico.

  • La línea azul indica la cantidad de instancias en el grupo de instancias administrado.
  • La línea verde muestra la cantidad de instancias que predijo el escalador automático.
    • Si la línea verde está por debajo de la línea azul, significa que hay una gran cantidad de capacidad disponible y es probable que las instancias de VM tengan poco uso.
    • Si la línea verde está por encima de la línea azul, significa que queda poca capacidad, si la hay, y debes 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 tu grupo de instancias.

Visualiza los mensajes de estado

Cuando el escalador automático tiene un problema de escalamiento, muestra un mensaje de advertencia o error. Puedes revisar estos mensajes de estado de dos formas.

Visualiza los mensajes de estado en la página Grupos de instancias

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

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

    Ir a Grupos de instancias

  2. Busca cualquier grupo de instancias que tenga el ícono de precaución que precede a sus nombres.

    Por ejemplo:

    Mensajes de estado en la página Grupos de instancias

  3. Mantén el puntero sobre un ícono de estado para obtener detalles del mensaje de estado.

Visualiza los mensajes de estado en la página de resumen del grupo de instancias

Puedes ir directo a la página de resumen de un grupo de instancias específico para ver los mensajes de estado relevantes.

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

    Ir a Grupos de instancias

  2. Haz clic en el grupo de instancias para el que deseas ver los mensajes de estado.
  3. En la página del grupo de instancias, visualiza el mensaje de estado debajo del nombre del grupo de instancias.

Mensajes de estado que se muestran con frecuencia

Cuando el escalador automático tiene un problema de escalamiento, muestra un mensaje de advertencia o error. A continuación, se presentan algunos mensajes que se muestran con frecuencia y lo que significan.

All instances in the instance group are unhealthy (not in RUNNING state). If this is an error, check the instances.
Todas las instancias en el grupo de instancias tienen un estado que no es RUNNING. Si esto es intencional, puedes ignorar este mensaje. Si esto no es intencional, soluciona 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. 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, consulta Actualiza un escalador automático.
The monitoring metric that was specified does not exist or does not have the required labels. Check the metric.

Realizas el ajuste de escala automático con 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.

Puedes obtener información sobre tu cuota disponible en la página de cuotas en la consola de Google Cloud.

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

Se balancean las cargas del grupo de instancias con la configuración maxRate, pero el escalador automático no admite este modo. Cambia la configuración o inhabilita el ajuste de escala automático. Para obtener más información sobre maxRate, lee las Restricciones y lineamientos en la documentación del balanceo de cargas.

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 balancean las cargas del grupo de instancias, pero el grupo no recibe consultas. Es posible que el servicio experimente un período de inactividad, en cuyo caso no hay nada de qué preocuparse. Sin embargo, este mensaje también se debe a una configuración incorrecta. Por ejemplo, un grupo de instancias con ajuste de escala automático puede ser el objetivo de más de un balanceador de cargas, lo cual no se admite. Para obtener una lista completa de pautas, consulta Restricciones y pautas en la documentación del balanceo de cargas.