Información sobre 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 el grupo de forma constante y establece el recommendedSize del grupo en función de la cantidad de instancias de máquina virtual (VM) necesarias a fin de entregar la carga máxima durante los últimos 10 minutos. Estos últimos 10 minutos se denominan período de estabilización.

Si configuras una política de ajuste de escala automático con controles de escalamiento vertical, el recommendedSize se ve restringido por los controles de escalamiento.

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

  • ON. El MIG establece su targetSize en el tamaño recomendado, y el grupo se escala de forma automática para alcanzar su objetivo de tamaño.
  • 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

Durante el proceso de ajuste de escala automático, puedes observar que, en los grupos de instancias más pequeños, el uso real y el uso objetivo pueden ser muy distintos. 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 estableces un objetivo de uso de 0.7 y tu aplicación excede este objetivo, el escalador automático puede determinar que agregar 1.5 instancias de máquina virtual (VM) disminuirá el uso a 0.7. Debido que no es posible 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 aplicación 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.

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 inactividad que refleja el tiempo que toman las VM en inicializarse. El escalador automático ignora los datos de uso de las VM durante este período.

Si estableces un valor de período de inactividad 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 el escalamiento vertical

A los fines de este tipo de escalamiento, 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. Estos últimos 10 minutos se denominan período de estabilización.

Observar los últimos 10 minutos de uso 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 al determinar que el tamaño del grupo más pequeño es suficiente para admitir la carga máxima de los últimos 10 minutos

Este período de estabilización de 10 minutos puede aparecer como una demora en el aumento del escalamiento, pero en realidad es una función integrada del ajuste de escala automático. La demora también garantiza que, si se agrega una instancia nueva al grupo de instancias administrado, la instancia se ejecuta durante al menos 10 minutos antes de que se pueda finalizar.

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

El desvío de conexión 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, antes de que se quite o se borre la instancia de VM.

Controles de reducción de escalamiento

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 durante los últimos 10 minutos (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 de los 10 minutos más recientes. Los controles de reducción de escalamiento te brindan un mecanismo adicional para controlar el volumen 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 últimos 10 minutos. 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. 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 picos 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.

Prepara el apagado de instancias

Cuando el escalador automático escala verticalmente, determina la cantidad de instancias de VM que necesita cerrar y selecciona las que tienen un uso bajo para finalizar del grupo de instancias. Antes de que finalice una instancia, asegúrate de que estas instancias realicen algunas tareas, como cerrar cualquier conexión existente, cerrar cualquier app o servidor de apps con éxito, subir registros y muchas 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 finalización y en el que finaliza la instancia. Durante este período, Compute Engine intenta ejecutar la secuencia de comandos de apagado para realizar cualquier tarea que proporciones en la secuencia de comandos.

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, consulta cómo controlar instancias incorrectas en la documentación de balanceo de cargas.

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.

Visualiza los gráficos de ajuste de escala automático sobre el uso

Si tienes un grupo de instancias administrado con ajuste de escala automático, Compute Engine proporciona un gráfico de ajuste de escala automático en el que se muestra un seguimiento del uso total y de la cantidad de instancias con ajuste de escala automático en cualquier momento. Puedes acceder a este gráfico desde Google Cloud Console.

  1. En Cloud Console, ve a la página de grupos de instancias.

    Ir a la página Grupos de instancias

  2. Haz clic en el nombre de un grupo de instancias administrado con ajuste de escala automático que deseas ver. El grupo debe utilizar el ajuste de escala automático en función del uso de CPU (otras métricas de ajuste de escala automático aún no son compatibles).
  3. En la página de detalles del grupo de instancias administrado, selecciona la pestaña Supervisión (Monitoring), si aún no está seleccionada.

    Pestaña Supervisión.

  4. Asegúrate de que la opción Tamaño con ajuste de escala automático esté seleccionada en la lista desplegable.

Los gráficos realizan un seguimiento de la cantidad de instancias en función del uso de CPU. Usa la siguiente información para comprender estos gráficos.

  • En la línea azul del gráfico superior, se indica la cantidad de instancias en el grupo de instancias administrado.
  • En la línea azul del gráfico inferior, se muestra el uso de CPU total del grupo.
  • En la línea verde del gráfico inferior, se muestra la capacidad disponible restante del grupo de instancias administrado.
    • Si la línea verde está por encima 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 debajo de la línea azul, significa que queda poca capacidad, si la hay, y debes agregar más instancias al grupo de instancias.
  • Si la capacidad disminuye, es probable que el tamaño del grupo de instancias disminuya, por lo que también lo hará la línea azul del gráfico superior. De manera similar, si la capacidad aumenta, es probable que el tamaño del grupo de instancias también aumente.

Por ejemplo, en el siguiente gráfico, se captura un grupo de instancias administrado con ajuste de escala automático que alcanza la capacidad, lo que hace que el escalador automático agregue más instancias de VM al grupo y aumente la capacidad de este.

Cuando el uso excede la capacidad, el escalador automático agrega instancias.
              Cuando el uso cae durante un período de 10 minutos, el escalador automático quita instancias.
Gráfico de ajuste de escala automático

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 Google Cloud Console.

  1. En Google Cloud Platform Console, ve a la página de grupos de instancias.

    Ir a la página Grupos de instancias

  2. Busca cualquier grupo de instancias que tenga el ícono de Precaución (!). Por ejemplo:

    Mensajes de estado en la página Grupos de instancias

  3. Coloca el cursor sobre un ícono de estado para obtener detalles del mensaje de estado.

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

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

  1. En Cloud Console, ve a la página de grupos de instancias.

    Ir a la página 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 de detalles, visualiza el mensaje de estado en la pestaña Miembros (Members). Por ejemplo:

    Mensajes de estado en la página de detalles 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 Stackdriver Monitoring, pero la métrica que proporcionaste no existe o carece de las etiquetas necesarias. Las etiquetas que se requieren dependen de si las métricas son estándar o personalizadas. Consulta la documentación sobre el escalamiento basado en una métrica de Stackdriver Monitoring para obtener más información.
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 Google Cloud Console.
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.