Gestión de escaladores automáticos


Si utiliza grupos de instancias administrados (MIG) , lea este documento para aprender cómo crear, configurar y eliminar el escalador automático de su MIG.

Antes de comenzar

  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Creando un escalador automático

La creación de un escalador automático es ligeramente diferente según la política de escalado automático que desee utilizar. Para obtener instrucciones sobre cómo crear un escalador automático, consulte:

Obtener información sobre un escalador automático

Para obtener más información sobre un escalador automático en particular, use la consola, el subcomando gcloud compute instance-groups managed describe o el método get para un recurso REST del escalador automático zonal o regional .

Consola

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

    Ir a grupos de instancias

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

nube de gcloud

Utilice el comando instance-groups managed describe :

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME

Si hay un escalador automático asociado al grupo, el comando devuelve detalles sobre el escalador automático:

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

DESCANSAR

Utilice el método instanceGroupManagers.get . Para un MIG regional, reemplace zones/ ZONE con regions/ REGION .

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

Si se adjunta un escalador automático al grupo, la solicitud devuelve un enlace al recurso del escalador automático.

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, utilice el método autoscalers.get para un MIG zonal o el método regionAutoscalers.get para un MIG regional.

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"
}

Actualización de un escalador automático

Cuando actualiza un escalador automático, es posible que los cambios tarden algún tiempo en propagarse y pueden pasar un par de minutos antes de que se reflejen las nuevas configuraciones del escalador automático.

Consola

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

    Ir a grupos de instancias

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

nube de gcloud

Utilice el comando update-autoscaling .

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

Para obtener instrucciones sobre cómo crear un escalador automático, consulte Creación de un escalador automático .

DESCANSAR

Para actualizar un recurso de escalador automático, utilice el método autoscalers.patch para un MIG zonal o el método regionAutoscalers.patch para un MIG regional. Proporcione un cuerpo de solicitud que contenga la nueva configuración.

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 realiza cualquier solicitud que modifica datos, se devuelve un recurso ZoneOperations o RegionOperations y puede consultar la operación para verificar el estado de su cambio.

Usando el escalado automático predictivo

El escalado automático predictivo utiliza datos históricos para escalar horizontalmente su grupo antes de la carga anticipada. Funciona mejor si su carga de trabajo cumple con los siguientes criterios:

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

Para obtener más información, consulte Escalado basado en predicciones .

Desactivar o restringir un escalador automático

Apague un escalador automático para evitar temporalmente que escale su MIG, o restrinja su escalador automático para que solo pueda escalar su MIG. Esta función es útil cuando desea:

  • Investigue instancias de VM sin interferencias del escalado horizontal.
  • Reconfigure múltiples propiedades de su MIG sin que se activen acciones de escalado mientras su grupo está solo parcialmente reconfigurado.
  • Mantenga la capacidad de MIG para una reversión rápida mientras redirige una carga de trabajo a un nuevo MIG.
  • Habilite el escalado automático predictivo más adelante. El escalado automático predictivo requiere una política de escalado automático para comenzar a recopilar el historial de carga en el que basar las predicciones. El escalador automático detecta este historial incluso cuando su modo está configurado en OFF .

Si vuelve a habilitar el escalador automático, éste volverá automáticamente al funcionamiento normal.

Utilice las instrucciones proporcionadas en esta sección para configurar el modo del escalador automático. Están disponibles los siguientes modos:

  • Apagado : Desactiva temporalmente el escalado automático. Utilice este modo para evitar cambios automáticos del tamaño del MIG. La configuración de ajuste de escala automático permanece intacta para que pueda volver a habilitarlo más tarde.
  • Solo escalamiento horizontal : restrinja el escalado automático solo para agregar nuevas instancias de VM. Utilice este modo para evitar que el grupo se reduzca y permitir que el grupo aprovisione máquinas virtuales adicionales cuando aumente la carga.
  • Activado : habilita todas las operaciones de escalado automático según su política.

Consola

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

    Ir a grupos de instancias

  2. Haga clic en el nombre de un MIG de la lista para abrir la página de descripción general de ese grupo.
  3. Haga clic en Editar para ver la configuración actual del grupo, incluida su configuración de escala automática.
  4. En Escala automática , configure el modo de escala automática para deshabilitar o restringir la escala automática para el grupo, o para volver a activar el escalador automático.
  5. Haga clic en Guardar cuando haya terminado.

nube de gcloud

Para deshabilitar, restringir o volver a habilitar un escalador automático, use el comando update-autoscaling con el indicador --mode .

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

Reemplace lo siguiente:

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

DESCANSAR

Para actualizar el modo de un recurso de escalador automático, utilice el método autoscalers.patch para un MIG zonal o el método regionAutoscalers.patch para un MIG regional. Proporcione 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"
  }
}

Reemplace lo siguiente:

  • MODE :
    • OFF para desactivar el escalador automático pero mantener su configuración
    • ONLY_SCALE_OUT para restringir el escalador automático para agregar instancias únicamente
    • ON para volver a habilitar todas las actividades del escalador automático de acuerdo con su política

Cuando configura el modo de escalado 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 cambia manualmente el tamaño objetivo de un MIG zonal, el escalador automático anula el tamaño proporcionado manualmente si es menor que el tamaño recomendado por el escalador automático.
  • No puede cambiar manualmente el tamaño objetivo de un MIG regional.
  • Si configura 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 de costumbre, el escalador automático vuelve a calcular continuamente el tamaño recomendado del grupo y puede disminuir el tamaño recomendado del grupo para cumplir con el nuevo máximo, pero el grupo no se escala.
  • El campo autoscalers.status informa una advertencia: "El escalado automático funciona en un modo restringido: SOLAMENTE_SCALE_OUT".

Cuando configura el modo del 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 cambios en la carga o en la configuración del escalador automático. Como de costumbre, el escalador automático vuelve a calcular continuamente el tamaño recomendado del grupo y puede disminuir el tamaño recomendado del grupo para cumplir con el nuevo máximo, pero el grupo no se escala.
  • Puede cambiar manualmente el tamaño objetivo de un MIG zonal o regional. Los valores minNumReplicas y maxNumReplicas de la política de escalado automático no afectan el tamaño que establezca.
  • Si desactiva el escalado automático para un MIG regional en el que la redistribución proactiva de instancias está habilitada, y si el MIG tiene una distribución desigual de instancias entre zonas, entonces el grupo elimina o crea instancias de manera proactiva en sus zonas para restablecer una distribución uniforme.
  • El campo autoscalers.status informa una advertencia: "El escalado automático funciona en modo restringido: APAGADO".

Controlar la tasa de escalado de un escalador automático

Si sus cargas de trabajo tardan muchos minutos en inicializarse, configure controles de ampliación gradual para reducir el riesgo de latencia de respuesta e interrupciones debido a eventos de ampliación abrupta. Específicamente, si habitualmente espera que se produzca un pico de carga poco después de una disminución en la carga, puede limitar la tasa de escalado. Limitar la tasa de escalamiento horizontal evita que el escalador automático reduzca el tamaño de un MIG en más instancias de VM de las que su carga de trabajo puede tolerar perder.

Configuración de controles de escalamiento horizontal

La configuración de controles de escalamiento horizontal es opcional. De forma predeterminada, los controles de escalamiento horizontal no están configurados. Cuando no está configurado, el escalador automático aún depende de su mecanismo de estabilización predeterminado. Es decir, mantiene el tamaño recomendado en un nivel requerido para soportar la carga máxima observada durante el período de estabilización.

Consola

Para configurar controles de escalamiento horizontal para un MIG de escalado automático:

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

    Ir a grupos de instancias

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

  3. Haga clic en Editar para ver la configuración actual del grupo, incluida su configuración de escala automática.

  4. En Escala automática , haga clic en Controles de ampliación y luego seleccione Habilitar controles de ampliación .

  5. En No ampliar en más de , especifique el número o porcentaje máximo de instancias que se pueden eliminar del grupo a la vez.

  6. En Durante el transcurso de , especifique con qué frecuencia se pueden eliminar instancias del grupo.

  7. Haga clic en Guardar .

nube de gcloud

Puede configurar controles de escalamiento horizontal al crear un escalador automático o al actualizarlo.

Configurar controles de escalamiento horizontal al crear un escalador automático

Establece controles de escalamiento horizontal al crear un escalador automático para un MIG usando la marca --scale-in-control con el comando gcloud compute instance-groups managed set-autoscaling . Por ejemplo, utilice el siguiente comando para 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

Configuración de controles de escalamiento horizontal al actualizar un escalador automático

Actualice los controles de escalamiento horizontal en el escalador automático existente de un MIG usando la marca --scale-in-control con el comando gcloud compute instance-groups managed update-autoscaling . Por ejemplo, utilice el siguiente comando para establecer controles de escalado horizontal en una configuración de escalado automático existente, por 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

Reemplace lo siguiente:

  • INSTANCE_GROUP_NAME : el nombre del MIG a actualizar.
  • MAX_SCALE_IN_REPLICAS : el número máximo de VM que se permite deducir del tamaño máximo, tomado de la ventana de tiempo final especificada. La cantidad especificada de instancias de VM se puede escalar todas a la vez, por lo que su servicio debería poder permitirse perder tantas VM a la vez. Puede especificar una cantidad de máquinas virtuales o un porcentaje. Utilice el signo % para porcentajes; por ejemplo: 50% .
  • TIME_WINDOW : ventana de tiempo final para tomar el tamaño máximo. El ajuste de escala automático no ampliará más que el número máximo permitido de réplicas del tamaño máximo tomado durante este período de tiempo final. Especifique este valor en segundos dentro de un intervalo [60, 3600].

Por ejemplo, digamos que configura la ventana de tiempo en 1800 segundos (30 minutos). Al calcular el tamaño recomendado actual para el MIG, el escalador automático utiliza la siguiente lógica:

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

DESCANSAR

Configure controles de escalamiento horizontal configurando los campos maxScaledInReplicas y timeWindowSec dentro de la estructura autoscalingPolicy.scaleInControl en un recurso de escalador automático zonal o regional . No hay valores predeterminados para estos campos; debe proporcionar valores para ambos campos.

Puede configurar controles de escalamiento horizontal al crear un escalador automático o al actualizarlo.

Configurar controles de escalamiento horizontal al crear un escalador automático

Para un MIG zonal, utilice el método autoscalers.insert . Para un MIG regional, utilice el método regionAutoscalers.insert .

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 sobre la creación de un escalador automático, consulte los siguientes artículos:

Configuración de controles de escalamiento horizontal al actualizar un escalador automático

Para un MIG zonal, utilice el método autoscalers.patch . Para un MIG regional, utilice el método regionAutoscalers.patch .

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
    }
  }
}

Reemplace lo siguiente:

  • AUTOSCALER_NAME : el nombre del escalador automático que se creará. Puede nombrar su escalador automático según el MIG que lo usará o nombrarlo de otra manera.
  • INSTANCE_GROUP_NAME : el nombre del MIG al que agregar el escalador automático. Para un MIG regional, reemplace zones/ ZONE con regions/ REGION .
  • MAX_SCALE_IN_REPLICAS : la cantidad máxima de VM que se permite deducir del tamaño objetivo máximo recomendado, tomado de la ventana de tiempo final especificada. La cantidad especificada de instancias de VM se puede escalar todas a la vez, por lo que su servicio debería poder permitirse el lujo de perder tantas VM a la vez. Puede especificar una cantidad de máquinas virtuales o un porcentaje. Utilice maxScaledInReplicas.percentage para especificar un valor porcentual.
  • TIME_WINDOW : la ventana de tiempo final para tomar el tamaño máximo recomendado. El ajuste de escala automático no ampliará más que el número máximo permitido de réplicas del tamaño máximo recomendado tomado durante este período de tiempo final. Especifique este valor en segundos dentro de un intervalo [60, 3600]; por ejemplo: 1800 .

Por ejemplo, digamos que configura la ventana de tiempo en 1800 segundos (30 minutos). Al calcular el tamaño recomendado actual para el MIG, el escalador automático utiliza la siguiente lógica:

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

Para obtener más información sobre cómo funcionan los controles de escalamiento horizontal, consulte Comprender las decisiones del escalador automático .

Obtener la configuración actual de los controles de escalamiento horizontal

Para obtener la configuración actual de los controles de escalamiento horizontal, consulte Obtener información sobre un escalador automático .

Eliminación de controles de escalamiento horizontal

Puedes eliminar controles de escalamiento horizontal para eliminar las restricciones sobre el tiempo y la magnitud de las operaciones de escalamiento horizontal mediante la CLI de Google Cloud o la API de Compute Engine.

Sin controles de escalado, el escalador automático aún depende de su mecanismo de estabilización predeterminado. Específicamente, mantiene un tamaño recomendado en un nivel requerido para soportar la carga máxima, observada durante el período de estabilización.

Consola

Para eliminar controles de escalamiento horizontal para un MIG de escalado automático:

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

    Ir a grupos de instancias

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

  3. Haga clic en Editar para ver la configuración actual del grupo, incluida su configuración de escala automática.

  4. En Escala automática , haga clic en Controles de ampliación y luego desmarque la casilla Habilitar controles de ampliación .

  5. Haga clic en Guardar .

nube de gcloud

Elimine los controles de escalamiento horizontal mediante la marca --clear-scale-in-control con el comando gcloud compute instance-groups managed update-autoscaling . Por ejemplo, utilice el siguiente comando para eliminar los controles de escalamiento horizontal de la configuración de escalado automático del example-group :

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

DESCANSAR

Para eliminar controles de ampliación, utilice el método autoscalers.patch para un MIG zonal o utilice el método regionAutoscalers.patch para un MIG regional y proporcione una configuración vacía para los controles de ampliación.

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

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

Reemplace lo siguiente:

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

Eliminar un escalador automático

Puede eliminar permanentemente su recurso de escalador automático y su historial. Si desea detener temporalmente el escalado automático y conservar su recurso de escalador automático y su configuración e historial, desactívelo en su lugar.

Consola

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

    Ir a grupos de instancias

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

  3. Haga clic en Editar para ver la configuración actual del grupo, incluida su configuración de escala automática.

  4. En Escalado automático , en la lista desplegable Modo de escalado automático, seleccione Eliminar configuración de escalado automático para detener el escalador automático y eliminar su configuración.

  5. Haga clic en Guardar cuando haya terminado.

nube de gcloud

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

gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME

Al detener un escalador automático, se elimina del MIG. Si desea reiniciar el escalador automático, debe recrearlo usando el comando set-autoscaling .

Si eliminas un MIG mediante la CLI de gcloud, también se eliminan todos los escaladores automáticos conectados al MIG.

DESCANSAR

Para detener un escalador automático y eliminar su configuración, use el método autoscalers.delete para un MIG zonal o use el método regionAutoscalers.delete para un MIG regional.

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

Comentario

Queremos conocer sus casos de uso, desafíos y comentarios sobre el escalado automático. Comparta sus comentarios con nuestro equipo en mig-discuss@google.com .

¿Qué sigue?