Acelerar el escalado horizontal con VMs suspendidas y detenidas


En este documento se explica cómo funciona el grupo de reserva de instancias de máquina virtual (VM) suspendidas y detenidas, y cómo puedes usarlo para acelerar el escalado horizontal de un grupo de instancias gestionado (MIG).

Antes de empezar

  • Consulta la página de introducción sobre las máquinas virtuales suspendidas y detenidas en un MIG.
  • 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 .

Usar la API de MIG para el autoescalado

Te recomendamos que uses el escalador automático de Compute Engine para escalar automáticamente tu MIG. Sin embargo, si por algún motivo prefieres usar otro escalador automático, utiliza los endpoints de la API MIG para gestionar las VMs suspendidas y detenidas.

Elegir entre grupos suspendidos y detenidos

La elección entre grupos suspendidos y detenidos depende de tu caso de uso específico. Para obtener el mejor rendimiento, debe experimentar con diferentes tipos de grupo de espera en sus situaciones de escalado horizontal para determinar cuál se adapta mejor a sus necesidades. Es posible que diferentes cargas de trabajo muestren tiempos de publicación más cortos con diferentes opciones. En algunos casos, la operación de copiar el estado de la memoria del almacenamiento a la VM puede tardar más tiempo que reiniciar la VM o crear una VM desde cero.

Para encontrar el mejor enfoque, empieza por estas directrices:

  • Usa VMs suspendidas si tus VMs requieren una inicialización de memoria que lleve mucho tiempo, ya que las VMs suspendidas conservan el estado de la memoria. Asegúrate de que tu aplicación se pueda suspender y reanudar. Para mantener el estado de la memoria, se necesita almacenamiento adicional y puede que se apliquen costes adicionales.
  • Usa máquinas virtuales detenidas si la inicialización de tu máquina virtual se centra principalmente en la inicialización de los datos almacenados en los discos persistentes.

Editar la política de espera de un MIG

En esta sección se describe cómo definir el modo de grupo de espera para ampliar el grupo y el retraso inicial.

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 del grupo de instancias que quiera editar.

  3. Haz clic en Editar para modificar este grupo de instancias administrado.

  4. Haga clic en Opciones avanzadas para desplegar la sección.

  5. En la sección Grupo de espera, selecciona Escalar horizontalmente.

  6. En el campo Retraso inicial, introduce el número de segundos que el MIG debe esperar antes de suspender o detener una VM. El retraso inicial da tiempo a la secuencia de comandos de inicialización para preparar la VM para un escalado horizontal rápido.

  7. Haz clic en Guardar.

gcloud

Usa el instance-groups managed update comando y especifica el modo de operación y el retraso inicial.

gcloud compute instance-groups managed update MIG_NAME \
  --standby-policy-mode=scale-out-pool \
  --standby-policy-initial-delay=DELAY \
  [--region=REGION | --zone=ZONE]

Haz los cambios siguientes:

  • MIG_NAME: el nombre del MIG.
  • DELAY: número de segundos que debe esperar el MIG antes de suspender o detener una VM. El retraso inicial da al script de inicialización el tiempo necesario para preparar tu VM para un escalado horizontal rápido.
  • REGION: en el caso de un MIG regional, la región en la que se encuentra el MIG.
  • ZONE: en el caso de un MIG zonal, la zona en la que se encuentra el MIG.

Terraform

En el siguiente ejemplo se crea un MIG zonal con una política de espera. Usa el bloque standby_policy para definir un retraso inicial y el modo SCALE_OUT_POOL.

En el ejemplo se usa el google_compute_instance_group_manager recurso. En el caso de los MIGs regionales, usa el google_compute_region_instance_group_manager recurso.

resource "google_compute_instance_group_manager" "default" {
  name               = "standby-mig"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

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

REST

Usa el método instanceGroupManager.patch y especifica el modo de operación y el retraso inicial en el cuerpo de la solicitud. En el caso de los MIGs regionales, utiliza el método regionInstanceGroupManager.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"standbyPolicy": {
  "mode": "SCALE_OUT_POOL",
  "initialDelaySec": DELAY
}
// ...
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu proyecto.
  • ZONE: en el caso de un MIG zonal, la zona en la que se encuentra el MIG.
    • En el caso de un MIG regional, sustituye zones/ZONE por regions/REGION y especifica la región del MIG.
  • MIG_NAME: el nombre del MIG.
  • DELAY: número de segundos que debe esperar el MIG antes de suspender o detener una VM. El retraso inicial da al script de inicialización el tiempo necesario para preparar tu VM para un escalado horizontal rápido.

Cambiar el tamaño del grupo de espera de un MIG

En esta sección se describe cómo cambiar el tamaño de los grupos de espera de las VMs suspendidas y detenidas de 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 del grupo de instancias que quiera editar.

  3. Haz clic en Editar para modificar este grupo de instancias administrado.

  4. Haga clic en Opciones avanzadas para desplegar la sección.

  5. En la sección Grupo de espera, introduce los nuevos tamaños en los campos VMs suspendidas y VMs detenidas.

  6. Haz clic en Guardar.

gcloud

Usa el comando instance-groups managed update con las marcas --suspended-size y --stopped-size.

gcloud compute instance-groups managed update MIG_NAME \
--suspended-size=SUSPENDED_SIZE \
--stopped-size=STOPPED_SIZE \
[--region=REGION | --zone=ZONE]

Haz los cambios siguientes:

  • MIG_NAME: el nombre del MIG en el que se va a suspender una instancia.
  • SUSPENDED_SIZE: número de VMs suspendidas que el MIG debe mantener en cualquier momento.
  • STOPPED_SIZE: número de VMs detenidas que el MIG debe mantener en un momento dado.
  • REGION: en el caso de un MIG regional, la región en la que se encuentra el MIG.
  • ZONE: en el caso de un MIG zonal, la zona en la que se encuentra el MIG.

Terraform

En el siguiente ejemplo se crea un MIG zonal con tamaños de destino para las VMs suspendidas y detenidas. Para definir los tamaños objetivo, utilice los argumentos target_suspended_size y target_stopped_size.

En el ejemplo se usa el google_compute_instance_group_manager recurso. En el caso de los MIGs regionales, usa el google_compute_region_instance_group_manager recurso.

resource "google_compute_instance_group_manager" "default" {
  name                  = "standby-mig"
  base_instance_name    = "test"
  target_size           = 1
  target_suspended_size = 1
  target_stopped_size   = 2
  zone                  = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

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

REST

Usa el método instanceGroupManager.patch y especifica los tamaños de los grupos de VMs suspendidas y detenidas en el cuerpo de la solicitud. En el caso de los MIGs regionales, utiliza el método regionInstanceGroupManager.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"targetSuspendedSize": SUSPENDED_SIZE,
"targetStoppedSize": STOPPED_SIZE
// ...
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu proyecto.
  • ZONE: en el caso de un MIG zonal, la zona en la que se encuentra el MIG.
    • En el caso de un MIG regional, sustituye zones/ZONE por regions/REGION y especifica la región del MIG.
  • MIG_NAME: el nombre del MIG en el que se va a detener una instancia.
  • SUSPENDED_SIZE: número de VMs suspendidas que el MIG debe mantener en cualquier momento.
  • STOPPED_SIZE: número de VMs detenidas que el MIG debe mantener en un momento dado.

Siguientes pasos