Administra los escaladores automáticos

Si usas grupos de instancias administrados (MIG), lee este documento para obtener información sobre cómo crear, configurar y borrar el escalador automático de tu MIG.

Antes de comenzar

Crea un escalador automático

La creación de un escalador automático es algo diferente según la política de ajuste de escala automático que desees usar. A fin de obtener instrucciones para crear un escalador automático, consulta estas secciones:

Obtén información sobre un escalador automático

A fin de obtener más información sobre un escalador automático en particular, usa la consola, el subcomando gcloud compute instance-groups managed describe o el método get de la API de Compute Engine para un recurso de escalador automático zonal o regional.

Console

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista para abrir la página de descripción general de ese grupo.
  3. Haz clic en Detalles para ver los detalles del grupo, incluida su configuración de ajuste de escala automático.

gcloud

Usa el comando instance-groups managed describe:

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME

Si se conecta un escalador automático al grupo, el comando muestra detalles sobre este:

...
autoscaler:
  autoscalingPolicy:
    coolDownPeriodSec: 60
    cpuUtilization:
      utilizationTarget: 0.6
    maxNumReplicas: 20
    minNumReplicas: 10
    mode: ON
    scaleInControl:
      timeWindowSec: 300
      maxScaledInReplicas:
        fixed: 3
        calculated: 3
...

API

Usa el método instanceGroupManagers.get. Si es un MIG regional, reemplaza zones/ZONE por regions/REGION.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

Si se conecta un escalador automático al grupo, la solicitud muestra un vínculo al recurso correspondiente.

200 OK

{
  ...
  "status": {
    ...
    "autoscaler": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group"
  },
}

Para recuperar detalles sobre el recurso de escalador automático, usa el método autoscalers.get. Para un escalador automático regional, reemplaza zones/ZONE por regions/REGION.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/example-autoscaler
200 OK

{
 "kind": "compute#autoscaler",
 "id": "8744945839459481093",
 "creationTimestamp": "2018-09-28T13:02:50.553-07:00",
 "name": "example-group",
 "target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/instanceGroupManagers/example-group",
 "autoscalingPolicy": {
  "minNumReplicas": 10,
  "maxNumReplicas": 20,
  "mode": "ON",
  "scaleInControl": {
    "timeWindowSec": 60,
    "maxScaledInReplicas": {
      "calculated": 3,
      "percent": 15
    }
  },
  "coolDownPeriodSec": 60,
  "cpuUtilization": {
   "utilizationTarget": 0.6
  }
 },
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c",
 "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group",
 "status": "ACTIVE"
}

Actualiza un escalador automático

Para actualizar un escalador automático, usa Google Cloud Console, la herramienta de gcloud o la API de Compute Engine.

Cuando actualizas un escalador automático, es posible que los cambios tarden un tiempo en propagarse y pueden pasar algunos minutos antes de que se refleje la configuración nueva del escalador automático.

Console

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista para abrir la página de descripción general de ese grupo.
  3. Haz clic en Editar para ver y actualizar la configuración actual del grupo, incluida la configuración del ajuste de escala automático.
  4. Haz clic en Guardar cuando termines.

gcloud

Usa el comando update-autoscaling

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
        --max-num-replicas MAX_NUM ...

A fin de obtener instrucciones para crear un escalador automático, consulta Crea un escalador automático.

API

A fin de actualizar un recurso de escalador automático para un MIG zonal, usa el método patch del escalador automático zonal. Para un MIG regional, usa el método patch de regionAutoscaler. Proporciona un cuerpo de solicitud que contenga la configuración nueva.

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler

{
 "autoscalingPolicy": {
  "maxNumReplicas": 20
 }
}
200 OK

{
 "kind": "compute#operation",
 "id": "4244494732310423322",
 "name": "operation-1556912627871-58800f8216ed7-74ab1720-7d360603",
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f",
 "operationType": "compute.autoscalers.patch",
 "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler",
 "targetId": "340775527929467142",
 "status": "RUNNING",
 ...
}

Cuando realizas alguna solicitud que modifica datos, se muestra un recurso zoneOperations o regionOperations y puedes consultar la operación para comprobar el estado del cambio.

Usa el ajuste de escala automático predictivo

El ajuste de escala automático predictivo usa datos históricos para escalar horizontalmente tu grupo antes de la carga prevista. Funciona mejor si tu carga de trabajo cumple con los siguientes criterios:

  • Tu aplicación tarda mucho tiempo en inicializarse, por ejemplo, si configuras un período de inactividad de más de 2 minutos.
  • Tu carga de trabajo varía de manera predecible con ciclos diarios o semanales.

Para obtener más información, consulta Usa el ajuste de escala automático predictivo.

Desactiva o restringe un escalador automático

Desactiva un escalador automático a fin de evitar de forma temporal que se escale tu MIG o restríngelo para que solo pueda escalarlo horizontalmente. Esta característica resulta útil cuando se quieren realizar las siguientes acciones:

  • Investigar las instancias de VM sin interferencias de una reducción de escalamiento.
  • Volver a configurar varias propiedades de tu MIG sin que se activen acciones de escalamiento antes de que la nueva configuración esté completa
  • Mantener la capacidad del MIG para una reversión rápida mientras se redirecciona una carga de trabajo a un MIG nuevo
  • Habilita el ajuste de escala automático predictivo más adelante. El ajuste de escala automático predictivo requiere una política de ajuste de escala automático para comenzar a recopilar el historial de cargas en el que se basarán las predicciones. El escalador automático detecta este historial incluso cuando su modo se configura como OFF.

Si vuelves a habilitar el escalador automático, vuelve de forma automática a su funcionamiento normal.

Usa Google Cloud Console, la herramienta de gcloud o la API de Compute Engine para establecer el modo del escalador automático. Los siguientes modos están disponibles:

  • Desactivado: inhabilita de forma temporal el ajuste de escala automático. Usa este modo para evitar cambios automáticos en el tamaño del MIG. La configuración del ajuste de escala automático permanece intacta para que puedas volver a habilitarla más adelante.
  • Solo escalar horizontalmente: restringe el ajuste de escala automático para que solo se agreguen instancias de VM nuevas. Usa este modo para evitar que el grupo se achique y permitir que aprovisione VM adicionales cuando aumente la carga.
  • Activado: habilita todas las operaciones de ajuste de escala automático según su política.

Console

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista para abrir la página de descripción general de ese grupo.
  3. Haz clic en Editar para ver la configuración actual del grupo, incluida la del ajuste de escala automático.
  4. En Ajuste de escala automático, configura el Modo de ajuste de escala automático a fin de inhabilitar o restringir el ajuste de escala automático para el grupo o volver a activar el escalador automático.
  5. Haz clic en Guardar cuando termines.

gcloud

Para inhabilitar, restringir o volver a habilitar un escalador automático, usa el comando update-autoscaling con la marca --mode.

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
        --mode MODE 

Reemplaza lo siguiente:

  • MODE:
    • off para inhabilitar el escalador automático, pero mantener su configuración
    • only-scale-out a fin de restringir el escalador automático para que solo se agreguen instancias de VM
    • on para volver a habilitar todas las actividades del escalador automático de acuerdo con su política

API

A fin de actualizar el modo de un recurso de escalador automático para un MIG, zonal, usa el método patch del escalador automático. Para un MIG regional, usa el método patch de regionAutoscaler. Proporciona un cuerpo de solicitud que incluya la propiedad autoscalingPolicy.mode.

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1-f/autoscalers?autoscaler=my-autoscaler

{
  "autoscalingPolicy": {
    "mode":"MODE"
  }
}

Reemplaza lo siguiente:

  • MODE:
    • OFF para inhabilitar el escalador automático, pero mantener su configuración
    • ONLY_SCALE_OUT a fin de restringir el escalador automático para que solo se agreguen instancias
    • ON para volver a habilitar todas las actividades del escalador automático de acuerdo con su política

Cuando configuras el modo de ajuste de escala automático en ONLY_SCALE_OUT, el escalador automático se comporta de la siguiente manera:

  • El escalador automático no disminuye el valor targetSize del MIG, independientemente de las disminuciones en la carga o los cambios en la configuración del escalador automático.
  • Si cambias manualmente el tamaño de destino de un MIG zonal, el escalador automático anula el tamaño proporcionado de forma manual si es menor que el tamaño recomendado del escalador automático.
  • No puedes cambiar manualmente el tamaño de destino de un MIG regional.
  • Si estableces el campo autoscalingPolicy.maxNumReplicas en un valor inferior al valor targetSize actual del grupo mientras el modo del escalador automático está configurado en ONLY_SCALE_OUT, el escalador automático no reduce la cantidad de instancias en el grupo. Como suele suceder, el escalador automático vuelve a calcular continuamente el tamaño recomendado del grupo y podría disminuir el tamaño recomendado para cumplir con el nuevo máximo, pero en el grupo no se reduce la escala.
  • El campo autoscalers.status informa una advertencia: “El ajuste de escala automático funciona en modo restringido: ONLY_SCALE_OUT”.

Cuando configuras el modo de escalador automático en OFF, el escalador automático se comporta de la siguiente manera:

  • El escalador automático no cambia el valor targetSize del MIG en respuesta a los cambios en la carga o en la configuración del escalador automático. Como suele suceder, el escalador automático vuelve a calcular continuamente el tamaño recomendado del grupo y podría disminuir ese tamaño para cumplir con el nuevo máximo, pero no se reduce la escala del grupo.
  • Puedes cambiar de forma manual el tamaño de destino de un MIG zonal o regional. Los valores minNumReplicas y maxNumReplicas de la política de ajuste de escala automático no afectan el tamaño que estableciste.
  • Si desactivas el ajuste de escala automático para un MIG regional en el que está habilitada la redistribución proactiva de instancias, y si el MIG tiene una distribución desigual de instancias entre zonas, entonces el grupo borra o crea instancias en sus zonas de forma proactiva para restablecer una distribución uniforme.
  • El campo autoscalers.status informa una advertencia: “El ajuste de escala automático funciona en modo restringido: OFF”.

Controla la tasa de reducción de escalamiento de un escalador automático

Si tus cargas de trabajo tardan mucho en inicializarse, configura los controles de reducción de escalamiento para reducir el riesgo de latencia en la respuesta o interrupciones debido a eventos de reducción de escalamiento abruptos. Específicamente, si suele ser previsible que haya un aumento repentino de la carga poco después de una disminución, puedes limitar la tasa de reducción de escalamiento. Limitar la tasa de escalamiento evita que el escalador automático reduzca el tamaño del MIG en más instancias de VM de lo que puede tolerar tu carga de trabajo.

Configura los controles de reducción de escala

Configura los controles de reducción de escalamiento con la herramienta de gcloud o la API de Compute Engine. La configuración de los controles de reducción de escalamiento es opcional. De forma predeterminada, los controles de reducción de escalamiento no están configurados. Aun así, el escalador automático utiliza un mecanismo de estabilización predeterminado incluso si no configuras estos controles. Es decir, mantiene el tamaño recomendado en el nivel necesario para manejar la carga máxima observada durante el período de estabilización de los últimos 10 minutos.

Console

A fin de configurar los controles de reducción de escalamiento para un MIG con ajuste de escala automático, haz lo siguiente:

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG con ajuste de escala automático desde la lista para abrir la página de descripción general de ese grupo.

  3. Haz clic en Editar para ver la configuración actual del grupo, incluida la del ajuste de escala automático.

  4. En Ajuste de escala automático, selecciona Habilitar controles de escalamiento.

  5. En No escalar en más de, especifica la cantidad máxima o el porcentaje de instancias que se pueden quitar del grupo a la vez.

  6. En Durante, especifica con qué frecuencia se pueden quitar instancias del grupo.

  7. Haz clic en Guardar.

gcloud

Puedes configurar controles de reducción de escalamiento durante la creación o actualización de un escalador automático.

Configura controles de reducción de escalamiento durante la creación de un escalador automático

Para configurar los controles de reducción de escalamiento durante la creación de un escalador automático para un MIG, usa la marca --scale-in-control con el comando gcloud compute instance-groups managed set-autoscaling. Por ejemplo, usa el siguiente comando a fin de configurar el ajuste de escala automático para un example-group:

gcloud compute instance-groups managed set-autoscaling INSTANCE_GROUP_NAME \
    --target-cpu-utilization 0.6 \
    --max-num-replicas 50 \
    --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW

Configura controles de reducción de escalamiento durante la actualización de un escalador automático

Para actualizar los controles de reducción de escalamiento del escalador automático existente de un MIG, usa la marca --scale-in-control con el comando gcloud compute instance-groups managed update-autoscaling. Por ejemplo, usa el siguiente comando para establecer controles de reducción de escalamiento en una configuración de ajuste de escala automático existente para example-group:

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
    --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del MIG que se actualizará.
  • MAX_SCALE_IN_REPLICAS: Es la cantidad máxima de VM que se pueden restar del tamaño máximo, que se toma del período anterior especificado. La cantidad de instancias de VM que especifiques podrá retirarse del grupo en una sola acción de escalamiento, por lo que es importante que tu servicio pueda funcionar de forma correcta incluso si pierde todas estas VM de una vez. Puedes especificar una cantidad de VM o un porcentaje. Usa el signo % para los porcentajes, por ejemplo: 50%.
  • TIME_WINDOW: Es el margen de tiempo anterior que se tomará en cuenta para determinar el tamaño máximo. El ajuste de escala automático no puede reducir la cantidad de réplicas más allá de la cantidad máxima permitida en el tamaño máximo detectado durante este margen de tiempo anterior. Especifica este valor en segundos dentro de un intervalo de [60, 3600].

Por ejemplo, supongamos que estableciste el período en 1,800 segundos (30 minutos). Cuando se calcula el tamaño recomendado actual para el MIG, el escalador automático usa la siguiente lógica:

  • Toma el tamaño máximo de los últimos 30 minutos (por ejemplo, 100 VM).
  • Toma max-scaled-in-replicas (por ejemplo, 10 VM).
  • Establece el límite inferior del tamaño recomendado en: tamaño máximo menos max-scaled-in-replicas (100 - 10 = 90 VM).

API

Para establecer controles de reducción de escalamiento, debes configurar los campos maxScaledInReplicas y timeWindowSec dentro de la estructura autoscalingPolicy.scaleInControl en un recurso de escalador automático zonal o regional. Estos campos no tienen valores predeterminados, así que deberás proporcionar el valor que te parezca adecuado para cada uno.

Puedes configurar controles de reducción de escalamiento durante la creación o actualización de un escalador automático.

Configura controles de reducción de escalamiento durante la creación de un escalador automático

Para un MIG zonal, usa el método autoscaler insert . Para un MIG regional, usa el método insert de regionAutoscalers.

POST
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers

{
  "name": "AUTOSCALER_NAME",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME",
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleInControl": {
      "maxScaledInReplicas": {
           "fixed": MAX_SCALE_IN_REPLICAS
      },
      "timeWindowSec": TIME_WINDOW
    }
  }
}

Para obtener más información a fin de crear un escalador automático, consulta los siguientes artículos:

Configura controles de reducción de escalamiento durante la actualización de un escalador automático

Para un MIG zonal, usa el método autoscaler patch. Para un MIG regional, usa el métodopatch de regionAutoscalers.

PATCH
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleInControl": {
      "maxScaledInReplicas": {
           "fixed": MAX_SCALE_IN_REPLICAS
      },
      "timeWindowSec": TIME_WINDOW
    }
  }
}

Reemplaza lo siguiente:

  • AUTOSCALER_NAME: Es el nombre del escalador automático que se creará. Puedes asignarle el nombre del MIG que lo usará, o bien puedes asignarle otro nombre.
  • INSTANCE_GROUP_NAME: Es el nombre del MIG al que se agregará el escalador automático. Si es un MIG regional, reemplaza zones/ZONE por regions/REGION.
  • MAX_SCALE_IN_REPLICAS: Es la cantidad máxima de VM que se pueden restar del objetivo de tamaño máximo recomendado, que se toma del margen de tiempo anterior especificado. La cantidad de instancias de VM que especifiques podrá retirarse del grupo en una sola acción de escalamiento, por lo que es importante que tu servicio pueda funcionar de forma correcta incluso si pierde todas estas VM de una vez. Puedes especificar una cantidad de VM o un porcentaje. Usa maxScaledInReplicas.percentage para especificar un valor porcentual.
  • TIME_WINDOW: Es el margen de tiempo anterior del que se toma el tamaño máximo recomendado. El ajuste de escala automático no puede reducir la cantidad de réplicas más allá de la cantidad máxima permitida en el tamaño máximo recomendado que se detectó durante este margen de tiempo anterior. Especifica este valor en segundos dentro de un intervalo de [60, 3600]; por ejemplo: 1800.

Por ejemplo, supongamos que estableciste el período en 1,800 segundos (30 minutos). Cuando se calcula el tamaño recomendado actual para el MIG, el escalador automático usa la siguiente lógica:

  • Toma el tamaño máximo de los últimos 30 minutos (por ejemplo, 100 VM).
  • Toma max-scaled-in-replicas (por ejemplo, 10 VM).
  • Establece el límite inferior del tamaño recomendado en: tamaño máximo menos max-scaled-in-replicas (100 - 10 = 90 VM).

Para obtener más información sobre el funcionamiento de los controles de reducción de escala, consulta la Información sobre las decisiones de los escaladores automáticos.

Obtén la configuración actual de los controles de reducción de escala

Para obtener la configuración actual de los controles de reducción de escala, consulta Obtén información sobre un escalador automático.

Quita los controles de reducción de escala

Puedes quitar los controles de reducción de escalamiento para eliminar las restricciones sobre el tiempo y la magnitud de las operaciones de reducción de escalamiento mediante la herramienta de línea de comandos de gcloud o la API de Compute Engine.

Recuerda que, incluso si no hay controles de reducción de escalamiento, el escalador automático utiliza un mecanismo de estabilización predeterminado. En particular, mantiene el tamaño recomendado en el nivel necesario para manejar la carga máxima detectada durante el período de estabilización de los últimos 10 minutos.

Console

A fin de quitar los controles de reducción de escalamiento para un MIG con ajuste de escala automático, haz lo siguiente:

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG con ajuste de escala automático desde la lista para abrir la página de descripción general de ese grupo.

  3. Haz clic en Editar para ver la configuración actual del grupo, incluida la del ajuste de escala automático.

  4. En Ajuste de escala automático, desmarca la casilla de verificación Habilitar controles de escalamiento.

  5. Haz clic en Guardar.

gcloud

Quita los controles de reducción de escala mediante la marca --clear-scale-in-control con el comando gcloud compute instance-groups managed update-autoscaling. Por ejemplo, usa el siguiente comando para quitar los controles de reducción de escalamiento de la configuración del ajuste de escala automático de example-group:

gcloud compute instance-groups managed update-autoscaling example-group \
    --clear-scale-in-control

API

Para quitar los controles de reducción de escala, usa el método autoscalers.patch y proporciona una configuración vacía para los controles de reducción de escalamiento. Si es un MIG regional, reemplaza zones/ZONE por regions/REGION.

PATCH
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scaleInControl": null
  }
}

Reemplaza lo siguiente:

  • AUTOSCALER_NAME: Es el nombre del escalador automático que se actualizará. Para obtener una lista de los escaladores automáticos existentes y sus MIG objetivo, usa el método autoscalers.aggregatedList.

Borra un escalador automático

Puedes borrar de forma permanente el recurso de escalador automático y su historial mediante Google Cloud Console, la herramienta de gcloud o la API de Compute Engine. Si quieres detener de forma temporal el ajuste de escala automático y mantener el recurso de escalador automático, así como su historia y configuración, puedes inhabilitarlo.

Console

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista para abrir la página de descripción general de ese grupo.

  3. Haz clic en Editar para ver la configuración actual del grupo, incluida la del ajuste de escala automático.

  4. En Ajuste de escala automático, haz clic en Borrar configuración del ajuste de escala automático para detener el escalador automático y borrar su configuración.

  5. Haz clic en Guardar cuando termines.

gcloud

Usa el comando stop-autoscaling para detener un escalador automático y borrar su configuración.

gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME

Cuando detienes un escalador automático, este se borra del MIG. Si deseas reiniciar el escalador automático, debes volver a crearlo con el comando set-autoscaling.

Si borras un MIG con la herramienta de gcloud, también se borran los escaladores automáticos asociados al MIG.

API

Para detener un escalador automático y borrar su configuración, llama al método delete. Si se trata de un MIG regional, reemplaza zones/ZONE por regions/REGION.

 DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/AUTOSCALER_NAME

Comentarios

Queremos conocer tus casos de uso, desafíos y comentarios sobre el ajuste de escala automático. Comparte tus comentarios con nuestro equipo en mig-discuss@google.com.

¿Qué sigue?