Acelera el escalamiento horizontal con VMs suspendidas y detenidas

En este documento, se explica cómo funciona el grupo en espera de instancias de máquina virtual suspendidas y detenidas (VMs) y cómo puedes usar el grupo en espera para acelerar el escalamiento horizontal de un grupo de instancias administrado (MIG).

Antes de comenzar

  • Revisa la página de introducción sobre VMs suspendidas y detenidas en un MIG.
  • Si aún no lo hiciste, configura la autenticación. La autenticación verifica tu identidad para acceder a los Google Cloud servicios y las APIs. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Selecciona la pestaña según cómo planeas usar las muestras en esta página:

    Console

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

    gcloud

    1. Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:

      gcloud init

      Si usas un proveedor de identidad (IdP) externo, primero debes acceder a gcloud CLI con tu identidad federada.

  • Configura una región y una zona predeterminadas.
  • Terraform

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

    1. Instala la Google Cloud CLI.

    2. Si usas un proveedor de identidad (IdP) externo, primero debes acceder a la gcloud CLI con tu identidad federada.

    3. Si usas un shell local, crea credenciales de autenticación locales para tu cuenta de usuario:

      gcloud auth application-default login

      No es necesario que lo hagas si usas Cloud Shell.

      Si se muestra un error de autenticación y usas un proveedor de identidad (IdP) externo, confirma que accediste a gcloud CLI con tu identidad federada.

    Si deseas 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 incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.

      Instala la Google Cloud CLI.

      Si usas un proveedor de identidad (IdP) externo, primero debes acceder a la gcloud CLI con tu identidad federada.

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

Usa la API de MIG para el ajuste de escala automático

Te recomendamos que uses el escalador automático de Compute Engine para el ajuste de escala automático en tu MIG. Sin embargo, si por algún motivo prefieres usar un escalador automático diferente, usa los extremos de la API de MIG para controlar las VMs suspendidas y detenidas.

Elige entre grupos suspendidos y detenidos

La elección entre grupos suspendidos y detenidos depende de tu caso de uso específico. Para obtener mejores resultados, debes experimentar con diferentes tipos de grupos en espera para tus situaciones de escalamiento horizontal. Esto tiene como objetivo determinar cuál se adapta mejor a tus necesidades. Es posible que las diferentes cargas de trabajo muestren un tiempo más corto para entregar con diferentes opciones. En algunos casos, la operación de copiar el estado de la memoria del almacenamiento a la VM puede llevar más tiempo que reiniciar la VM o crear una VM nueva desde cero.

Para encontrar el mejor enfoque, empieza a partir de estos lineamientos:

  • Usa VM suspendidas si las VMs requieren una inicialización de memoria lenta, ya que las VMs suspendidas conservan el estado de la memoria. Asegúrate de que tu aplicación se pueda suspender y reanudar. Mantener el estado de la memoria requiere almacenamiento adicional y puede generar costos adicionales.
  • Usa las VMs detenidas si tu inicialización de la VM se centra principalmente en la inicialización de los datos almacenados en los discos persistentes.

Cambia la política en espera en un MIG

En esta sección, se describe cómo establecer el modo de grupo en espera para escalar horizontalmente el grupo y el retraso inicial.

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

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

  4. Haz clic en Opciones avanzadas para expandir la sección.

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

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

  7. Haz clic en Guardar.

gcloud

Usa el comando instance-groups managed update 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]

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre del MIG.
  • DELAY: Es la cantidad de segundos que el MIG debe esperar antes de suspender o detener una VM. El retraso inicial le da a la secuencia de comandos de inicialización el tiempo para preparar tu VM para un escalamiento horizontal rápido.
  • REGION: Para un MIG regional, la región en la que se encuentra el MIG.
  • ZONE: Para 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 en espera. Usa el bloque standby_policy para establecer un retraso inicial y configurar el modo en SCALE_OUT_POOL.

En el ejemplo, se usa el google_compute_instance_group_manager recurso. Para un MIG regional, usa el google_compute_region_instance_group_manager método.

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

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

REST

Usa el instanceGroupManager.patch método y especifica el modo de operación y el retraso inicial en el cuerpo de la solicitud. Para los MIG regionales, usa 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
}
// ...
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto.
  • ZONE: Para un MIG zonal, la zona en la que se encuentra el MIG.
    • Para un MIG regional, reemplaza zones/ZONE con regions/REGION y especifica la región de el MIG.
  • MIG_NAME: Es el nombre del MIG.
  • DELAY: Es la cantidad de segundos que el MIG debe esperar antes de suspender o detener una VM. El retraso inicial le da a la secuencia de comandos de inicialización el tiempo para preparar tu VM para un escalamiento horizontal rápido.

Cambia el tamaño del grupo en espera en un MIG

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

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

  4. Haz clic en Opciones avanzadas para expandir la sección.

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

  6. Haz clic en Guardar.

gcloud

Usa el instance-groups managed update comando 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]

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre del MIG en el que se suspenderá una instancia.
  • SUSPENDED_SIZE: La cantidad de VMs suspendidas que el MIG debe mantener en un momento determinado
  • STOPPED_SIZE: Es la cantidad de VMs detenidas que el MIG debe mantener en un momento determinado.
  • REGION: Para un MIG regional, la región en la que se encuentra el MIG.
  • ZONE: Para 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 objetivo para VMs suspendidas y detenidas. Para establecer los tamaños objetivo, usa los argumentos target_suspended_size y target_stopped_size.

En el ejemplo, se usa el google_compute_instance_group_manager recurso. Para un MIG regional, usa el google_compute_region_instance_group_manager método.

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

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

REST

Usa el instanceGroupManager.patch método y especifica los tamaños de los grupos de VM detenidas y detenidas en el cuerpo de la solicitud. Para los MIG regionales, usa 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
// ...
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto.
  • ZONE: Para un MIG zonal, la zona en la que se encuentra el MIG.
    • Para un MIG regional, reemplaza zones/ZONE por regions/REGION y especifica la región del MIG.
  • MIG_NAME: Es el nombre del MIG en el que se detendrá una instancia.
  • SUSPENDED_SIZE: La cantidad de VMs suspendidas que el MIG debe mantener en un momento determinado
  • STOPPED_SIZE: Es la cantidad de VMs detenidas que el MIG debe mantener en un momento determinado.

¿Qué sigue?