Escalamiento según los programas


El ajuste de escala automático basado en los programas te permite mejorar la disponibilidad de tus cargas de trabajo mediante la programación de la capacidad antes de la carga anticipada. Si ejecutas tu carga de trabajo en un grupo de instancias administrado (MIG), puedes programar una cantidad necesaria de instancias de máquina virtual (VM) para los patrones de carga recurrentes, además de los eventos únicos. Usa los programas de escalamiento si tu carga de trabajo tarda mucho en inicializarse y deseas escalar horizontalmente antes de los máximos de carga anticipada.

En este documento, se describe cómo puedes crear, enumerar, editar, inhabilitar, volver a habilitar y borrar los programas de escalamiento para un MIG existente. Para obtener más información sobre los MIG y el ajuste de escala automático, consulta la sección sobre cómo crear grupos de instancias administrados y la sección sobre el ajuste de escala automático de grupos de instancias.

Antes de comenzar

  • Lee acerca de los aspectos básicos del escalador automático.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    Terraform

    Para usar las muestras de Terraform de esta página desde un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

    1. Instala Google Cloud CLI.
    2. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

      gcloud init
    3. Crea credenciales de autenticación locales para tu Cuenta de Google:

      gcloud auth application-default login

    Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

    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.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Limitaciones

Los programas de escalamiento están restringidos por las limitaciones para todos los escaladores automáticos, además de las siguientes limitaciones:

  • Puedes tener hasta 128 programas de escalamiento por MIG. A fin de mitigar este límite, borra los programas de escalamiento que tengan el estado OBSOLETE y que no planeas volver a ejecutar.
  • La duración mínima para los programas de escalamiento es de 5 minutos.

Crea un programa de escalamiento

Puedes crear hasta 128 programas de escalamiento por MIG. Para obtener más información, consulta Configuración de la programa de escalamiento.

En las siguientes instrucciones, se explica cómo crear un programa de escalamiento para un MIG.

Console

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista.

  3. Haz clic en  Editar.

  4. Si no existe una configuración de ajuste de escala automático, haz lo siguiente:

    1. En Ajuste de escala automático, haz clic en Configurar ajuste de escala automático.
    2. En Modo de ajuste de escala automático, selecciona Activar: agregar y quitar instancias al grupo para habilitar el ajuste de escala automático. Si deseas escalar tu MIG solo en función de los programas, borra la métrica de uso de CPU predeterminada después de agregar los programas.
  5. Para cada programa de escalamiento que desees agregar, haz lo siguiente:

    1. Expande la sección Programaciones de ajuste de escala automático, haz clic en Administrar programas y, luego, en Crear programa.
    2. En el panel nuevo Crear un programa de escalamiento, ingresa un Nombre.
    3. Ingresa una Descripción (opcional).
    4. Ingresa la cantidad de instancias mínimas requeridas que proporciona esta programación cuando está activa.
    5. Especifica la hora de inicio y la recurrencia de tu programa de escalamiento mediante la interfaz predeterminada o, si deseas configurar un programa con una hora de inicio y una recurrencia más complejas, puedes usar una expresión cron.
      • Interfaz predeterminada
        1. En el campo Hora de inicio, ingresa o haz clic en para seleccionar una hora de inicio.
        2. En el campo Repetición, selecciona la frecuencia con la que se repite el programa. Si seleccionas Todas las semanas o Todos los meses, usa el menú desplegable adicional para seleccionar qué días de la semana o del mes comienza el programa.
      • Expresión de Cron
        1. Para habilitar esta opción, haz clic en el botón de activación Usar expresión CRON.
        2. Ingresa una expresión CRON.
    6. En el campo Zona horaria, selecciona una zona horaria.

    7. En los campos Duración y Unidad de tiempo, ingresa una duración y selecciona la unidad de tiempo correspondiente.

    8. Haz clic en Guardar. Se abrirá el panel Programaciones de escalamiento.

    9. Opcional: Puedes crear otro programa de escalamiento si haces clic en Crear programa.

  6. Cuando termines de crear programas, haz clic en Listo.

  7. Para cerrar la página Grupos de instancias, haz clic en Guardar.

gcloud

Para agregar un programa de escalamiento a un MIG que no tiene una política de ajuste de escala automático, usa el comando gcloud compute instance-groups managed set-autoscaling.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
    [--min-num-replicas=MIN_NUM_REPLICAS] \
    --max-num-replicas=MAX_NUM_REPLICAS \
    --set-schedule=SCHEDULE_NAME \
    --schedule-cron="CRON_EXPRESSION" \
    --schedule-duration-sec=DURATION \
    [--schedule-time-zone="TIME_ZONE"] \
    --schedule-min-required-replicas=MIN_REQ_REPLICAS \
    [--schedule-description="DESCRIPTION"] \
    [--zone=ZONE | --region=REGION]

Para agregar un programa de escalamiento a un MIG con una política de ajuste de escala automático existente, usa el comando gcloud compute instance-groups managed update-autoscaling.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    [--min-num-replicas=MIN_NUM_REPLICAS] \
    [--max-num-replicas=MAX_NUM_REPLICAS] \
    --set-schedule=SCHEDULE_NAME \
    --schedule-cron="CRON_EXPRESSION" \
    --schedule-duration-sec=DURATION \
    [--schedule-time-zone="TIME_ZONE"] \
    --schedule-min-required-replicas=MIN_REQ_REPLICAS \
    [--schedule-description="DESCRIPTION"] \
    [--zone=ZONE | --region=REGION]

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre de un MIG con una política de ajuste de escala automático existente.
  • MIN_NUM_REPLICAS: Es la cantidad mínima de instancias que se requieren para este MIG (opcional). Google recomienda establecer este valor en la cantidad mínima de instancias que necesitas cuando no hay un programa de escalamiento activo. Cuando configuras este valor en 0 y configuras el ajuste de escala automático con programas o métricas de Cloud Monitoring con series temporales individuales por grupo, tu MIG puede reducir la escala a 0 VM. No es posible reducir la escala a 0 VM cuando la política tiene otros indicadores, que requieren datos de la VM individual, por ejemplo, el uso de CPU.
  • MAX_NUM_REPLICAS: Es la cantidad máxima de instancias que se pueden proporcionar para este MIG. Es opcional para un MIG con una política existente de ajuste de escala automático.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento nuevo.
  • CRON_EXPRESSION: Es la hora de inicio y la recurrencia de este programa que tiene el formato de una expresión cron.
  • DURATION: Es la duration, en segundos, que este programa está activo.
  • TIME_ZONE: Es la zona horaria de IANA para la hora de inicio del programa, por ejemplo, Europe/Paris (opcional). El valor predeterminado es UTC.
  • MIN_REQ_REPLICAS: Es la cantidad de instancias mínimas necesarias que proporciona este programa cuando está activo.
  • DESCRIPTION: Es una descripción del programa de escalamiento nuevo (opcional).
  • ZONE o REGION: Es la zona o la región en la que se encuentra el MIG (opcional).

Puedes crear programas que se ejecutan una vez o que se repiten de forma periódica.

Programa de repetición

Este comando de ejemplo crea un programa que se repite. Este programa especifica que quieres que el MIG contenga al menos 10 instancias de VM todos los lunes, martes, miércoles, jueves y viernes de 8:30 a.m. a 5 p.m., hora universal coordinada (UTC). Este comando también usa las marcas --min-num-replicas y --max-num-replicas a fin de actualizar la cantidad mínima de instancias a 0 y la cantidad máxima de instancias a 30 para todas las señales de ajuste de escala automático del MIG seleccionado. Este comando supone que tienes un MIG existente denominado example-mig con una política de ajuste de escala automático existente.

gcloud compute instance-groups managed update-autoscaling example-mig \
    --min-num-replicas=0 \
    --max-num-replicas=30 \
    --set-schedule=workday-capacity \
    --schedule-cron="30 8 * * Mon-Fri" \
    --schedule-duration-sec=30600 \
    --schedule-min-required-replicas=10 \
    --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"

Programa único

Este comando de ejemplo crea un programa que se ejecuta una vez. Este programa especifica que quieres que el MIG contenga al menos 30 instancias de VM durante todo el día el 30 de enero de 2030 para la zona horaria America/New_York. Este comando supone que tienes un MIG existente denominado example-mig, que se encuentra en us-east1-b, y que tiene una política de ajuste de escala automático existente.

gcloud compute instance-groups managed update-autoscaling example-mig \
    --set-schedule=example-onetime-schedule \
    --schedule-cron="0 0 30 1 * 2030" \
    --schedule-duration-sec=86400 \
    --schedule-time-zone="America/New_York" \
    --schedule-min-required-replicas=30 \
    --schedule-description="Schedule a minimum of 30 VMs all day for January 30, 2030" \
    --zone=us-east1-b

Terraform

Para agregar un programa de escalamiento a un MIG, usa el recurso google_compute_autoscaler.

resource "google_compute_autoscaler" "default" {
  provider = google-beta
  name     = "my-autoscaler"
  zone     = "us-central1-f"
  target   = google_compute_instance_group_manager.default.id

  autoscaling_policy {
    max_replicas    = 5
    min_replicas    = 1
    cooldown_period = 60

    scaling_schedules {
      name                  = "every-weekday-morning"
      description           = "Increase to 2 every weekday at 7AM for 12 hours."
      min_required_replicas = 2
      schedule              = "0 7 * * MON-FRI"
      time_zone             = "America/New_York"
      duration_sec          = 43200
    }
  }
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

REST

.

A fin de crear un escalador automático con programas de escalamiento para un MIG, usa el método autoscalers.insert para un MIG zonal o el método regionAutoscalers.insert para un MIG regional.

Realiza la siguiente llamada con el fin de crear un programa para un MIG zonal que no tenga una política de ajuste de escala automático:

POST https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers/

{
  "name": "AUTOSCALER_NAME",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/MIG_NAME",
  "autoscalingPolicy": {
    "minNumReplicas": MIN_NUM_REPLICAS,
    "maxNumReplicas": MAX_NUM_REPLICAS,
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "minRequiredReplicas": MIN_REQ_REPLICAS,
        "schedule": "CRON_EXPRESSION",
        "timeZone": "TIME_ZONE",
        "durationSec": DURATION,
        "description": "DESCRIPTION"
      },
      ...
    }
  }
}

A fin de crear programas para un MIG que tiene una política de ajuste de escala automático existente, usa el método beta autoscalers.patch para un MIG zonal o el método beta regionAutoscalers.patch para un MIG regional.

Por ejemplo, realiza la siguiente llamada a fin de crear un programa para un MIG zonal que tenga una política de ajuste de escala automático existente:

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

{
  "autoscalingPolicy": {
    "minNumReplicas": MIN_NUM_REPLICAS,
    "maxNumReplicas": MAX_NUM_REPLICAS,
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "minRequiredReplicas": MIN_REQ_REPLICAS,
        "schedule": "CRON_EXPRESSION",
        "timeZone": "TIME_ZONE",
        "durationSec": DURATION,
        "description": "DESCRIPTION"
      },
      ...
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT: Es el ID de tu proyecto.
  • ZONE: Es la zona en la que se encuentra el MIG.
  • AUTOSCALER_NAME: Es el nombre de un escalador automático existente. Este suele ser el mismo que el nombre del MIG.
  • MIN_NUM_REPLICAS: Es la cantidad mínima de instancias que se requieren para este MIG (opcional). Google recomienda establecer este valor en la cantidad mínima de instancias que necesitas cuando no hay un programa de escalamiento activo. Cuando configuras este valor en 0 y configuras el ajuste de escala automático con programas o métricas de Cloud Monitoring con series temporales individuales por grupo, tu MIG puede reducir la escala a 0 VM. No es posible reducir la escala a 0 VM cuando la política tiene otros indicadores, que requieren datos de la VM individual, por ejemplo, el uso de CPU.
  • MAX_NUM_REPLICAS: Es la cantidad máxima de instancias que se pueden proporcionar para este MIG. Es opcional para un MIG con una política existente de ajuste de escala automático.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento nuevo.
  • MIN_REQ_REPLICAS: Es la cantidad de instancias mínimas necesarias que proporciona este programa cuando está activo.
  • CRON_EXPRESSION: Es la hora de inicio y la recurrencia de este programa que tiene el formato de una expresión cron.
  • TIME_ZONE: Es la zona horaria de IANA para la hora de inicio del programa, por ejemplo, Europe/Paris (opcional). El valor predeterminado es UTC.
  • DURATION: Es la duración, en segundos, en que este programa está activo.
  • DESCRIPTION: Es una descripción del programa de escalamiento nuevo (opcional).

Puedes crear programas que se ejecutan una vez o que se repiten de forma periódica.

Programa de repetición

Esta llamada a la API de ejemplo crea un programa que se repite. Este programa especifica que quieres que un MIG zonal contenga al menos 10 instancias de VM todos los lunes, martes, miércoles, jueves y viernes de 8:30 a.m. a 5 p.m., hora universal coordinada (UTC). Esta llamada a la API también usa los campos minNumReplicas y maxNumReplicas a fin de actualizar la cantidad mínima de instancias a 0 y la cantidad máxima de instancias a 30 para todas las señales de ajuste de escala automático del MIG seleccionado. Esta llamada a la API supone que tienes un proyecto existente denominado example-project con un MIG zonal que se encuentra en us-east1-b y que tiene un escalador automático llamado example-autoscaler con una política de ajuste de escala automático existente.

PATCH https://www.googleapis.com/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler

{
  "autoscalingPolicy": {
    "minNumReplicas": 0,
    "maxNumReplicas": 30,
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      }
    }
  }
}

A fin de usar este ejemplo para un MIG regional, realiza una solicitud similar con el método regionAutoscalers.patch y especifica una región en lugar de una zona.

Programa único

Esta llamada a la API de ejemplo crea un programa que se ejecuta una vez. Este programa especifica que quieres que un MIG zonal contenga al menos 30 instancias de VM todo el día el 30 de enero de 2030 para la zona horaria America/New_York. Esta llamada a la API supone que tienes un proyecto existente denominado example-project con un MIG zonal que se encuentra en us-east1-b y que tiene un escalador automático llamado example-autoscaler con una política de ajuste de escala automático existente.

PATCH https://www.googleapis.com/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "example-onetime-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    }
  }
}

A fin de usar este ejemplo para un MIG regional, realiza una solicitud similar con el método regionAutoscalers.patch y especifica una región en lugar de una zona.

Varios programas

Esta llamada a la API de ejemplo usa el método autoscalers.patch para dos programas, workday-capacity y january-30-2030-schedule, en una sola llamada. Esta llamada a la API supone que tienes un proyecto existente denominado example-project con un MIG zonal que se encuentra en us-east1-b y que tiene un escalador automático llamado example-autoscaler con una política de ajuste de escala automático existente.

PATCH https://www.googleapis.com/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    }
  }
}

A fin de usar este ejemplo para un MIG regional, realiza una solicitud similar con el método regionAutoscalers.patch y especifica una región en lugar de una zona.

Después de crear un programa, es posible que debas esperar unos minutos para ver la información de estado.

Haz una lista de tus programas de escalamiento

Puedes ver una lista de los programas de un MIG. En la lista, se muestra la configuración y la información de estado de cada programa.

Console

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista.

  3. Haz clic en  Editar.

  4. Puedes ver la cantidad total de programaciones en Programas de ajuste de escala automático. Haz clic en Administrar programas para ver la lista de tus programas de escalamiento existentes.

Cuando termines, haz clic en Listo para cerrar la lista.

gcloud

A fin de obtener detalles sobre un MIG, incluidas las opciones de configuración y los estados de los programas de escalamiento, usa el comando gcloud compute instance-groups managed describe.

gcloud compute instance-groups managed describe MIG_NAME \
    [--zone=ZONE | --region=REGION]

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre de un MIG con una política de ajuste de escala automático existente.
  • ZONE o REGION: Es la zona o la región en la que se encuentra el MIG (opcional).

Cualquier programa de escalamiento para el MIG aparece en el resultado, como se muestra en el siguiente ejemplo.

...
autoscalingPolicy:
  ...
  maxNumReplicas: 30
  minNumReplicas: 0
  ...
  scalingSchedules:
    example-onetime-schedule:
      description: Schedule a minimum of 30 VMs all day for January 30, 2030
      disabled: false
      durationSec: 86400
      minRequiredReplicas: 30
      schedule: 0 0 30 1 * 2030
      timeZone: America/New_York
    workday-capacity:
      description: Have at least 10 VMs every Monday through Friday from 8:30
        AM to 5 PM UTC
      disabled: false
      durationSec: 30600
      minRequiredReplicas: 10
      schedule: 30 8 * * Mon-Fri
      timeZone: UTC
...
scheduledScalingStatus:
    example-onetime-schedule:
        state: READY
        nextStartTime: '2030-01-30T00:00:00.000-05:00'
        lastStartTime: ''
    workday-capacity:
        state: READY
        nextStartTime: '2020-11-04T08:30:00.000-00:00'
        lastStartTime: '2020-11-03T08:30:00.000-00:00'
...

REST

A fin de obtener detalles sobre un escalador automático, incluidas las opciones de configuración y los estados de los programas de escalamiento, usa el método autoscalers.get para un MIG zonal o el método regionAutoscalers.get para un MIG regional.

Por ejemplo, realiza la siguiente llamada para enumerar los programas de un MIG zonal que tenga una política de ajuste de escala automático existente:

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

Reemplaza lo siguiente:

  • PROJECT: Es el ID de tu proyecto.
  • ZONE: Es la zona en la que se encuentra el MIG.
  • AUTOSCALER_NAME: Es el nombre de un escalador automático existente. Este suele ser el mismo que el nombre del MIG.

Cualquier programa de escalamiento para el MIG aparece en el resultado, como se muestra en el siguiente ejemplo.

{
  ...
  "autoscalingPolicy": {
    ...
    "minNumReplicas": 0,
    "maxNumReplicas": 30,
    ...
    "scalingSchedules": {
      "example-onetime-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030",
        "disabled": false
      },
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "timeZone": "",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC",
        "disabled": false
      },
      ...
    }
  },
  "scheduledScalingStatus": {
    "example-onetime-schedule": {
      "state": "READY",
      "nextStartTime": "2030-01-30T00:00:00.000-05:00",
      "lastStartTime": ''
    },
    "workday-capacity": {
      "state": "READY",
      "nextStartTime": "2020-11-04T08:30:00.000",
      "lastStartTime": "2020-11-03T08:30:00.000"
    },
    ...
  },
...
}

Edita un programa de escalamiento

Puedes editar un programa de escalamiento existente para cambiar cualquiera de sus opciones de configuración, excepto el nombre del programa. También puedes inhabilitar o volver a habilitar un programa de escalamiento.

Consola

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista.

  3. Haz clic en  Editar.

  4. Puedes ver la cantidad total de programaciones en Programas de ajuste de escala automático. Haz clic en Administrar programas para ver la lista de tus programas de escalamiento existentes.

  5. Selecciona la casilla de verificación del programa de escalamiento que deseas editar.

  6. En la parte superior del panel Programas de escalamiento, haz clic en Editar.

  7. En el nuevo panel Editar programa de escalamiento, modifica los campos que deseas cambiar. Para obtener más información sobre cada campo, consulta Crea un programa de escalamiento.

  8. Cuando termines, haz clic en Guardar.

Es posible que tenga que esperar unos minutos para que se implementen los cambios. Puedes supervisar el estado de tus programas si haces clic en Actualizar en la parte superior del panel Cronogramas de escalamiento.

Cuando termines, haz clic en Listo para cerrar la lista.

gcloud

Para actualizar un programa de escalamiento existente, usa el comando gcloud compute instance-groups managed update-autoscaling. Usa la marca --update-schedule para indicar el nombre del programa que quieres actualizar. Incluye las otras marcas según sea necesario para los cambios.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --update-schedule=SCHEDULE_NAME \
    [--schedule-cron="CRON_EXPRESSION"] \
    [--schedule-duration-sec=DURATION] \
    [--schedule-time-zone="TIME_ZONE"] \
    [--schedule-min-required-replicas=MIN_REQ_REPLICAS] \
    [--schedule-description="DESCRIPTION"] \
    [--zone=ZONE | --region=REGION]

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre de un MIG con un programa de escalamiento existente.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento existente
  • CRON_EXPRESSION: Es la nueva hora de inicio y la recurrencia de este programa que tiene el formato de una expresión cron (opcional).
  • DURATION: Es la nueva duration, en segundos, que este programa está activo (opcional).
  • TIME_ZONE: Es la nueva zona horaria de IANA para la hora de inicio del programa, por ejemplo, Europe/Paris (opcional). El valor predeterminado es UTC.
  • MIN_REQ_REPLICAS: Es la nueva cantidad de instancias mínimas necesarias que proporciona este programa cuando está activo (opcional).
  • DESCRIPTION: Es una nueva descripción del programa de escalamiento (opcional).
  • ZONE o REGION: Es la zona o la región en la que se encuentra el MIG (opcional).

REST

A fin de actualizar los programas de escalamiento existentes para un MIG, usa el método autoscalers.patch para un MIG zonal o el método regionAutoscalers.patch para un MIG regional.

Por ejemplo, realiza la siguiente llamada a fin de editar un programa para un MIG zonal que tenga una política de ajuste de escala automático existente:

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

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "minRequiredReplicas": MIN_REQ_REPLICAS,
        "schedule": "CRON_EXPRESSION",
        "timeZone": "TIME_ZONE",
        "durationSec": DURATION,
        "description": "DESCRIPTION"
      },
      ...
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT: Es el ID de tu proyecto.
  • ZONE: Es la zona en la que se encuentra el MIG.
  • AUTOSCALER_NAME: Es el nombre de un escalador automático existente. Este suele ser el mismo que el nombre del MIG.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento existente
  • MIN_REQ_REPLICAS: Es la nueva cantidad de instancias mínimas necesarias que proporciona este programa cuando está activo (opcional).
  • CRON_EXPRESSION: Es la nueva hora de inicio y la recurrencia de este programa que tiene el formato de una expresión cron (opcional).
  • TIME_ZONE: Es la nueva zona horaria de IANA para la hora de inicio del programa, por ejemplo, Europe/Paris (opcional). El valor predeterminado es UTC.
  • DURATION: Es la nueva duración, en segundos, en que este programa está activo (opcional).
  • DESCRIPTION: Es una nueva descripción del programa de escalamiento (opcional).

Inhabilita y vuelve a habilitar un programa de escalamiento

Los programas de escalamiento están habilitados de forma predeterminada. Inhabilita un programa si deseas evitar que se active, pero quieres guardar su configuración. Vuelve a habilitar un programa inhabilitado cuando quieras usarlo de nuevo.

Si no necesitas almacenar el programa o alcanzaste el límite de 128 programas para este MIG, borra el programa. Si deseas inhabilitar el ajuste de escala automático en un MIG, desactiva el ajuste de escala automático.

Consola

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista.

  3. Haz clic en  Editar.

  4. Puedes ver la cantidad total de programaciones en Programas de ajuste de escala automático. Haz clic en Administrar programas para ver la lista de tus programas de escalamiento existentes.

  5. Selecciona las casillas de verificación para los programas de escalamiento que deseas inhabilitar o habilitar.

  6. Inhabilita o habilita los programas seleccionados.

    • Para inhabilitar los programas seleccionados, sigue estos pasos:
      1. En la parte superior del panel Programas de escalamiento, haz clic en Inhabilitar.
      2. En el nuevo diálogo Inhabilitar programas, haz clic en Inhabilitar.
    • Para habilitar los programas seleccionados, sigue estos pasos:
      1. En la parte superior del panel Programas de escalamiento, haz clic en Habilitar.
      2. En el diálogo nuevo Habilitar programas, haz clic en Habilitar.

Es posible que tenga que esperar unos minutos para que se implementen los cambios. Puedes supervisar el estado de tus programas si haces clic en Actualizar en la parte superior del panel Cronogramas de escalamiento.

Cuando termines, haz clic en Listo para cerrar la lista.

gcloud

Para inhabilitar o volver a habilitar un programa de escalamiento, usa el comando gcloud compute instance-groups managed update-autoscaling.

Inhabilita un programa de escalamiento

Para inhabilitar un programa de escalamiento, usa la marca --disable-schedule.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --disable-schedule=SCHEDULE_NAME \
    [--zone=ZONE | --region=REGION]

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre de un MIG con un programa de escalamiento existente.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento que deseas inhabilitar.
  • ZONE o REGION: Es la zona o la región en la que se encuentra el MIG (opcional).

Vuelve a habilitar un programa de escalamiento

Para volver a habilitar un programa de escalamiento, usa la marca --enable-schedule.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --enable-schedule=SCHEDULE_NAME \
    [--zone=ZONE | --region=REGION]

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre de un MIG con un programa de escalamiento existente.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento que deseas volver a habilitar.
  • ZONE o REGION: Es la zona o la región en la que se encuentra el MIG (opcional).

REST

A fin de habilitar o volver a habilitar los programas de escalamiento para un MIG, usa el método autoscalers.patch para un MIG zonal o el método regionAutoscalers.patch para un MIG regional.

Inhabilita los programas de escalamiento

Para cada programa de escalamiento que quieras inhabilitar, configura el campo disabled como true. Por ejemplo, realiza la siguiente llamada a fin de inhabilitar un programa para un MIG zonal que tenga una política de ajuste de escala automático existente:

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

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "disabled": true
      },
      ...
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT: Es el ID de tu proyecto.
  • ZONE: Es la zona en la que se encuentra el MIG.
  • AUTOSCALER_NAME: Es el nombre de un escalador automático existente. Este suele ser el mismo que el nombre del MIG.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento que deseas inhabilitar.

Vuelve a habilitar los programas de escalamiento

Para cada programa de escalamiento que quieras volver a habilitar, configura el campo disabled como false. Por ejemplo, realiza la siguiente llamada a fin de volver a habilitar un programa para un MIG zonal que tenga una política de ajuste de escala automático existente:

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

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "disabled": false
      },
      ...
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT: Es el ID de tu proyecto.
  • ZONE: Es la zona en la que se encuentra el MIG.
  • AUTOSCALER_NAME: Es el nombre de un escalador automático existente. Este suele ser el mismo que el nombre del MIG.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento que deseas volver a habilitar.

Borra un programa de escalamiento

Quita los programas de escalamiento de un MIG; para ello, bórralos. Borra los programas que ya no necesitas, como los programas con un estado de OBSOLETE.

Una política de ajuste de escala automático siempre debe tener por lo menos un indicador de escalamiento. Si no existe otro indicador de ajuste de escala automático, no puedes borrar todos los programas de escalamiento sin borrar toda la política de ajuste de escala automático. Si deseas borrar todos los programas de escalamiento y conservar la política de ajuste de escala automático, debes agregar al menos un indicador de escalamiento antes de borrar todos los programas.

Si quieres evitar que un programa se active y deseas guardarlo para uso futuro, inhabilita el programa. Si deseas borrar la configuración del ajuste de escala automático para un MIG, borra el escalador automático.

Consola

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

    Ir a Grupos de instancias

  2. Haz clic en el nombre de un MIG de la lista.

  3. Haz clic en  Editar.

  4. Puedes ver la cantidad total de programaciones en Programas de ajuste de escala automático. Haz clic en Administrar programas para ver la lista de tus programas de escalamiento existentes.

  5. Selecciona las casillas de verificación de los programas de escalamiento que deseas borrar.

  6. En la parte superior del panel Programas de escalamiento, haz clic en Borrar.

  7. En el nuevo diálogo Borrar programas, haz clic en Borrar.

Es posible que tenga que esperar unos minutos para que se implementen los cambios. Puedes supervisar el estado de tus programas si haces clic en Actualizar en la parte superior del panel Cronogramas de escalamiento.

Cuando termines, haz clic en Listo para cerrar la lista.

gcloud

Para borrar un programa de escalamiento, usa el comando gcloud compute instance-groups managed update-autoscaling con la marca --remove-schedule.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --remove-schedule=SCHEDULE_NAME \
    [--zone=ZONE | --region=REGION]

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre de un MIG con un programa de escalamiento existente.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento que deseas borrar.
  • ZONE o REGION: Es la zona o la región en la que se encuentra el MIG (opcional).

REST

A fin de borrar los programas de escalamiento para un MIG, usa el método autoscalers.patch para un MIG zonal o el método regionAutoscalers.patch para un MIG regional. Para cada programa de escalamiento que desees borrar, establece la configuración del programa en null.

Por ejemplo, realiza la siguiente llamada a fin de borrar un programa para un MIG zonal que tenga una política de ajuste de escala automático existente:

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

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": null
      ...
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT: Es el ID de tu proyecto.
  • ZONE: Es la zona en la que se encuentra el MIG.
  • AUTOSCALER_NAME: Es el nombre de un escalador automático existente. Este suele ser el mismo que el nombre del MIG.
  • SCHEDULE_NAME: Es el nombre del programa de escalamiento que deseas borrar.

Conceptos

En esta sección, se describen conceptos relacionados con la creación y el uso de programas de escalamiento, incluidas las opciones de configuración de programa y los detalles de cómo funcionan.

Configuración de programa de escalamiento

Cuando creas y modificas los programas de escalamiento para un MIG, cada programa de escalamiento contiene la siguiente configuración:

  • Instancias mínimas necesarias: Es la cantidad de VM que necesitas en el MIG cuando este programa de escalamiento está activo.

    Cuando este programa está activo, el MIG tiene al menos esta cantidad de VM, pero puede tener más según otras opciones de configuración del ajuste de escala automático. Además, el tamaño del MIG siempre está restringido por la cantidad mínima y máxima de instancias configuradas en la configuración del ajuste de escala automático del MIG.

  • Zona horaria: Es la zona horaria de IAN basada en la ubicación para interpretar la hora de inicio del programa.

    La base de datos de la zona horaria de IANA define una lista de valores disponibles, por ejemplo, Europe/Paris. Si no se proporciona una zona horaria, UTC se usa de forma predeterminada. Algunas zonas horarias de la IANA cumplen con el horario de verano. Para obtener información sobre cómo afecta el horario de verano a los programas de escalamiento, consulta Horario de verano.

  • Duración: Es la cantidad de tiempo que deseas que esté activo el programa de escalamiento.

    El programa de escalamiento está activo desde su hora de inicio por la duración configurada. La duración mínima es de 5 minutos. Durante este tiempo, el escalador automático escala el MIG para tener al menos tantas VM como se definen en las instancias necesarias del programa. Después de la duración especificada, si ya no se necesita la capacidad actual, el escalador automático comienza a quitar las instancias de VM después de un período de estabilización de 10 minutos predeterminado y comienza a seguir cualquier control de reducción de escala configurado.

    Los programas de escalamiento son bidireccionales. Las VM se quitan a la hora de finalización que especifiques, y el tamaño del grupo se reduce al tamaño mínimo que hayas establecido, a menos que hayas especificado otros indicadores de ajuste de escala automático.

Cuando usas Google Cloud CLI o REST, debes configurar la hora de inicio y la recurrencia de un programa de escalamiento con una expresión cron. Sin embargo, cuando usas la consola de Google Cloud, puedes configurar la hora de inicio y la recurrencia de un programa mediante una expresión cron o la siguiente configuración:

  • Hora de inicio: La hora del día en la que quieres que se active el programa de escalamiento.

    En la hora de inicio, el programa de escalamiento comienza a crear VM cada vez que el tamaño del MIG es menor que las instancias requeridas por la programación. Configura la hora de inicio a fin de que las VM nuevas tengan el tiempo suficiente para iniciarse. Por ejemplo, si tu carga de trabajo tarda 10 minutos desde la creación de la VM para comenzar a entregar, configura la hora de inicio en 10 minutos antes de la hora en que necesitas que las VM estén listas.

  • Recurrencia: Si la programa de escalamiento se repite y con qué frecuencia, como se define en las siguientes opciones:

    • Una vez: Un programa único que comienza solo en la fecha seleccionada.
    • Todos los días: Un programa recurrente que comienza todos los días.
    • Todas las semanas: Un programa recurrente que comienza todas las semanas los días seleccionados de la semana, por ejemplo, todos los lunes hasta el viernes.
    • Todos los meses: Un programa recurrente que comienza todos los meses, los días seleccionados del mes, por ejemplo, el primer día de cada mes. Los últimos días del mes (días del 29 al 31) solo son efectivos durante los meses en que se producen.

Expresiones cron

La hora de inicio y la recurrencia de un programa de escalamiento se pueden configurar con una expresión cron. Cron es un programador de trabajos basado en el tiempo que se usaba originalmente en sistemas operativos similares a Unix.

Sintaxis

Una expresión de cron es una string que consta de cinco o seis campos separados por espacios en blanco. En la siguiente tabla, se definen los campos de una expresión de cron y los valores posibles para cada campo.

Minuto Hora Día del mes Mes Día de la semana Año (opcional)
0-59 0-23 1-31 1-12 (ene-dic)

donde 1=Jan, 2=Feb, ... 12=Dec.
0-6 (dom-sáb) o 1-7 (lun-dom)

donde 0=Sun, 1=Mon, ... 6=Sat, 7=Sun
2000-2003

o todos los años (*) si no se proporcionan

Además de usar estos valores, cada campo de una expresión cron también puede usar caracteres especiales:

Carácter especial Significado Ejemplo
* cualquiera Si el campo del día del mes, el campo del día de la semana y el campo del año (si se incluyen) están configurados en *, entonces el programa comienza todos los días.
- rango Si el campo del día de la semana se configura como 1-5 o Mon-Fri, entonces el programa comienza de lunes a viernes todas las semanas.
, lista Si el campo del mes se configura como 5,7,9 o May,Jul,Sep, entonces el programa comienza cada mes de mayo, julio y septiembre.
/ paso Si el campo del mes se configura como */3, el programa comienza durante el primer mes y cada 3 meses después de eso: enero, abril, julio y octubre.

Cuando escribas una expresión cron, ten en cuenta lo siguiente:

  • El espacio en blanco se usa para separar los campos de una expresión cron. Recuerda no agregar espacios en blanco adicionales en un campo que usa caracteres especiales.
  • Cuando especificas un día de la semana y un día del mes (cuando no se configura ningún campo como *), el programa usa la unión de estos valores, no la intersección. Por ejemplo, el programa 0 8 1 * Mon comienza a las 8:00 a.m. todos los lunes y el primer día de cada mes. Ese programa no comienza a las 8:00 a.m. solo los lunes que también son el primer día del mes.
  • Puedes usar cero o más caracteres especiales en cada campo de una expresión cron. Por ejemplo, si deseas que un programa comience cada mes, excepto mayo, puedes configurar el campo del mes como 1-4,6-12 (una lista de dos rangos sin espacios en blanco).
  • Cuando usas rangos (-), no puedes usar 0-7 ni Sun-Sun para el campo del día de la semana. A fin de especificar todos los días de la semana, usa *, 0-6, 1-7, Sun-Sat o Mon-Sun en su lugar.
  • Cuando uses pasos (/), recuerda que las expresiones cron no tienen estado, por lo que a veces pueden ser impares. Por ejemplo, si deseas que un programa se ejecute cada 6 horas, puedes configurar el campo de las horas como */6, que se comporta de la misma manera que cuando se enumeran todos los múltiplos válidos de 6 (0,6,12,18). Los pasos son pares porque las 24 horas se dividen con facilidad en partes de 6 horas. Sin embargo, si configuras el campo de las horas como */7, el programa no siempre comenzará en intervalos de 7 horas. En cambio, */7 se comporta de la misma manera que cuando se enumeran todos los múltiplos válidos de 7 (0,7,14,21), lo que significa que el programa puede comenzar durante las horas de 12 a.m., 7 a.m., 2 p.m. y 9 p.m.

Programas de repetición frente a programas únicos

Según cómo escribas la expresión cron, el programa podría ejecutarse una vez o repetirse de forma periódica. Para crear un programa que solo se ejecute una vez, debes especificar el campo del año. Por ejemplo, la expresión cron 0 0 30 1 * 2030 configura un programa para que comience solo una vez, a la medianoche, el 30 de enero de 2030. A fin de crear un programa que se repita, usa caracteres especiales para describir cuándo se debe repetir ese programa. Por ejemplo, la expresión cron 30 8 * * Mon-Fri configura un programa para comenzar a las 8:30 a.m. todos los lunes, martes, miércoles, jueves y viernes.

Información sobre el estado del programa

Enumera tus programas de escalamiento para ver los estados. Un programa de escalamiento tiene la siguiente información de estado:

  • Status (state): Es el estado actual del programa de escalamiento, representado por uno de los siguientes estados:
    • Ready (READY): Este programa está listo, pero aún no está activo. El escalador automático se encuentra a la espera del próximo caso de este programa.
    • Active (ACTIVE): Este programa está activo en este momento. El escalador automático intenta brindar a este MIG las instancias necesarias que especifica este programa como mínimo.
    • Obsolete (OBSOLETE): Este programa venció; ya no volverá a estar activo. El escalador automático ignora este programa porque no hay casos futuros.
    • Disabled (DISABLED): Este programa no puede estar activo porque se lo inhabilitó de forma manual. El escalador automático ignora este programa hasta que se vuelve a habilitar.
  • Last occurrence (lastStartTime): Es la marca de tiempo de la última vez que este programa de escalamiento se activó. Es la fecha y la hora reales de la última activación. Por ejemplo, si tienes un programa de escalamiento inhabilitado con una recurrencia diaria, una hora de inicio de 10 a.m. y una duración de 2 horas, y vuelves a habilitar el programa hoy a las 11 a.m., entonces lastStartTime equivale a las 11 a.m. de hoy.
  • Next occurrence (nextStartTime): Es la marca de tiempo de la próxima vez que este programa estará activo.

Programas superpuestos

Según la hora de inicio, la recurrencia, la duración y la zona horaria, dos o más programas de escalamiento pueden superponerse. Cuando más de un programa está activo, el escalador automático usa la mayor cantidad de instancias de VM necesarias de todos los programas de escalamiento activos. Esto te ayuda a garantizar que siempre haya suficiente capacidad para satisfacer las necesidades de cualquier programa activo. Por ejemplo, si tienes un programa que se repite todos los días de 8 a.m. a 10 a.m. y que requiere al menos 10 VM, pero también tienes un programa único para todo el día que requiere al menos 20 VM, entonces el escalador automático escala el MIG a 20 VM ese día como mínimo. Esto es útil cuando tienes requisitos de capacidad recurrentes y regulares, pero a veces necesitas más para manejar eventos únicos. Este comportamiento te permite programar la capacidad sin preocuparte por que otros programas con requisitos de VM más pequeños la anulen.

Además, un escalador automático siempre proporciona la mayor cantidad de instancias de VM requeridas por cualquier indicador de ajuste de escala automático activo. Para obtener más información, consulta Usa una política de ajuste de escala automático con varios indicadores.

Horario de verano

Los detalles del horario de verano (DST) varían según la zona horaria de IANA basada en ubicación de tu programa de escalamiento. Si la zona horaria de tu programa detecta el DST, la hora de inicio del programa se ajusta automáticamente para mantenerse sincronizada con la hora de la ubicación seleccionada. Por ejemplo, si creas un programa de escalamiento que comienza todos los días a las 7 a.m. para la zona horaria America/New_York, este programa comienza cuando son las 7 a.m. en Nueva York, con el horario de verano oriental o la hora estándar del este, según corresponda.

Los programas de escalamiento siempre se ejecutan durante el período que configures, pero pueden tener horas de inicio y finalización ligeramente diferentes en los días en que cambia la detección del DST. Esto sucede porque los interruptores de DST tienen períodos de transición, un período que se omite el primer día de DST y que ocurre dos veces en el último día del DST. Por ejemplo, si el DST de tu zona horaria comienza a las 2 a.m. y tiene una transición de 1 hora, el reloj cambia de 1:59:59 a.m. a 3 a.m., de manera que el período de 2 a.m. a 2:59:59 a.m. se omite. Si el DST para esa zona horaria finaliza a las 2 a.m., el reloj cambia de 2:59:59 a.m. a 2 a.m., de manera que el período de 2 a.m. a 2:59:59 a.m. se repite. En las siguientes declaraciones, se asume que la zona horaria para tu programa usa una transición de DST de 1 hora.

En el primer día de DST (cuando se omite 1 hora), los programas de escalamiento tienen los siguientes cambios:

  • Los programas que están activos durante la hora omitida se siguen ejecutando durante toda la duración, pero para compensar la hora omitida, estos programas finalizan 1 hora más tarde que su hora de finalización los días sin transiciones de DST. Por lo general, la hora de finalización de un programa es la suma de la hora de inicio y la duración del programa. Pero si el DST omite 1 hora mientras un programa está activo y la hora de inicio y finalización se mantienen constantes, la hora de finalización para ese programa es 1 hora más que la suma de la hora de inicio y la duración del programa.
  • Los programas configurados para comenzar durante la hora omitida también comienzan 1 hora más tarde de su hora de inicio en días sin transiciones de DST.

En el último día de DST (cuando se repite 1 hora), los programas de escalamiento tienen los siguientes cambios:

  • Los programas que están activos durante la hora de repetición se siguen ejecutando durante toda la duración, pero para compensar la hora repetida, estos programas finalizan 1 hora antes que su hora de finalización en días sin transiciones de DST. Por lo general, la hora de finalización de un programa es la suma de la hora de inicio y la duración del programa. Pero si el DST se repite 1 hora mientras un programa está activo, y la duración y la hora de inicio permanecen constantes, entonces la hora de finalización para ese programa es 1 hora menos que la suma de la hora de inicio y la duración del programa.
  • Los programas configurados para comenzar durante el período de transición comienzan a la hora configurada, pero no se reinician durante la segunda instancia repetida de la hora de inicio.

La mayoría de las zonas horarias que observan la DST usan un período de transición de 1 hora. Sin embargo, si la zona horaria de tu programa usa un período de transición diferente, como la zona horaria Australia/Lord_Howe, que usa transiciones de 30 minutos, puedes esperar el mismo comportamiento. Solo debes reemplazar 1 hora con el tiempo de transición de DST relevante.

¿Qué sigue?