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 las VMs suspendidas y detenidas en un MIG.
  • 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 APIs de Trusted Cloud by S3NS . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

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

    Console

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

    gcloud

    1. Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI ejecutando el siguiente comando:

      gcloud init
    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 gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

      Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada.

      Create local authentication credentials for your user account:

      gcloud auth application-default login

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

      Instala Google Cloud CLI y, luego, accede a 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 Trusted 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 el grupo de forma horizontal y el retraso inicial.

Console

  1. En la consola de Trusted 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, ingresa 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 de espera. Usa el bloque standby_policy para establecer una demora inicial y configurar el modo en SCALE_OUT_POOL.

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

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 método instanceGroupManager.patch 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.s3nsapis.fr/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 por regions/REGION y especifica la región del 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 Trusted 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 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]

Reemplaza lo siguiente:

  • MIG_NAME: Es el nombre del MIG en el que se suspenderá una instancia.
  • SUSPENDED_SIZE: Es 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 de destino para las VMs suspendidas y detenidas. Para establecer los tamaños de destino, usa los argumentos target_suspended_size y target_stopped_size.

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

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 método instanceGroupManager.patch 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.s3nsapis.fr/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: Es 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?