Los grupos de instancias gestionados (MIGs) ofrecen funciones de autoescalado que te permiten añadir o eliminar automáticamente instancias de máquina virtual (VM) de un MIG en función de los aumentos o las disminuciones de la carga. Como tus aplicaciones se escalan de forma automática, pueden procesar fácilmente los incrementos de tráfico. Además, esta característica reduce los costes cuando la demanda de recursos disminuye. Tú defines la política de autoescalado y la herramienta de adaptación dinámica lleva a cabo el ajuste correspondiente basándose en la carga medida y las opciones que configures.
El autoescalado añade más VMs a tu MIG cuando hay más carga (escalado horizontal) y elimina VMs cuando la necesidad de VMs disminuye (escalado vertical).
Requisitos previos
El escalador automático usa el agente de servicio de Compute Engine para añadir y quitar instancias del grupo. Google Cloud crea automáticamente esta cuenta de servicio, así como su vinculación de política de gestión de identidades y accesos al rol de agente de servicio de Compute Engine, cuando la API de Compute Engine está habilitada.
Si falta esta cuenta en tu proyecto (por ejemplo, si la has quitado), puedes añadirla manualmente:
Consola
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Haz clic en Conceder acceso.
En el campo Nuevos directores, introduce
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
.Selecciona el rol Agente de servicio de Compute Engine.
Haz clic en Guardar.
gcloud
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role roles/compute.serviceAgent
Conceptos básicos
El escalado automático usa los siguientes conceptos y servicios fundamentales.
Grupos de instancias administradas
El autoescalado es una función de los grupos de instancias gestionados (MIGs). Un grupo de instancias gestionado es un conjunto de instancias de máquina virtual que se crean a partir de una plantilla de instancia común. Un autoescalador añade o elimina instancias de un grupo de instancias gestionado en función de la política de autoescalado del grupo. Aunque Compute Engine tiene grupos de instancias gestionados y no gestionados, solo los grupos de instancias gestionados se pueden usar con un escalador automático.
Para saber la diferencia entre un grupo de instancias gestionado y uno sin gestionar, consulta Grupos de instancias.
Para saber cómo crear un grupo de instancias gestionado, consulta el artículo Crear grupos de instancias gestionados.
Política de autoescalado
Cuando defines una política de autoescalado para tu grupo, especificas una o varias señales que el autoescalador usa para escalar el grupo. Cuando defines varias señales en una política, la herramienta de adaptación dinámica calcula el número recomendado de VMs para cada señal y asigna al grupo el número más alto como tamaño recomendado.
Una política de autoescalado siempre debe tener al menos una señal de escalado. Cuando activas el autoescalado en un MIG, el autoescalador añade de forma predeterminada una señal de uso de CPU. Puedes editar esta señal predeterminada, o bien quitarla y añadir otras señales en la política.
En las siguientes secciones se ofrece una descripción general de las señales basadas en métricas de utilización de destinos y de las señales basadas en programaciones.
Métricas de uso previsto
Puedes autoescalar en función de una o varias de las siguientes métricas que reflejan la carga del grupo de instancias:
- Uso medio de CPU
- Capacidad de servicio del balanceo de carga HTTP
- Métricas de Cloud Monitoring
La herramienta de adaptación dinámica recoge continuamente información sobre el uso en función de la métrica de uso seleccionada, compara el uso real con el uso objetivo que has definido y utiliza esta información para determinar si el grupo necesita eliminar instancias (reducir la escala) o añadir instancias (aumentar la escala).
El nivel de utilización objetivo es el nivel en el que quieres mantener tus instancias de máquina virtual. Por ejemplo, si el escalado se basa en el uso de la CPU, puedes definir el nivel de uso objetivo en el 75% y el escalador automático mantendrá el uso de la CPU del grupo de instancias especificado en el 75 % o cerca de ese valor. El nivel de uso de cada métrica se interpreta de forma diferente en función de la política de autoescalado.
Si utilizas el escalado automático en función de alguno de los siguientes elementos, tu MIG no podrá reducirse a cero instancias:
- Uso medio de CPU
- Capacidad de servicio del balanceo de carga HTTP
- Monitorizar las métricas de cada instancia del MIG
Sin embargo, puede usar otras métricas de Monitoring al reducir el número de instancias a cero, siempre que defina el número mínimo de instancias (autoscalingPolicy.minNumReplicas
) en 0
.
Para obtener más información sobre el escalado basado en métricas de utilización objetivo, consulta las siguientes páginas:
- Escalar según uso de CPU
- Escalar según capacidad de balanceo de carga
- Escalar según las métricas de Cloud Monitoring
Programaciones
Puedes usar el autoescalado basado en programaciones para asignar capacidad a las cargas previstas. Puedes tener hasta 128 programaciones de escalado por grupo de instancias. Para cada programación de escalado, especifique lo siguiente:
- Capacidad: número mínimo de instancias de VM necesarias
- Programación: hora de inicio, duración y periodicidad (por ejemplo, una vez, a diario, semanalmente o mensualmente)
Cada programación de escalado está activa desde su hora de inicio y durante la duración configurada. Durante este tiempo, el autoescalador ajusta el tamaño del grupo para que tenga al menos tantas instancias como se definan en la programación de escalado.
Cuando usas programaciones, tu MIG puede reducirse a cero instancias si se cumplen todas las condiciones siguientes:
- El número mínimo de instancias (
autoscalingPolicy.minNumReplicas
) se ha definido en0
. - La política de autoescalado no contiene ninguna programación activa.
- La política de autoescalado no contiene señales basadas en métricas de utilización objetivo que impidan reducir el número de instancias a cero.
Para obtener más información, consulta Escalar en función de las programaciones.
Periodo de inicialización
El periodo de inicialización, antes conocido como periodo de enfriamiento, es el tiempo que tardan las aplicaciones en inicializarse en tus instancias de VM. Mientras se inicializa una aplicación en una instancia, es posible que los datos de uso de la instancia no reflejen las circunstancias normales. Por lo tanto, la herramienta de escalado automático usa el periodo de inicialización para tomar decisiones de escalado de las siguientes formas:
- Para tomar decisiones de reducción de escala, el escalador automático tiene en cuenta los datos de uso de todas las instancias, incluso de las que aún se encuentran en el periodo de inicialización. El autoescalador recomienda eliminar instancias si la utilización media de todas las instancias es inferior a la utilización objetivo.
- Para tomar decisiones de escalado horizontal, el autoescalador ignora los datos de uso de las instancias que aún se encuentran en el periodo de inicialización.
- Si habilitas el modo predictivo, el periodo de inicialización 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. Por ejemplo, si define el periodo de inicialización en 300 segundos, el autoescalador predictivo creará máquinas virtuales 5 minutos antes de la carga prevista.
De forma predeterminada, el periodo de inicialización es de 60 segundos. Los tiempos de inicialización reales varían debido a numerosos factores. Te recomendamos que pruebes cuánto tiempo tarda tu aplicación en inicializarse. Para ello, crea una instancia y mide el tiempo que tarda en iniciarse desde que la instancia se convierte en RUNNING
hasta que la aplicación está lista.
Si define un valor del periodo de inicialización que es significativamente más largo que el tiempo que tarda una instancia en inicializarse, es posible que el auto escalador ignore datos de utilización legítimos y que subestime el tamaño necesario de su grupo, lo que provocará un retraso en el escalado horizontal.
Periodo de estabilización
Las señales de escalado automático, como la utilización de la CPU, no son muy estables y pueden cambiar rápidamente. A medida que la carga aumenta y disminuye, la herramienta de escalado automático debe estabilizar la señal para evitar que se eliminen y se creen VMs continuamente. El escalador automático estabiliza una señal manteniendo una capacidad de VMs suficiente para atender la carga máxima observada durante el periodo de estabilización.
El periodo de estabilización es de 10 minutos o del periodo de inicialización que hayas definido, el que sea más largo. El periodo de estabilización solo se usa para tomar decisiones de reducción cuando el escalador automático tiene que eliminar VMs.
Cuando la carga disminuye, el escalador automático no elimina las VMs inmediatamente. La herramienta de adaptación dinámica sigue monitorizando la capacidad necesaria durante el periodo de estabilización y elimina las VMs solo cuando hay capacidad suficiente para cubrir la carga máxima. Puede que parezca que hay un retraso en el escalado, pero es una función integrada del ajuste de escala automático.
Si tu aplicación tarda más de 10 minutos en inicializarse en una VM nueva, el autoescalador usará el periodo de inicialización en lugar de los 10 minutos predeterminados de estabilización para esperar hasta que se pueda eliminar la VM. De esta forma, la herramienta de escalado automático tiene en cuenta el tiempo que se tarda en recuperar la capacidad de servicio a la hora de decidir si elimina una VM.
Cuando aumenta la carga, la herramienta de escalado automático no usa el periodo de estabilización y crea inmediatamente tantas VMs como sean necesarias para satisfacer la demanda.
Modo de autoescalado
Si necesitas investigar o configurar tu grupo sin que interfieran las operaciones del escalador automático, puedes desactivar o restringir temporalmente las actividades de escalado automático. La configuración del escalador automático se mantiene mientras está desactivado o restringido, y todas las actividades de escalado automático se reanudan cuando lo vuelves a activar o levantas la restricción.
Autoescalado predictivo
Si habilitas el autoescalado predictivo para optimizar tu MIG de cara a la disponibilidad, la herramienta de adaptación dinámica pronostica la carga futura en función del historial de datos y escala un MIG antes de la carga prevista, de modo que las nuevas instancias estén listas para servir cuando llegue la carga.
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.
Para obtener más información, consulta Escalar en función de las predicciones.
Controles de reducción de tamaño
Si las cargas de trabajo tardan en inicializarse (por ejemplo, debido a tareas de instalación largas), puedes reducir el riesgo de latencia de respuesta causada por eventos de reducción repentinos configurando los controles de reducción de tamaño. En concreto, si prevés que se produzcan picos de carga poco después de que disminuya, puedes limitar la tasa de reducción para evitar que el autoescalado reduzca el tamaño de un MIG en más instancias de VM de las que puede tolerar tu carga de trabajo.
No es necesario que configures los controles de reducción de tamaño si tu aplicación se inicializa lo suficientemente rápido como para detectar los picos de carga al aumentar el tamaño.
Para configurar los controles de reducción, define las siguientes propiedades en tu política de escalado automático.
Reducción máxima permitida. Número de instancias de VM que tu carga de trabajo puede perder (a partir de su tamaño máximo) en el periodo de tiempo final especificado. Usa este parámetro para limitar la cantidad de instancias que se pueden reducir en tu grupo, de forma que puedas seguir atendiendo un pico de carga probable hasta que empiecen a funcionar más instancias. Cuanto menor sea la reducción máxima permitida, más tiempo tardará tu grupo en reducirse.
Ventana temporal de seguimiento. El historial en el que el escalador automático monitoriza el tamaño máximo que necesita tu carga de trabajo. La herramienta de ajuste automático de escala no reducirá el tamaño por debajo de la reducción máxima permitida, que se calcula restando el tamaño máximo observado en este periodo. Puedes usar este parámetro para definir cuánto tiempo debe esperar el autoescalador antes de eliminar instancias, según la reducción máxima permitida. Con una ventana de tiempo de seguimiento más larga, la herramienta de ajuste automático tiene en cuenta más picos históricos, lo que hace que la reducción de escala sea más conservadora y estable.
Para obtener más información, consulta los artículos sobre cómo configurar los controles de reducción y entender las decisiones de las herramientas de adaptación dinámica.
Tamaño recomendado
El tamaño de grupo recomendado es el número de VMs que el autoescalador recomienda que mantenga el grupo de instancias gestionado en función de la carga máxima observada durante los últimos 10 minutos. Estos últimos 10 minutos se denominan periodo de estabilización. El tamaño recomendado se recalcula constantemente. Si defines una política de escalado automático con controles de reducción de tamaño, el tamaño recomendado se limitará a los controles de reducción de tamaño.
Limitaciones
No puedes usar el autoescalado con los siguientes grupos de instancias, que no permiten que el autoescalador cree o elimine VMs según la demanda:
- Grupos de instancias sin gestionar
- Grupos de instancias gestionados con configuración con reconocimiento del estado
- Grupos de instancias gestionados con la reparación de VMs desactivada
- Grupos de instancias gestionadas regionales con una forma de distribución de destino
ANY
oANY_SINGLE_ZONE
No puedes crear instancias de VM con nombres específicos mientras el ajuste de escala automático esté activado.
No utilices el autoescalado de Compute Engine con grupos de instancias gestionados propiedad de Google Kubernetes Engine. En el caso de los grupos de Google Kubernetes Engine, utiliza el autoescalado de clústeres. Si no sabes si un MIG forma parte de un clúster de GKE, busca el prefijo
gke
en el nombre del MIG. Por ejemplo,gke-test-1-3-default-pool-eadji9ah
.
Qué ocurre durante la reparación automática
El autoescalado funciona de forma independiente a la autorreparación.
Si configuras la reparación automática en tu grupo y una instancia no supera la comprobación del estado, el MIG intentará volver a crear la instancia. Mientras el MIG recrea una instancia, el número de instancias en ejecución del grupo puede ser inferior al número mínimo de instancias especificado para el grupo (autoscalingPolicy.minNumReplicas
).
Precios
No se aplican cargos adicionales por configurar una política de autoescalado. El autoescalador añade o elimina instancias de VM de forma dinámica, por lo que solo se te cobra por los recursos que usa el MIG. Puedes controlar el coste de los recursos configurando el número mínimo y máximo de instancias en la política de autoescalado. Para obtener información sobre los precios de Compute Engine, consulta la página Precios.
Siguientes pasos
- Consulta cómo funciona el autoescalado en un MIG regional.
- Si no tienes ningún MIG, consulta cómo crear un grupo de instancias gestionado.
Crea una herramienta de adaptación dinámica que se ajuste según lo siguiente:
Gestionar el escalador automático, por ejemplo, para obtener información sobre él, configurar los controles de reducción o restringirlo temporalmente.