Escalar según programaciones


El autoescalado basado en la programación te permite mejorar la disponibilidad de tus cargas de trabajo programando la capacidad antes de la carga prevista. Si ejecutas tu carga de trabajo en un grupo de instancias gestionado (MIG), puedes programar un número necesario de instancias de máquina virtual para patrones de carga periódicos, así como para eventos puntuales. Usa programaciones de escalado si tu carga de trabajo tarda mucho en inicializarse y quieres aumentar la escala antes de los picos de carga previstos.

En este documento se describe cómo puedes crear, enumerar, editar, inhabilitar, volver a habilitar y eliminar programaciones de escalado de un MIG. Para obtener más información sobre los grupos de instancias gestionados y el autoescalado, consulta Crear grupos de instancias gestionados y Grupos de instancias con autoescalado.

Antes de empezar

  • Consulta los conceptos básicos del escalado automático.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos 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. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    Terraform

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

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para obtener más información, consulta Set up authentication for a local development environment.

    REST

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

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Limitaciones

Las programaciones de escalado están sujetas a las limitaciones de todos los autoescaladores, así como a las siguientes:

  • Puedes tener hasta 128 programaciones de escalado por MIG. Para mitigar este límite, elimina las programaciones de escalado que tengan el estado OBSOLETE y que no tengas previsto volver a ejecutar.
  • La duración mínima de las programaciones de escalado es de 5 minutos.

Crear una programación de escalado

Puedes crear hasta 128 programaciones de escalado por MIG. Para obtener más información, consulta Ajustes de la programación de escalado.

En las siguientes instrucciones se explica cómo crear una programación de escalado para un MIG.

Consola

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

    Ir a Grupos de instancias

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

  3. Haz clic en Editar.

  4. Haga clic en Tamaño del grupo y escalado automático para desplegar la sección.

  5. Si no hay ninguna configuración de autoescalado, haz clic en Configurar autoescalado.

    De forma predeterminada, la configuración de autoescalado añade una señal basada en la utilización de la CPU. Si quieres escalar tu MIG solo en función de las programaciones, elimina la métrica de uso de CPU predeterminada después de añadir las programaciones.

  6. En la sección Programaciones de escalado automático, haz clic en Gestionar.

  7. En el panel Programaciones de escalado, haga lo siguiente para cada programación de escalado que quiera añadir:

    1. Haz clic en Crear programación.
    2. En el panel Crear programación de escalado, introduzca un Nombre.
    3. Opcional: Introduce una Descripción.
    4. Introduce el número de instancias mínimas requeridas que proporciona esta programación cuando está activa.
    5. Para especificar la hora de inicio y la periodicidad de tu programación de escalado, puedes usar la interfaz predeterminada. También puedes configurar una programación con una periodicidad y una fecha de inicio más complejas mediante la expresión cron. En función de cómo quieras configurar la opción, sigue estos pasos:

      • Interfaz predeterminada

        1. En el campo Hora de inicio, introduce una hora de inicio con el formato HH:MM AM/PM (por ejemplo, 09:00 AM).

        2. Haz clic en el campo Zona horaria. Selecciona un país y, a continuación, una zona horaria.

          Puedes usar el campo Buscar por país para encontrar un país o una zona horaria. Por ejemplo, escribe Australia/australian central para encontrar las zonas horarias del centro de Australia.

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

        4. En el campo Recurrencia, selecciona la frecuencia con la que se repite la programación.

          Puedes elegir Una vez o Todos los días. Para especificar que la programación se repita solo en determinados días, elige Cada semana o Cada mes. Después de seleccionar una de estas opciones, usa la lista adicional para seleccionar los días de la semana o del mes en los que empieza la programación.

      • Expresión cron

        1. Para habilitar esta opción, haz clic en el interruptor Usar expresión cron.

        2. En el campo Expresión CRON, introduce una expresión cron que especifique la hora de inicio y la periodicidad.

        3. Haz clic en el campo Zona horaria. Selecciona un país y, a continuación, una zona horaria.

          Puedes usar el campo Buscar por país para encontrar un país o una zona horaria. Por ejemplo, escribe Australia/australian central para encontrar las zonas horarias del centro de Australia.

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

    6. Haz clic en Guardar. En el panel Programaciones de escalado se muestra la programación que has creado.

  8. Cuando hayas terminado de crear las programaciones, haz clic en Hecho.

    Las programaciones se guardan y se aplican a tu MIG.

  9. Haz clic en Guardar para salir de la página de edición.

gcloud

Para añadir una programación de escalado a un MIG que no tenga una política de autoescalado, 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 añadir una programación de escalado a un MIG con una política de autoescalado, 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]

Haz los cambios siguientes:

  • MIG_NAME: el nombre de un MIG con una política de autoescalado.
  • MIN_NUM_REPLICAS: opcional. Número mínimo de instancias necesarias para este MIG. Google recomienda definir este valor como el número mínimo de instancias que necesitas cuando no hay ninguna programación de escalado activa. Para reducir tu MIG a cero instancias, asigna el valor 0 y asegúrate de que se cumplen las condiciones necesarias.
  • MAX_NUM_REPLICAS: el número máximo de instancias que se pueden proporcionar para este MIG. Opcional para un MIG con una política de autoescalado.
  • SCHEDULE_NAME: el nombre de la nueva programación del escalado.
  • CRON_EXPRESSION: la hora de inicio y la recurrencia de esta programación con el formato de una expresión cron.
  • DURATION: la duración, en segundos, durante la que está activo este horario.
  • TIME_ZONE: opcional. La zona horaria de IANA de la hora de inicio de la programación. Por ejemplo, Europe/Paris. El valor predeterminado es UTC.
  • MIN_REQ_REPLICAS: número de instancias mínimas requeridas que proporciona esta programación cuando está activa.
  • DESCRIPTION: opcional, una descripción de la nueva programación de escalado.
  • ZONE o REGION (opcional): la zona o la región en la que se encuentra tu MIG.

Puedes crear programaciones que se ejecuten una vez o que se repitan periódicamente.

Programación periódica

Este comando de ejemplo crea una programación que se repite. Esta programación especifica que quieres que tu MIG contenga al menos 10 instancias de VM todos los lunes, martes, miércoles, jueves y viernes de 8:30 a 17:00 (UTC). Este comando también usa las marcas --min-num-replicas y --max-num-replicas para actualizar el número mínimo de instancias a 0 y el número máximo de instancias a 30 para todas las señales de autoescalado del MIG seleccionado. Este comando supone que tienes un MIG llamado example-mig con una política de autoescalado.

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"

Programación única

Este comando de ejemplo crea una programación que se ejecuta una vez. Esta programación especifica que quieres que tu MIG contenga al menos 30 instancias de VM durante todo el día 30 de enero del 2030 en la zona horaria America/New_York. En este comando se presupone que tienes un MIG llamado example-mig, que se encuentra en us-east1-b y que tiene una política de autoescalado.

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 añadir una programación de escalado 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
    }
  }
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

REST

Para crear un escalador automático con programaciones de escalado para un MIG, usa el método autoscalers.insert para un MIG de zona o el método regionAutoscalers.insert para un MIG regional.

Haz la siguiente llamada para crear una programación para un MIG zonal que no tenga una política de autoescalado:

POST https://compute.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"
      },
      ...
    }
  }
}

Para crear programaciones para un MIG que tenga una política de autoescalado, usa el método autoscalers.patch para un MIG zonal o el método regionAutoscalers.patch para un MIG regional.

Por ejemplo, haz la siguiente llamada para crear una programación para un MIG zonal que tenga una política de autoescalado:

PATCH https://compute.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"
      },
      ...
    }
  }
}

Haz los cambios siguientes:

  • PROJECT: tu ID de proyecto.
  • ZONE: la zona en la que se encuentra tu MIG.
  • AUTOSCALER_NAME: el nombre de un autoscalador. Suele ser el mismo que el nombre del MIG.
  • MIN_NUM_REPLICAS: opcional. Número mínimo de instancias necesarias para este MIG. Google recomienda definir este valor como el número mínimo de instancias que necesitas cuando no hay ninguna programación de escalado activa. Para reducir tu MIG a cero instancias, asigna el valor 0 y asegúrate de que se cumplen las condiciones necesarias.
  • MAX_NUM_REPLICAS: el número máximo de instancias que se pueden proporcionar para este MIG. Opcional para un MIG con una política de autoescalado.
  • SCHEDULE_NAME: el nombre de la nueva programación del escalado.
  • MIN_REQ_REPLICAS: el número mínimo de instancias que proporciona esta programación cuando está activa.
  • CRON_EXPRESSION: la hora de inicio y la recurrencia de esta programación con el formato de una expresión cron.
  • TIME_ZONE: opcional. La zona horaria de IANA de la hora de inicio de la programación. Por ejemplo, Europe/Paris. El valor predeterminado es UTC.
  • DURATION: la duración, en segundos, durante la que está activo este horario.
  • DESCRIPTION: opcional, una descripción de la nueva programación de escalado.

Puedes crear programaciones que se ejecuten una vez o que se repitan periódicamente.

Programación periódica

Esta llamada a la API de ejemplo crea una programación que se repite. Esta programación 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 17:00 (UTC). Esta llamada a la API también usa los campos minNumReplicas y maxNumReplicas para actualizar el número mínimo de instancias a 0 y el número máximo de instancias a 30 para todas las señales de autoescalado del MIG seleccionado. Esta llamada a la API presupone que tienes un proyecto llamado example-project con un MIG zonal ubicado en us-east1-b y que tiene un escalador automático llamado example-autoscaler con una política de autoescalado.

PATCH https://compute.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"
      }
    }
  }
}

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

Programación única

Esta llamada a la API de ejemplo crea una programación que se ejecuta una vez. Esta programación especifica que quieres que un MIG zonal contenga al menos 30 instancias de VM durante todo el día 30 de enero del 2030 en la zona horaria America/New_York. Esta llamada a la API presupone que tienes un proyecto llamado example-project con un MIG zonal ubicado en us-east1-b y que tiene un escalador automático llamado example-autoscaler con una política de autoescalado.

PATCH https://compute.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"
      }
    }
  }
}

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

Varias programaciones

En esta llamada de ejemplo a la API se usa el método autoscalers.patch para dos programaciones, workday-capacity y january-30-2030-schedule, en una sola llamada. Esta llamada a la API presupone que tienes un proyecto llamado example-project con un MIG zonal ubicado en us-east1-b y un escalador automático llamado example-autoscaler con una política de autoescalado.

PATCH https://compute.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"
      }
    }
  }
}

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

Una vez que hayas creado una programación, puede que tengas que esperar unos minutos para ver su información de estado.

Consultar las programaciones de escalado

Puedes ver una lista de las programaciones de un MIG. En la lista se muestran los ajustes y la información de estado de cada programación.

Consola

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

    Ir a Grupos de instancias

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

    En la pestaña Resumen, la sección Escalado automático muestra las señales configuradas en el MIG.

  3. Junto a la información de la señal, coloca el puntero sobre el icono y, a continuación, haz clic en Gestionar.

    En el panel Programaciones de escalado se muestra la lista de las programaciones de escalado que ya tiene.

gcloud

Para obtener información sobre un MIG, incluidas las configuraciones y los estados de sus programaciones de escalado, usa el comando gcloud compute instance-groups managed describe.

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

Haz los cambios siguientes:

  • MIG_NAME: el nombre de un MIG con una política de autoescalado.
  • ZONE o REGION (opcional): la zona o la región en la que se encuentra tu MIG.

En el resultado se muestran las programaciones de escalado de tu MIG, 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

Para obtener información sobre un escalador automático, incluidas las configuraciones y los estados de sus programaciones de escalado, utiliza el método autoscalers.get para un MIG zonal o el método regionAutoscalers.get para un MIG regional.

Por ejemplo, haz la siguiente llamada para enumerar las programaciones de un MIG zonal que tenga una política de autoescalado:

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

Haz los cambios siguientes:

  • PROJECT: tu ID de proyecto.
  • ZONE: la zona en la que se encuentra tu MIG.
  • AUTOSCALER_NAME: el nombre de un autoscalador. Suele ser el mismo que el nombre del MIG.

En el resultado se muestran las programaciones de escalado de tu MIG, 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"
    },
    ...
  },
...
}

Editar una programación de escalado

Puedes editar una programación de escalado que ya tengas para cambiar cualquiera de sus ajustes excepto el nombre de la programación. También puedes inhabilitar o volver a habilitar una programación de escalado.

Consola

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

    Ir a Grupos de instancias

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

  3. Haz clic en Editar.

  4. Haga clic en Tamaño del grupo y escalado automático para desplegar la sección.

  5. En la sección Programaciones de escalado automático, haz clic en Gestionar.

    En el panel Programaciones de escalado se muestra la lista de las programaciones de escalado que ya tiene.

  6. Seleccione la casilla de la programación de escalado que quiera editar.

  7. En la parte superior del panel Escalas programadas, haz clic en Editar.

  8. En el panel Editar programación de escalado, modifica los campos que quieras cambiar. Para obtener más información sobre cada campo, consulta Crear una programación de escalado.

  9. Cuando hayas terminado, haz clic en Guardar.

    Es posible que tengas que esperar unos minutos para que los cambios se apliquen. Para monitorizar el estado de tus programaciones, haz clic en Actualizar en la parte superior del panel Programaciones de escalado.

  10. Cierra el panel Programaciones de escalado haciendo clic en Hecho.

    Los cambios en las programaciones se guardan y se aplican a tu MIG.

  11. Haz clic en Guardar para salir de la página de edición.

gcloud

Para actualizar una programación de escalado, usa el comando gcloud compute instance-groups managed update-autoscaling. Usa la marca --update-schedule para indicar el nombre de la programación que quieres actualizar. Incluye las demás marcas según sea necesario para tus 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]

Haz los cambios siguientes:

  • MIG_NAME: el nombre de un MIG con una programación de escalado.
  • SCHEDULE_NAME: el nombre de la programación de escalado.
  • CRON_EXPRESSION: opcional: la nueva hora de inicio y la recurrencia de esta programación con el formato de una expresión cron.
  • DURATION: opcional. Es la nueva duración, en segundos, durante la que está activo esta programación.
  • TIME_ZONE: opcional. La nueva zona horaria de IANA de la hora de inicio de la programación. Por ejemplo, Europe/Paris. El valor predeterminado es UTC.
  • MIN_REQ_REPLICAS: opcional. Es el nuevo número de instancias mínimas requeridas que proporciona esta programación cuando está activa.
  • DESCRIPTION: opcional: una nueva descripción de la programación de escalado.
  • ZONE o REGION (opcional): la zona o la región en la que se encuentra tu MIG.

REST

.

Para actualizar las programaciones de escalado de un MIG, usa el método autoscalers.patch para un MIG zonal o el método regionAutoscalers.patch para un MIG regional.

Por ejemplo, haz la siguiente llamada para editar una programación de un MIG zonal que tenga una política de autoescalado:

PATCH https://compute.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"
      },
      ...
    }
  }
}

Haz los cambios siguientes:

  • PROJECT: tu ID de proyecto.
  • ZONE: la zona en la que se encuentra tu MIG.
  • AUTOSCALER_NAME: el nombre de un autoscalador. Suele ser el mismo que el nombre del MIG.
  • SCHEDULE_NAME: el nombre de la programación de escalado.
  • MIN_REQ_REPLICAS: opcional. Es el nuevo número de instancias mínimas requeridas que proporciona esta programación cuando está activa.
  • CRON_EXPRESSION: opcional: la nueva hora de inicio y la recurrencia de esta programación con el formato de una expresión cron.
  • TIME_ZONE: opcional. La nueva zona horaria de IANA de la hora de inicio de la programación. Por ejemplo, Europe/Paris. El valor predeterminado es UTC.
  • DURATION: opcional. Es la nueva duración, en segundos, durante la que está activo esta programación.
  • DESCRIPTION: opcional: una nueva descripción de la programación de escalado.

Inhabilitar y volver a habilitar una programación de escalado

Las programaciones de escalado están habilitadas de forma predeterminada. Inhabilita una programación si quieres evitar que esté activa, pero quieres guardar su configuración. Vuelve a habilitar una programación inhabilitada cuando quieras volver a usarla.

Si no necesitas almacenar la programación o has alcanzado el límite de 128 programaciones para este MIG, elimina la programación. Si quieres inhabilitar el autoescalado de un MIG, desactívalo.

Consola

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

    Ir a Grupos de instancias

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

  3. Haz clic en Editar.

  4. Haga clic en Tamaño del grupo y escalado automático para desplegar la sección.

  5. En la sección Programaciones de escalado automático, haz clic en Gestionar.

    En el panel Programaciones de escalado se muestra la lista de las programaciones de escalado que ya tiene.

    1. Seleccione las casillas de las programaciones de escalado que quiera inhabilitar o habilitar.

      • Para inhabilitar las programaciones seleccionadas, sigue estos pasos:

        1. En la parte superior del panel Escalas, haz clic en Inhabilitar.
        2. En el cuadro de diálogo Inhabilitar programaciones, haz clic en Inhabilitar.
      • Para habilitar las programaciones seleccionadas, sigue estos pasos:

        1. En la parte superior del panel Escalas, haz clic en Habilitar.
        2. En el cuadro de diálogo Habilitar programaciones, haga clic en Habilitar.

      Es posible que tengas que esperar unos minutos para que los cambios se apliquen. Para monitorizar el estado de tus programaciones, haz clic en Actualizar en la parte superior del panel Programaciones de escalado.

    2. Cierra el panel Programaciones de escalado haciendo clic en Hecho.

      Los cambios en las programaciones se guardan y se aplican a tu MIG.

  6. Haz clic en Guardar para salir de la página de edición.

gcloud

Para inhabilitar o volver a habilitar una programación de escalado, usa el comando gcloud compute instance-groups managed update-autoscaling.

Inhabilitar una programación de escalado

Para inhabilitar una programación de escalado, usa la marca --disable-schedule.

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

Haz los cambios siguientes:

  • MIG_NAME: el nombre de un MIG con una programación de escalado.
  • SCHEDULE_NAME: el nombre de la programación de escalado que quieras inhabilitar.
  • ZONE o REGION (opcional): la zona o la región en la que se encuentra tu MIG.

Volver a habilitar una programación de escalado

Para volver a habilitar una programación de escalado, usa la marca --enable-schedule.

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

Haz los cambios siguientes:

  • MIG_NAME: el nombre de un MIG con una programación de escalado.
  • SCHEDULE_NAME: el nombre de la programación de escalado que quieras volver a habilitar.
  • ZONE o REGION (opcional): la zona o la región en la que se encuentra tu MIG.

REST

Para inhabilitar o volver a habilitar las programaciones de escalado de un MIG, utiliza el método autoscalers.patch de un MIG zonal o el método regionAutoscalers.patch de un MIG regional.

Inhabilitar programaciones de escalado

En cada programación de escalado que quieras inhabilitar, asigna el valor true al campo disabled. Por ejemplo, haz la siguiente llamada para inhabilitar una programación de un MIG zonal que tenga una política de autoescalado:

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

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

Haz los cambios siguientes:

  • PROJECT: tu ID de proyecto.
  • ZONE: la zona en la que se encuentra tu MIG.
  • AUTOSCALER_NAME: el nombre de un autoscalador. Suele ser el mismo que el nombre del MIG.
  • SCHEDULE_NAME: el nombre de la programación de escalado que quieras inhabilitar.

Volver a habilitar programaciones de escalado

En cada programación de escalado que quieras volver a habilitar, define el campo disabled como false. Por ejemplo, haz la siguiente llamada para volver a habilitar una programación de un MIG zonal que tenga una política de autoescalado:

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

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

Haz los cambios siguientes:

  • PROJECT: tu ID de proyecto.
  • ZONE: la zona en la que se encuentra tu MIG.
  • AUTOSCALER_NAME: el nombre de un autoscalador. Suele ser el mismo que el nombre del MIG.
  • SCHEDULE_NAME: el nombre de la programación de escalado que quieras volver a habilitar.

Eliminar una programación de escalado

Elimina las programaciones de escalado de un MIG. Elimina las programaciones que ya no necesites, como las que tengan el OBSOLETE estado.

Una política de autoescalado siempre debe tener al menos una señal de escalado. Si no hay otra señal de autoescalado, no puedes eliminar todas las programaciones de escalado sin eliminar toda la política de autoescalado. Si quieres eliminar todas las programaciones de escalado, pero mantener la política de autoescalado, debes añadir al menos una señal de escalado antes de eliminar todas las programaciones.

Si quieres evitar que una programación se active y guardarla para usarla más adelante, inhabilítala. Si quieres eliminar la configuración de autoescalado de un MIG, elimina el escalador automático.

Consola

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

    Ir a Grupos de instancias

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

  3. Haz clic en Editar.

  4. Haga clic en Tamaño del grupo y escalado automático para desplegar la sección.

  5. En la sección Programaciones de escalado automático, haz clic en Gestionar.

    En el panel Programaciones de escalado se muestra la lista de las programaciones de escalado que ya tiene.

    1. Seleccione las casillas de las programaciones de escalado que quiera eliminar.
    2. En la parte superior del panel Programaciones de escalado, haz clic en Eliminar.
    3. En el cuadro de diálogo Eliminar programaciones, escribe delete y, a continuación, haz clic en Eliminar.

      Es posible que tengas que esperar unos minutos para que los cambios se apliquen. Para monitorizar el estado de tus programaciones, haz clic en Actualizar en la parte superior del panel Programaciones de escalado.

    4. Cierra el panel Programaciones de escalado haciendo clic en Hecho.

      Los cambios en las programaciones se guardan y se aplican a tu MIG.

  6. Haz clic en Guardar para salir de la página de edición.

gcloud

Para eliminar una programación de escalado, 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]

Haz los cambios siguientes:

  • MIG_NAME: el nombre de un MIG con una programación de escalado.
  • SCHEDULE_NAME: el nombre de la programación de escalado que quieras eliminar.
  • ZONE o REGION (opcional): la zona o la región en la que se encuentra tu MIG.

REST

Para eliminar programaciones de escalado de un MIG, usa el método autoscalers.patch para un MIG zonal o el método regionAutoscalers.patch para un MIG regional. En cada programación de escalado que quieras eliminar, configura la programación como null

Por ejemplo, haz la siguiente llamada para eliminar una programación de un MIG zonal que tenga una política de autoescalado:

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

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

Haz los cambios siguientes:

  • PROJECT: tu ID de proyecto.
  • ZONE: la zona en la que se encuentra tu MIG.
  • AUTOSCALER_NAME: el nombre de un autoscalador. Suele ser el mismo que el nombre del MIG.
  • SCHEDULE_NAME: el nombre de la programación de escalado que quieras eliminar.

Conceptos

En esta sección se describen los conceptos relacionados con la creación y el uso de programaciones de escalado, incluidos los ajustes de programación y los detalles sobre cómo funcionan.

Ajustes de la programación de escalado

Cuando creas y modificas las programaciones de escalado de un MIG, cada programación de escalado contiene los siguientes ajustes:

  • Número mínimo de instancias requeridas: el número de máquinas virtuales que necesitas en el MIG cuando esta programación de escalado esté activa.

    Cuando esta programación esté activa, el MIG tendrá al menos este número de VMs, pero puede tener más en función de otros ajustes de autoescalado. Además, el tamaño del MIG siempre está limitado por el número mínimo y máximo de instancias configuradas en los ajustes de autoescalado del MIG.

  • Zona horaria: la zona horaria IANA basada en la ubicación para interpretar la hora de inicio de la programación.

    La lista de valores disponibles se define en la base de datos de zonas horarias de IANA (por ejemplo, Europe/Paris). Si no se proporciona ninguna zona horaria, se usa UTC de forma predeterminada. Algunas zonas horarias de IANA aplican el horario de verano. Para saber cómo afecta el horario de verano a las programaciones de escalado, consulta Horario de verano.

  • Duración: el tiempo que quiere que esté activa la programación de escalado.

    La programación de escalado está activa desde la hora de inicio durante el periodo configurado. La duración mínima es de 5 minutos. Durante este tiempo, el escalador automático ajusta el MIG para que tenga al menos tantas VMs como las definidas en las instancias obligatorias de la programación. Una vez transcurrido el periodo especificado, si ya no se necesita la capacidad actual, el escalador automático empezará a eliminar instancias de VM tras un periodo de estabilización de 10 minutos predeterminado y después de aplicar los controles de reducción configurados.

    Las programaciones de escalado son bidireccionales. Las VMs se eliminan a la hora de parada que especifiques y el tamaño del grupo se reduce al tamaño mínimo que hayas definido, a menos que hayas especificado otras señales de autoescalado.

Cuando utilices Google Cloud CLI o REST, debes configurar la hora de inicio y la periodicidad de una programación de escalado mediante una expresión cron. Sin embargo, cuando se usa la consola Google Cloud , puedes configurar la hora de inicio y la periodicidad de una programación mediante una expresión cron o con los siguientes ajustes:

  • Hora de inicio: la hora del día en la que quieres que se active la programación de escalado.

    A la hora de inicio, la programación de escalado empieza a crear VMs siempre que el tamaño del MIG sea inferior a las instancias necesarias de la programación. Define la hora de inicio para que las nuevas VMs tengan tiempo suficiente para arrancar e inicializarse. Por ejemplo, si tu carga de trabajo tarda 10 minutos desde la creación de la VM en empezar a publicar anuncios, define la hora de inicio 10 minutos antes de la hora a la que necesites que las VMs estén listas.

  • Recurrencia: si la programación de escalado se repite y con qué frecuencia, según las siguientes opciones:

    • Una vez: una programación única que se inicia solo en la fecha seleccionada.
    • Todos los días: una programación repetitiva que empieza todos los días.
    • Todas las semanas: una programación periódica que empieza todas las semanas los días seleccionados. Por ejemplo, de lunes a viernes.
    • Todos los meses: una programación periódica que empieza todos los meses en los días del mes seleccionados (por ejemplo, el primer día de cada mes). Los últimos días del mes (del 29 al 31) solo son efectivos durante los meses en los que se dan esos días.

Expresiones cron

La hora de inicio y la periodicidad de una programación de escalado se pueden configurar mediante una expresión cron. Cron es un programador de tareas basado en el tiempo que se usaba originalmente en sistemas operativos de ordenadores similares a Unix.

Sintaxis

Una expresión cron es una cadena que consta de cinco o seis campos separados por espacios. En la siguiente tabla se definen los campos de una expresión cron y los valores posibles de 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 (de domingo a sábado) o 1-7 (de lunes a domingo)

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

o cada año (*) si no se proporciona

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 los campos del día del mes, del día de la semana y del año (si se incluye) se definen como *, la programación se inicia todos los días.
- intervalo Si el campo del día de la semana se define como 1-5 o Mon-Fri, la programación se inicia de lunes a viernes todas las semanas.
, list Si el campo del mes se define como 5,7,9 o May,Jul,Sep, la programación se inicia en mayo, julio y septiembre.
/ paso Si el campo del mes se define como */3, la programación empieza durante el primer mes y cada tres meses después: enero, abril, julio y octubre.

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

  • Los espacios en blanco se usan para separar los campos de una expresión cron. Recuerda que no debes añadir espacios en blanco adicionales en un campo que utilice caracteres especiales.
  • Si especifica tanto un día de la semana como un día del mes (cuando ninguno de los campos se ha definido como *), la programación usará la unión de estos valores, no la intersección. Por ejemplo, la programación 0 8 1 * Mon empieza a las 8:00 todos los lunes y el primer día de cada mes. Esa programación no empieza a las 8:00 solo los lunes que también sean 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 quieres que una programación se inicie todos los meses excepto mayo, puedes definir el campo de mes como 1-4,6-12 (una lista de dos intervalos sin espacios en blanco).
  • Cuando se usan intervalos (-), no se pueden usar 0-7 ni Sun-Sun en el campo del día de la semana. Para especificar todos los días de la semana, usa *, 0-6, 1-7, Sun-Sat o Mon-Sun.
  • Cuando uses pasos (/), recuerda que las expresiones cron no tienen estado, por lo que los pasos pueden ser desiguales. Por ejemplo, si quieres que una programación se ejecute cada 6 horas, puedes definir el campo de horas como */6, que funciona igual que si se enumeraran todos los múltiplos de 6 válidos (0,6,12,18). Los pasos son iguales porque las 24 horas se dividen en partes de 6 horas. Sin embargo, si asignas el valor */7 al campo de horas, la programación no siempre se iniciará en intervalos de 7 horas. En su lugar, */7 se comporta igual que si se enumeraran todos los múltiplos de 7 válidos (0,7,14,21), lo que significa que la programación puede empezar a las 00:00, las 07:00, las 14:00 y las 21:00.

Programaciones periódicas y programaciones únicas

En función de cómo escribas la expresión cron, tu programación se ejecutará una vez o se repetirá periódicamente. Para crear una programación 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 una programación para que se inicie solo una vez, a medianoche del 30 de enero del 2030. Para crear una programación que se repita, usa caracteres especiales para describir cuándo debe repetirse. Por ejemplo, la expresión cron 30 8 * * Mon-Fri configura una programación para que empiece a las 8:30 todos los lunes, martes, miércoles, jueves y viernes.

Información sobre el estado de la programación

Enumera tus programaciones de escalado para ver su estado. Una programación de escalado tiene la siguiente información de estado:

  • Estado (state): estado actual de la programación de escalado, representado por uno de los siguientes estados:
    • Lista (READY): esta programación está lista, pero aún no está activa. La herramienta de escalado automático está esperando la próxima vez que se produzca esta programación.
    • Activa (ACTIVE): esta programación está activa. El escalador automático intenta proporcionar a este MIG al menos las instancias necesarias que especifica esta programación.
    • Obsoleto (OBSOLETE): esta programación ha caducado y no volverá a estar activa. El escalador automático está ignorando esta programación porque no hay ocurrencias futuras.
    • Inhabilitada (DISABLED): esta programación no puede estar activa porque se ha inhabilitado manualmente. El escalador automático ignorará esta programación hasta que se vuelva a habilitar.
  • Última vez que se ha producido (lastStartTime): marca de tiempo de la última vez que se activó esta programación de escalado. Esta es la fecha y la hora reales de la última activación. Por ejemplo, si tienes una programación de escalado inhabilitada con una recurrencia diaria, una hora de inicio a las 10:00 y una duración de 2 horas, y vuelves a habilitar la programación a las 11:00 de hoy, la lastStartTime será a las 11:00 de hoy.
  • Próxima ocurrencia (nextStartTime): marca de tiempo de la próxima vez que se active esta programación.

Programaciones que se solapan

En función de la hora de inicio, la periodicidad, la duración y la zona horaria, es posible que se solapen dos o más programaciones de escalado. Cuando hay más de una agenda activa, el autoescalador usa el mayor número de instancias de VM necesarias de todas las agendas de escalado activas. De esta forma, te aseguras de que siempre haya capacidad suficiente para satisfacer las necesidades de cualquier programación activa. Por ejemplo, si tienes una programación que se repite todos los días de 8:00 a 10:00 y que requiere al menos 10 VMs, pero también tienes una programación única de todo el día que requiere al menos 20 VMs, la herramienta de escalado automático escala el MIG a al menos 20 VMs ese día. Esto resulta útil cuando tienes requisitos de capacidad periódicos, pero a veces necesitas más para gestionar eventos puntuales. Este comportamiento te permite programar la capacidad sin preocuparte de que otros programas con requisitos de VM más pequeños la anulen.

Además, una herramienta de escalado automático siempre proporciona el mayor número de instancias de VM que requiera cualquier señal de escalado automático activa. Para obtener más información, consulta Usar una política de autoescalado con varias señales.

Horario de verano

Los detalles del horario de verano varían en función de la zona horaria IANA basada en la ubicación de tu programación de escalado. Si la zona horaria de tu programación aplica el horario de verano, la hora de inicio de la programación se ajustará automáticamente para mantenerse sincronizada con la hora de la ubicación seleccionada. Por ejemplo, si creas una programación de escalado que empiece todos los días a las 7:00 en la zona horaria America/New_York, esta programación se iniciará cuando sean las 7:00 en Nueva York, según la hora de verano del este o la hora estándar del este.

Las programaciones de escalado siempre se ejecutan durante todo el periodo que configures, pero pueden tener horas de inicio y finalización ligeramente diferentes los días en los que se cambia al horario de verano. Esto ocurre porque los cambios de horario de verano tienen periodos de transición: un periodo que se omite el primer día del horario de verano y que se produce dos veces el último día. Por ejemplo, si el horario de verano de tu zona horaria empieza a las 2:00 y tiene una transición de 1 hora, el reloj cambia de las 1:59:59 a las 3:00, por lo que se omite el periodo comprendido entre las 2:00 y las 2:59:59. Si el horario de verano de esa zona horaria termina a las 2:00, el reloj cambia de las 2:59:59 a las 2:00, por lo que el periodo comprendido entre las 2:00 y las 2:59:59 se repite. En las siguientes instrucciones se da por supuesto que la zona horaria de tu programación usa una transición de 1 hora al horario de verano.

El primer día del horario de verano (cuando se salta una hora), las programaciones de escalado experimentan los siguientes cambios:

  • Las programaciones que estén activas durante la hora que se salta seguirán ejecutándose durante toda su duración, pero, para compensar la hora que se salta, estas programaciones finalizarán una hora más tarde que su hora de finalización en los días sin cambios de horario. Normalmente, la hora de finalización de una programación es la suma de la hora de inicio y la duración de la programación. Sin embargo, si el horario de verano se adelanta una hora mientras una programación está activa y la duración y la hora de inicio se mantienen constantes, la hora de finalización de esa programación será una hora más que la suma de la hora de inicio y la duración de la programación.
  • Las programaciones configuradas para que se inicien durante la hora que se ha saltado también se inician una hora más tarde de lo que estaba previsto los días en los que no se cambia al horario de verano.

El último día del horario de verano (cuando se repite una hora), los horarios de escalado experimentan los siguientes cambios:

  • Las programaciones que estén activas durante la hora repetida seguirán ejecutándose durante toda su duración, pero, para compensar la hora repetida, estas programaciones finalizarán una hora antes de la hora de finalización de los días sin cambios de horario. Normalmente, la hora de finalización de una programación es la suma de la hora de inicio y la duración de la programación. Sin embargo, si el horario de verano se repite una hora mientras una programación está activa y la duración y la hora de inicio se mantienen constantes, la hora de finalización de esa programación será una hora menos que la suma de la hora de inicio y la duración de la programación.
  • Las programaciones que se configuran para que se inicien durante el periodo de transición se inician a la hora configurada, pero no se reinician durante la segunda repetición de la hora de inicio.

La mayoría de las zonas horarias que aplican el horario de verano usan un periodo de transición de una hora. Sin embargo, si la zona horaria de tu programación usa un periodo de transición diferente (por ejemplo, la zona horaria Australia/Lord_Howe, que usa transiciones de 30 minutos), puedes esperar el mismo comportamiento. Solo tienes que sustituir 1 hour por la hora de transición al horario de verano correspondiente.

Siguientes pasos