Agrega y quita VM en un MIG


Después de que hayas creado un grupo de instancias administrado (MIG), te recomendamos agregar o quitar VMs en ese grupo para satisfacer las necesidades de tu carga de trabajo. Si alcanzaste el valor predeterminadolimit para conocer la cantidad máxima de VMs que puedes agregar a un MIG y necesitas más VMs, puedes aumentar el límite de tamaño del MIG

Para agregar o quitar VM en un MIG, puedes hacer lo siguiente:

Antes de comenzar

  • 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 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 Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. 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.

      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 proporcionas a la CLI de gcloud.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.

Establece el tamaño objetivo del grupo

Puedes configurar el tamaño objetivo de un MIG de forma automática mediante un escalador automático o configurarlo de forma manual.

Agrega y quita VMs de forma automática en un MIG

Puedes configurar los grupos de instancias administrados para que agreguen o quiten VMs de forma automática en función de las cargas de trabajo. Las aplicaciones pueden manejar fácilmente los aumentos de tráfico, y puedes reducir los costos cuando se necesiten menos recursos de procesamiento. Para comenzar a escalar los grupos de instancias administrados, consulta Crea un MIG con ajuste de escala automático.

Si quieres obtener más información, consulta Ajuste de escala automático para grupos de instancias.

Configura el tamaño de un MIG de forma manual

Si un grupo de instancias administrado aún no se configuró para que escale de forma automática, puedes cambiar el tamaño del grupo manualmente para cambiar la cantidad de instancias. Si aumentas el tamaño, el grupo de instancias administrado usa la plantilla de instancias actual para agregar instancias nuevas. Si disminuyes el tamaño, el grupo de instancias administrado borra las VM. El grupo borra las instancias con un currentAction de DELETING, CREATING y RECREATING antes de borrar las instancias en ejecución sin acciones programadas.

Si el grupo forma parte de un servicio de backend en el que el vaciado de conexiones está habilitado, pueden transcurrir hasta 60 segundos más después de que se complete el vaciado de conexiones hasta que se quite o se borre la instancia de VM.

Console

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

    Ir a Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias donde quieres cambiar el tamaño.

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

  4. En Cantidad de instancias, especifica la cantidad que quieres incluir en el grupo de instancias administrado. Si el ajuste de escala automático está habilitado, el grupo agrega o quita instancias de forma automática, según sea necesario. Sin embargo, puedes cambiar los valores en Cantidad mínima de instancias y Cantidad máxima de instancias para ajustar de forma indirecta el tamaño del grupo mediante el escalador automático.

  5. Haz clic en Guardar para aplicar la plantilla nueva.

gcloud

Usa el comando resize.

gcloud compute instance-groups managed resize INSTANCE_GROUP_NAME \
    --size NEW_SIZE \
    --zone ZONE

REST

Llama al método resize para un recurso de MIG zonal o regional. Especifica el tamaño del grupo de instancias nuevo como parámetro.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resize?size=NEW_SIZE

Si el grupo de instancias es regional, reemplaza zones/ZONE por regions/REGION.

Luego de que realizas una solicitud para cambiar el tamaño de un grupo de instancias administrado, las VM se inician o se detienen en cuanto el sistema puede aprovisionarlas o borrarlas. Este proceso puede tomar un tiempo significativo en función de la cantidad de instancias en el grupo. Verifica el estado de las instancias en el grupo de instancias administrado.

Inhabilita el modo de reintentos de creación durante el cambio de tamaño

De forma predeterminada, si la creación inicial de una instancia de VM falla, el grupo de instancias administrado seguirá intentando crearla hasta tener éxito. Sin embargo, si no deseas usar el modo de reintentos de creación automáticos, puedes inhabilitarlo cuando cambies el tamaño del grupo de instancias. En este modo, el grupo de instancias administrado intenta crear todas las instancias solo una vez. Si hay un error durante la creación de una instancia, el grupo de instancias administrado la descarta, la quita de la lista de instancias administradas del grupo y disminuye su tamaño de destino.

Este modo solo se aplica durante el primer intento de creación de una VM. Si una VM se crea de forma correcta mientras este modo está habilitado, la VM se comportará de la misma manera que las que se crearon con una solicitud normal de cambio de tamaño. En particular, si una VM en ejecución se cierra de forma inesperada más adelante, y es necesario volver a crearla, este modo no afecta el comportamiento de recreación.

Inhabilitar el modo de reintentos de creación es útil en situaciones en las que los sistemas crean de forma automática grupos de VM que no requieren una cantidad exacta de VM. Es posible que prefieras estabilizar con rapidez el tamaño del grupo de instancias administrado y ser flexible en cuanto a la cantidad de VM del grupo, en lugar de esperar de manera indefinida hasta que se creen todas las instancias solicitadas, lo que podría retrasarse de forma temporal o permanente debido a errores de cuota o a otros problemas no relacionados.

Limitaciones

  • No puedes inhabilitar los reintentos de creación de un MIG regional con una forma de distribución objetivo EVEN.
  • Para los MIG regionales con una forma de distribución objetivo BALANCED o ANY_SINGLE_ZONE, debes inhabilitar la redistribución proactiva de instancias antes de inhabilitar el modo de reintentos de creación.
  • No puedes inhabilitar los reintentos de creación de los MIG con ajuste de escala automático.

Para cambiar el tamaño de un grupo de instancias administrado cuando el modo de reintentos de creación está inhabilitado, usa Google Cloud CLI o REST.

gcloud

Usa el comando resize beta con la marca --no-creation-retries.

gcloud beta compute instance-groups managed resize INSTANCE_GROUP_NAME \
    --size NEW_SIZE \
    --no-creation-retries \
    [--region REGION | --zone ZONE]

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del MIG cuyo tamaño deseas cambiar.
  • NEW_SIZE: Es la cantidad de instancias de ejecución en el grupo de instancias administrado.
  • ZONE: Para los MIG zonales, la zona en la que se encuentra el MIG.
  • REGION: Para los MIG regionales, la región en la que se encuentra el MIG.

REST

Para un MIG zonal, usa el método instanceGroupManagers.resizeAdvanced beta o, para un MIG regional, usa el método regionInstanceGroupManagers.resizeAdvanced beta. Especifica el tamaño del grupo nuevo y el campo noCreationRetries en el cuerpo de la solicitud.

Por ejemplo, realiza la siguiente llamada para cambiar el tamaño de un MIG zonal con el modo de reintentos de creación inhabilitado.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeAdvanced

{
 "targetSize": NEW_SIZE,
 "noCreationRetries": true
}

Reemplaza lo siguiente:

  • PROJECT_ID: ID del proyecto
  • ZONE: zona en la que se encuentra el MIG. En un MIG regional, reemplaza zones/ZONE por regions/REGION y especifica la región. Para obtener más información, consulta Acerca de los MIG regionales.
  • INSTANCE_GROUP_NAME: Es el nombre del MIG cuyo tamaño deseas cambiar.
  • NEW_SIZE: Es la cantidad de instancias en ejecución en el grupo de instancias administrado.

    Puedes usar el método listManagedInstances para ver qué instancias se están creando y en qué modo. Cuando el modo de reintentos de creación está inhabilitado, las instancias que creas tienen una currentAction de CREATING_WITHOUT_RETRIES.

Agrega, quita o abandona instancias específicas

Crea instancias con nombres específicos en MIG

Si tienes un sistema que depende de nombres específicos, puedes agregar VMs con esos nombres a un MIG existente.

Los nombres que asignes a estas instancias administradas persisten si el MIG vuelve a crear la VM. Para obtener más información sobre cómo preservar el estado de las instancias de un MIG, consulta MIG con estado.

Limitaciones

Si creas instancias con nombres específicos:

  • El ajuste de escala automático debe estar desactivado durante el proceso de creación de la instancia.
  • Debes establecer la política de actualización del MIG como oportunista.
  • Si actualizas un MIG regional, haz lo siguiente:
  • No puedes usar nombres de instancias de VM duplicados dentro de un proyecto.

Puedes usar la CLI de gcloud o REST para agregar VMs con nombres específicos a un MIG existente.

gcloud

Usa el comando instance-groups managed create-instance.

gcloud compute instance-groups managed create-instance INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    [--region REGION | --zone ZONE]

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME es el nombre del MIG regional o zonal al que se agrega una instancia nueva.
  • INSTANCE_NAME es el nombre que deseas asignar a la instancia nueva.

REST

Realiza una solicitud POST al método regionInstanceGroupManagers.createInstances. Para un grupo de instancias administrado zonal, usa el método instanceGroupManagers.createInstances. En el cuerpo de la solicitud, incluye el campo instances con nombres para una o más instancias.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/createInstances
{
  "instances": [
    {
      "name": "INSTANCE_NAME_1"
    },
    {
      "name": "INSTANCE_NAME_2"
    }
  ]
}

Borra instancias específicas de un grupo

Puedes borrar instancias de VM individuales de un grupo de instancias administrado. Cuando se borran instancias, se reduce el targetSize especificado del grupo de instancias y se quitan las VM de los grupos de destino de los que forman parte.

Borrar instancias de un grupo de instancias administrado no cambia ninguna configuración del escalador automático especificada. Si borras instancias de un grupo de instancias administrado, es posible que el escalador automático detecte un aumento en la carga de trabajo en las demás instancias y aumente el tamaño del grupo a su nivel anterior. Para evitar esto, detén el escalador automático antes de intentar borrar las instancias.

Si el grupo forma parte de un servicio de backend en el que el vaciado de conexiones está habilitado, pueden transcurrir hasta 60 segundos más después de que se complete el vaciado de conexiones hasta que se quite o se borre la instancia de VM.

Console

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

    Ir a Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias en el que quieres borrar las instancias individuales. Se abrirá una página con las propiedades del grupo de instancias y una lista de instancias incluidas en el grupo.

  3. En la sección Miembros de la lista de instancias, elige una o más instancias que quieres borrar.

  4. Haz clic en Borrar instancia. Se borran las instancias seleccionadas.

gcloud

Para borrar una instancia con la CLI de , usa el comando instance-groups managed delete-instances:

gcloud compute instance-groups managed delete-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \ 
    [--region REGION | --zone ZONE]

El comando muestra el estado de la operación por instancia:

  • Se muestra SUCCESS si la CLI de gcloud borró la instancia.
  • Se muestra FAIL para todas las instancias si alguna de las instancias que especificas en la solicitud no es miembro del grupo, si algún miembro ya se está borrando o abandonando, o si la solicitud falla por cualquier otra.
  • SKIPPED solo se muestra si usas la marca --skip-instances-on-validation-error y la instancia no es miembro del grupo o ya se está borrando o abandonando.
  • MEMBER_NOT_FOUND solo se muestra para los grupos regionales cuando la CLI de gcloud no pudo resolver la zona a partir del nombre de la instancia.

Si prevés que tu solicitud de eliminación podría entrar en conflicto con operaciones simultáneas, usa la marca --skip-instances-on-validation-error. Esta marca especifica si la solicitud debe continuar incluso si esta incluye instancias que no son miembros del grupo o que ya se están borrando o abandonando, por ejemplo, instancias que un escalador automático está borrando. De forma predeterminada, si omites esta marca y una instancia de este tipo se especifica en la solicitud, la operación falla. La operación siempre falla si la solicitud contiene un nombre de instancia con formato erróneo o una referencia a una instancia que existe en una zona o región distinta de la zona o región del grupo.

Por ejemplo, con el siguiente comando se solicita la eliminación de cuatro instancias, pero tres de ellas ya no están en el grupo:

gcloud compute instance-groups managed delete-instances example-mig \
    --instances=example-instance-1,example-instance-2,example-instance-3,example-instance-4 \
    --region=us-central1 \
    --skip-instances-on-validation-error

En este ejemplo, tres instancias no pasaron la validación, por lo que se omitieron, mientras que example-instance-3 se borró:

Updated [https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceGroupManagers/example-mig].
PROJECT          ZONE           INSTANCE               STATUS   VALIDATION_ERROR
example-project  us-central1-a  example-instance-1     SKIPPED  Cannot delete instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-1 that was already deleted.
example-project  us-central1-a  example-instance-2     SKIPPED  Cannot delete instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-2 that was already abandoned.
example-project  us-central1-a  example-instance-3     SUCCESS
example-project  us-central1-a  example-instance-4     SKIPPED  Cannot find instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-4.

Si omites la marca --skip-instances-on-validation-error y si alguna instancia no pasa la validación, no se borrará ninguna instancia:

gcloud compute instance-groups managed delete-instances example-mig \
    --instances=example-instance-1,example-instance-2,example-instance-3,example-instance-4 \
    --region=us-central1

Updated [https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceGroupManagers/example-mig].
PROJECT          ZONE             INSTANCE              STATUS
example-project  us-central1-a    example-instance-1    FAIL
example-project  us-central1-a    example-instance-2    FAIL
example-project  us-central1-a    example-instance-3    FAIL
example-project  us-central1-a    example-instance-4    FAIL

REST

Realiza una solicitud POST al método regionInstanceGroupManagers.deleteInstances. Para un grupo de instancias administrado zonal, usa el método instanceGroupManagers.deleteInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/deleteInstances

{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
   ]
}

Si prevés que tu solicitud de eliminación podría entrar en conflicto con operaciones simultáneas, usa el campo skipInstancesOnValidationError. Este campo especifica si la solicitud debe continuar incluso si esta incluye instancias que no son miembros del grupo o que ya se están borrando o abandonando, por ejemplo, instancias que un escalador automático está borrando. De forma predeterminada, si omites esta marca y una instancia de este tipo se especifica en la solicitud, la operación falla. La operación siempre falla si la solicitud contiene un nombre de instancia con formato erróneo o una referencia a una instancia que existe en una zona o región distinta de la zona o región del grupo.

Por ejemplo, la siguiente solicitud para borrar 2 instancias tendrá éxito incluso si una de las instancias ya se borró o se está borrando:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/deleteInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ],
 "skipInstancesOnValidationError": true
}

Puedes ver las instancias que se omitieron en la operación si visualizas la operación. Para los MIG regionales, usa el método regionOperations.get. Para los MIG zonales, usa el método zoneOperations.get. Las advertencias se muestran en el campo de advertencia de la operación.

Después de realizar una solicitud para borrar instancias en un grupo de instancias administrado, las instancias se detienen en cuanto el sistema puede borrarlas. Este proceso puede tardar una cantidad de tiempo significativa dependiendo de la cantidad de instancias que borres del grupo. Verifica el estado del grupo o verifica el estado de las instancias administradas.

Abandona instancias de un MIG

Puedes separar una instancia de VM de un grupo de instancias administrado para depurar con mayor facilidad los problemas de instancias individuales sin afectar al grupo en su totalidad. Cuando se descarta una instancia de un grupo, también se la quita de los balanceadores de cargas asignados al grupo de instancias administrado. No se quitan los grupos de destino asignados de forma manual a instancias individuales específicas.

No puedes volver a agregar una instancia de VM abandonada al grupo. Descartar instancias reduce el targetSize especificado del grupo de instancias, pero no cambia ninguna configuración del escalador automático. Los grupos de instancias administrados con un escalador automático continúan agregando o quitando instancias de forma automática según sea necesario. En el caso de un MIG regional con ajuste de escala automático configurado en modo ONLY_SCALE_OUT, si abandonas una instancia de VM para reducir el tamaño de destino del MIG al tamaño recomendado del escalador automático, entonces, el escalador automático puede crear una instancia de VM nueva en la misma zona de la VM abandonada. En esos casos, para evitar la creación de una nueva instancia de VM, intenta descartar la instancia de VM desde una zona diferente.

Si el grupo forma parte de un servicio de backend en el que el vaciado de conexiones está habilitado, pueden transcurrir hasta 60 segundos más después de que se complete el vaciado de conexiones hasta que se quite o se borre la instancia de VM.

Console

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

    Ir a Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias del que quieres quitar las instancias. Se abrirá una página con las propiedades del grupo de instancias y una lista de instancias incluidas en el grupo.

  3. En la sección Miembros de la lista de instancias, elige una o más instancias que quieres quitar del grupo.

  4. Haz clic en Quitar del grupo. Las instancias seleccionadas abandonan el grupo, pero siguen en ejecución fuera de este.

gcloud

Para quitar una instancia del grupo de instancias sin borrar la VM, usa el comando instance-groups managed abandon-instances.

gcloud compute instance-groups managed abandon-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \
    [--region REGION | --zone ZONE]

REST

Realiza una solicitud POST al método regionInstanceGroupManagers.abandonInstances. Para un grupo de instancias administrado zonal, usa el método instanceGroupManagers.abandonInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/abandonInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ]
}

Después de realizar una solicitud para descartar instancias de un grupo de instancias administrado, el grupo las quita lo antes posible. Verifica el estado del grupo o verifica el estado de las instancias administradas.

Aumenta el límite de tamaño del grupo

De forma predeterminada, el límite de tamaño de un MIG zonal es de 1,000 VMs y el de un MIG regional es de 2,000 VMs. Puedes aumentar estos límites a 2,000 VMs para un MIG zonal y 4,000 VMs para un MIG regional.

Para aumentar los límites, configura el campo listManagedInstancesResults del grupo como PAGINATED. Si aún necesitas más VMs en el grupo, crea varios MIG o comunícate con el equipo de asistencia.

Console

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

    Ir a Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias cuyo límite de tamaño quieres aumentar.

  3. Haz clic en Editar para modificar el grupo de instancias.

  4. Para expandir la sección de configuración avanzada, haz clic en Mostrar configuración avanzada.

  5. En Resultados de llamadas a la API de lista de instancias administradas, elige la opción Paginados.

  6. Haz clic en Guardar para aplicar los cambios.

gcloud

Para un MIG existente, usa el comando update:

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --list-managed-instances-results=PAGINATED

Para un MIG nuevo, usa el comando create:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --list-managed-instances-results=PAGINATED

Terraform

Para aumentar el límite de tamaño de un MIG, establece el argumento list_managed_instances_results en PAGINATED.

En el siguiente ejemplo, se aumenta el límite de tamaño de un MIG zonal. Para obtener más información sobre el recurso usado en la muestra, consulta 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                           = "my-igm"
  base_instance_name             = "test"
  target_size                    = 7
  zone                           = "us-central1-f"
  list_managed_instances_results = "PAGINATED"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
}

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

REST

Para un MIG zonal, usa el método instanceGroupManagers.patch o, para un MIG regional, usa el método regionInstanceGroupManagers.patch. Por ejemplo:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/regionInstanceGroupManagers/INSTANCE_GROUP_NAME

{
  "listManagedInstancesResults": "PAGINATED",
}

Para un nuevo MIG zonal, usa el método instanceGroupManagers.insert o para un MIG regional, usa el método regionInstanceGroupManagers.insert.

Si quieres volver a los resultados de lista sin página, también debes volver al límite de tamaño predeterminado del grupo. Para revertir, primero asegúrate de que el grupo no exceda su límite de tamaño predeterminado y, luego, establece el campo listManagedInstancesResults en PAGELESS.

¿Qué sigue?