Crea grupos de instancias administrados

Un grupo de instancias administrado contiene instancias idénticas que puedes administrar como una única entidad en una sola zona. Los grupos de instancias administrados mantienen la alta disponibilidad de las aplicaciones porque mantienen las instancias disponibles de forma proactiva, es decir, en estado RUNNING. Estos grupos admiten el ajuste de escala automático, el balanceo de cargas, las actualizaciones progresivas, la reparación automática y más.

Puedes crear grupos de instancias administrados regionales que contengan instancias en varias zonas dentro de la misma región. Para obtener información sobre los grupos de instancias, consulta la Descripción general de grupos de instancias.

Para obtener más información sobre los grupos de instancias, consulta la Descripción general de grupos de instancias.

Antes de comenzar

Limitaciones

  • Cada grupo de instancias administrado puede contener hasta 1,000 instancias de VM.
  • Cuando se actualiza un grupo de instancias administrado, no se pueden especificar más de 1,000 instancias en una sola solicitud.

Usa grupos de instancias administrados para aplicaciones sin estado

Los grupos de instancias administrados están diseñados para admitir aplicaciones sin estado que no dependen de un estado específico de las instancias de VM subyacentes para ejecutarse. Esto permite funciones como el ajuste de escala automático y la reparación automática, en las que el grupo de instancias administrado puede borrar y volver a crear instancias automáticamente. Además, si se borra una instancia en un grupo de instancias administrado debido a la acción de un usuario, como parte del ajuste de escala automático, o debido al mantenimiento de infraestructura cuando la instancia no se establece como migración en vivo, este grupo volverá a crear de forma automática la instancia con un disco persistente raíz nuevo.

Debido a la naturaleza sin estado de los grupos de instancias administrados, debes diseñar o actualizar la aplicación para que no dependa de propiedades de instancia específicas que no sean persistentes, como una dirección IP o datos en la memoria. Asimismo, el comportamiento predeterminado para los discos persistentes de inicio es borrarlos cuando se borra la instancia de VM correspondiente a fin de que no dependas de los discos de inicio como datos persistentes en un grupo de instancias administrado.

Como práctica recomendada para conservar los datos, Google recomienda que actualices con regularidad las imágenes de SO, utilices secuencias de comandos de inicio y crees copias de seguridad de los datos en otra ubicación centralizada, como Google Cloud Storage.

En las plantillas de instancias, puedes especificar una imagen de contenedor o una imagen personalizada, y secuencias de comandos de inicio relevantes para que, cuando se recree una instancia, tenga instaladas las aplicaciones de software necesarias y acceso a los datos requeridos. Para obtener más recomendaciones sobre la creación de plantillas de instancias, consulta las Plantillas de instancia deterministas.

Para guardar los discos asociados con los grupos de instancias administrados, inhabilita la opción disks.autoDelete para evitar que se borren los discos persistentes. Si se elimina la instancia que utiliza el disco (por ejemplo, si el escalador automático reduce el grupo o si borras la instancia de forma manual), debes limpiar manualmente los discos restantes, si así lo deseas.

Crea un grupo de instancias administrado

Antes de crear un grupo de instancias administrado, debes crear una plantilla de instancias a fin de especificar la imagen del sistema operativo o de contenedor y la configuración para cada instancia en el grupo.

Luego de crear la plantilla, crea el grupo de instancias administrado con Google Cloud Platform Console, la herramienta de gcloud compute o la API.

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página Grupos de instancias

  2. Haz clic en Crear un grupo de instancias.
  3. Ingresa un nombre para el grupo de instancias administrado y selecciona la zona donde quieres ubicar el grupo.
  4. En Tipo de grupo, selecciona Grupo de instancias administrado.
  5. En Plantilla de instancias, selecciona una plantilla de instancias. Si no hay plantillas disponibles, crea una plantilla de instancias.
  6. Especifica la cantidad de instancias que quieres crear en el grupo. De manera opcional, puedes habilitar el ajuste de escala automático para que el grupo agregue o quite instancias de forma automática según el uso de CPU de la instancia o la reparación automática para realizar la verificación de estado en instancias dentro del grupo.
  7. Haz clic en Crear para crear el grupo nuevo.

gcloud

Crea un grupo de instancias con el comando instance-groups managed create:

gcloud compute instance-groups managed create [NAME] \
    --base-instance-name [BASE_NAME] \
    --size [SIZE] \
    --template [INSTANCE_TEMPLATE] \
    --zone [ZONE]

donde reemplazarías los siguientes elementos:

  • [NAME] con el nombre para este grupo de instancias
  • [BASE_NAME] con el nombre para usar en instancias creadas en este grupo de instancias. Como estas instancias son idénticas, se les asigna una string aleatoria como parte del nombre. El nombre base se antepone a esta string aleatoria. Por ejemplo, si el nombre base fuera example, las instancias tendrían nombres como example-yahs, example-qtyz y así sucesivamente
  • [SIZE] con el tamaño del grupo de instancias
  • [INSTANCE_TEMPLATE] con el nombre de la plantilla de instancias para usar en este grupo
  • [ZONE] es una de las zonas disponibles de Compute Engine

    Por ejemplo, el siguiente comando crearía un grupo de instancias denominado example-group, cuyo nombre base de instancia es test. El grupo contiene tres instancias:

    gcloud compute instance-groups managed create example-group
    --base-instance-name test
    --size 3
    --template an-instance-template

API

En la API, crea una solicitud POST para el servicio instanceGroupManagers. En el cuerpo de la solicitud, incluye el nombre y el tamaño del grupo, el nombre base para las instancias en el grupo y la URL para la plantilla de instancias que desees.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

{
  "baseInstanceName": "[BASE_NAME]",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/[INSTANCE_TEMPLATE]"
    }
  ],
  "name": "[NAME]",
  "targetSize": [SIZE]
}

donde reemplazarías los siguientes elementos:

  • [PROJECT_ID] con el ID del proyecto para la solicitud
  • [ZONE] con la zona para la solicitud
  • [NAME] con el nombre para este grupo de instancias
  • [BASE_NAME] con el nombre para usar en instancias creadas en este grupo de instancias. Como estas instancias son idénticas, se les asigna una string aleatoria como parte del nombre. El nombre base se antepone a esta string aleatoria. Por ejemplo, si el nombre base fuera example, las instancias tendrían nombres como example-yahs, example-qtyz y así sucesivamente
  • [SIZE] con el tamaño del grupo de instancias
  • [INSTANCE_TEMPLATE] con la plantilla de instancias para usar en este grupo

Recupera grupos existentes y descripciones de grupo

Puedes obtener información sobre los grupos de instancias administrados existentes con Console, la herramienta de línea de comandos de gcloud o la API. Para obtener el id del grupo, debes usar gcloud o la API.

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página Grupos de instancias

    En la página se detallan los grupos de instancias que tengas. Ten en cuenta que también se detallan los grupos de instancias no administrados.

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

gcloud

Genera una lista de todos los grupos de instancias administrados dentro de un proyecto:

gcloud compute instance-groups managed list

Para obtener información sobre un grupo específico, ejecuta el siguiente comando:

gcloud compute instance-groups managed describe [INSTANCE_GROUP] \
    --zone [ZONE]

API

Para obtener una lista de todos los grupos de instancias administrados dentro de una zona, crea una solicitud GET para el servicio instanceGroupManagers:

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

A fin de obtener información sobre un grupo específico, crea una solicitud GET para el servicio instanceGroupManagers y también incluye el nombre de un grupo de instancias administrado específico:

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

En cambio, en los grupos de instancias administrados regionales (multizona), usa el recurso regionInstanceGroupManagers: regionInstanceGroupManagers.list y regionInstanceGroupManagers.get.

Cambia la plantilla de instancias de un grupo de instancias administrado

Puedes cambiar la plantilla de instancias de un grupo de instancias administrado sin aplicar cambios en las instancias existentes. El grupo de instancias administrado utiliza la plantilla nueva cuando realizas una solicitud para agregar o volver a crear instancias, pero la plantilla no actualiza el grupo existente de forma automática. Esto te permite controlar cuáles son exactamente las instancias actualizadas, pero hace que el grupo tenga instancias diferentes.

Luego de crear una plantilla de instancias nueva, cambia la plantilla para el grupo de instancias existente.

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias donde quieres cambiar la plantilla de instancias.
  3. Haz clic en Editar grupo para modificar este grupo de instancias administrado.
  4. En Plantilla de instancias, selecciona la plantilla nueva que quieres usar en este grupo.
  5. Haz clic en Guardar para aplicar la plantilla nueva.

gcloud

Para usar el método set-instance-template a fin de actualizar una plantilla, pasa la plantilla nueva al subcomando instance-groups managed set-instance-template:

gcloud compute instance-groups managed set-instance-template [INSTANCE_GROUP] \
    --template [INSTANCE_TEMPLATE] \
    --zone [ZONE]

API

Crea una solicitud para el servicio instanceGroupManagers con el nombre del grupo de instancias administrado de destino. Incluye la URL de la plantilla de instancias nueva en el cuerpo de la solicitud:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers[INSTANCE_GROUP]/setInstanceTemplate

{
 "instanceTemplate": "global/instanceTemplates/[INSTANCE_TEMPLATE]
}

Luego de cambiar la plantilla de instancias, vuelve a crear las instancias individuales o actualiza todas las instancias en el grupo con una actualización progresiva.

Cambia el tamaño de un grupo de instancias administrado de forma automática

Puedes configurar grupos de instancias administrados para agregar o quitar automáticamente instancias 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 el Ajuste de escala automático de grupos de instancias.

Cambia el tamaño de un grupo de instancias administrado de forma manual

Si un grupo de instancias administrado todavía no está configurado en ajuste de escala automático, puedes cambiar de forma manual el tamaño de un grupo para modificar la cantidad de instancias. Si aumentas el tamaño, el grupo de instancias administrado utiliza la plantilla de instancias actual para agregar instancias nuevas. Si disminuyes el tamaño, el grupo borra las instancias. El grupo borra instancias con una currentAction de DELETING, CREATING y RECREATING antes de borrar las instancias que se están ejecutando sin acciones programadas.

Si el grupo forma parte de un servicio de backend que tiene habilitado el desvío de conexión, pueden transcurrir hasta 60 segundos después de la duración del desvío de conexión hasta que se quite o borre la instancia de VM.

Utiliza Google Cloud Platform Console, la herramienta de gcloud compute o la API para cambiar el tamaño del grupo de instancias administrado.

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página 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 grupo 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 agregará o quitará de forma automática instancias según sea necesario. Sin embargo, puedes cambiar los valores 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

Utiliza este comando:

gcloud compute instance-groups managed resize [INSTANCE_GROUP ] \
    --size [NEW_SIZE] \
    --zone [ZONE]

API

Crea una solicitud para el servicio instanceGroupManagers con el nombre del grupo de instancias administrado de destino. Especifica el tamaño de la instancia nueva como un parámetro.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resize?size=[NEW_SIZE]

Después de realizar una solicitud para cambiar el tamaño de un grupo de instancias administrado, las instancias comienzan o se detienen en cuento el sistema puede aprovisionarlas o borrarlas. Este proceso puede tardar una cantidad de tiempo significativa dependiendo 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

De forma predeterminada, si falla la creación inicial de una instancia de máquina virtual, el grupo de instancias administrado intenta de forma constante crear cada instancia, hasta que esta se cree correctamente. Sin embargo, si no quieres realizar reintentos de creación automática, puedes inhabilitar el modo de reintento de creación con el marcador --nocreation-retries 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, el grupo de instancias administrado no creará esta instancia y, en cambio, disminuirá el tamaño de destino del grupo.

Este modo solo se aplica durante el primer intento de creación de una instancia. Si una instancia se crea de forma correcta mientras este modo está habilitado, esta se comporta de la misma manera que todas las demás instancias creadas con una solicitud de cambio de tamaño regular. En particular, si una instancia en ejecución se cierra inesperadamente en un momento posterior y se necesita volver a crearla, este modo no afecta el comportamiento de recreación en esa situación.

El modo de reintento de creación inhabilitado es especialmente útil en situaciones en las que los sistemas crean de forma automática grupos de instancias donde no se requiere una cantidad exacta de instancias. Es posible que prefieras estabilizar rápidamente el tamaño del grupo de instancias administrado y ser flexible en la cantidad de instancias en el grupo, en lugar de esperar indefinidamente hasta que se creen todas las instancias solicitadas, que pueden retrasarse de forma temporal o permanente por errores de cuota o problemas no relacionados.

Para cambiar el tamaño de un grupo de instancias administrado con el modo de reintentos de creación inhabilitado, utiliza la herramienta de gcloud compute o la API.

gcloud

Con la herramienta de línea de comandos de gcloud, ejecuta el comando resize con el marcador --no-creation-retries:

gcloud beta compute instance-groups managed resize [INSTANCE_GROUP] --size [NEW_SIZE] \
    --nocreation-retries \
    --zone [ZONE]

API

Crea una solicitud para el servicio instanceGroupManagers con el nombre del grupo de instancias administrado de destino. Especifica el tamaño de la instancia nueva y el campo noCreationRetries en el cuerpo de la solicitud.

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resizeAdvanced

{
 "targetSize": [SIZE]
 "noCreationRetries": true
}

Puedes ver cuáles son las instancias que se están creando y en qué modo mediante el uso del método listManagedInstances. Las instancias que se crean con el modo de reintentos de creación inhabilitado tendrán una currentAction de CREATING_WITHOUT_RETRIES.

Configura la verificación de estado y reparación automática para grupos de instancias administrados

Para mejorar la disponibilidad de la aplicación y verificar que responde, puedes configurar una política de reparación automática para el grupo de instancias administrado. Una política de reparación automática se basa en una verificación de estado de la aplicación para comprobar que una aplicación responde según lo esperado. Verificar la respuesta de una aplicación es más preciso que verificar si una instancia está en estado RUNNING.

Si la reparación automática determina que una aplicación no responde, el grupo de instancias administrado vuelve a crear de forma automática esa instancia. En el caso de una instancia interrumpible, el grupo vuelve a crear la instancia cuando los recursos necesarios vuelven a estar disponibles.

Puedes usar indicadores de verificación de estado para comprobar que se cree una instancia y que su aplicación responda. Cuando una instancia administrada está en el proceso de creación, su currentAction es CREATING. Si se adjunta una política de reparación automática, una vez que se cree la instancia administrada y se esté ejecutando, esta procede a realizar una currentAction de VERIFYING, y el verificador de estado comienza a sondear la aplicación de la instancia. Si la aplicación pasa esta verificación de estado inicial dentro del tiempo que tarda el inicio de la aplicación, se verifica la instancia y su currentAction cambia a NONE. Cuando conectas primero una verificación de estado a un grupo de instancias administrado, pueden transcurrir 15 minutos hasta que se complete la verificación. Consulta la documentación Verifica el estado de instancias en un grupo de instancias administrado para obtener más información.

Puedes establecer una política de reparación automática para un grupo de instancias administrado.

Como ejemplo de cómo usar una verificación de estado en un grupo de instancias administrado, sigue las instrucciones a continuación para crear una verificación que compruebe la respuesta del servidor web en el puerto 80. Luego, aplicarás esa verificación de estado a un grupo de instancias administrado para garantizar que los servidores web en ese grupo funcionen de forma correcta:

Console

  1. Crea una verificación de estado para que la reparación automática sea más conservadora que la verificación de estado del balanceo de cargas.

    Por ejemplo, crea una verificación de estado que busque una respuesta en el puerto 80 y que pueda tolerar algunas fallas antes de marcar las instancias como UNHEALTHY y deban volver a crearse. En este ejemplo, una instancia se marca en buen estado si se muestra de forma correcta una vez. Se marca en mal estado si no se muestra de forma correcta 3 veces consecutivas.

    1. Ve a la página Crear una verificación de estado en GCP Console.

      Ir a la página Crear una verificación de estado

    2. Nombra la verificación de estado, como example-check.
    3. En Protocolo, selecciona HTTP si no está seleccionado.
    4. En Puerto, ingresa 80.
    5. En Intervalo de verificación, ingresa 5.
    6. En Tiempo de espera, ingresa 5.
    7. Establece un umbral en buen estado para determinar la cantidad de verificaciones correctas consecutivas que debe haber hasta que una instancia en mal estado se marque en buen estado. Ingresa 1 para esta instancia.
    8. Establece un umbral en mal estado para determinar la cantidad de verificaciones incorrectas consecutivas que debe haber hasta que una instancia en buen estado se marque en mal estado. Ingresa 3 para esta instancia.
    9. Haz clic en Crear para crear una verificación de estado.
  2. Crea una regla de firewall para permitir que la verificación de estado sondee la conexión a la aplicación.

    Los sondeos de la verificación de estado provienen de direcciones en los rangos 130.211.0.0/22 y 35.191.0.0/16, así que asegúrate de que las reglas de firewall de la red permitan la conexión de la verificación de estado. En este ejemplo, el grupo de instancias administrado utiliza la red default, y sus instancias escuchan en el puerto 80. Si el puerto 80 no está abierto en la red predeterminada, crea una regla de firewall.

    1. Ve a la página Crear una regla de firewall en GCP Console.

      Ir a la página Crear una regla de firewall

    2. En Nombre, ingresa un nombre para la regla de firewall (por ejemplo, allow-health-check).
    3. En Red, selecciona la red default.
    4. En Filtro de origen, selecciona IP ranges.
    5. En Rangos de IP de origen, ingresa 130.211.0.0/22 y 35.191.0.0/16.
    6. En Protocolos y puertos, selecciona Protocolos y puertos especificados y, luego, ingresa tcp:80.
    7. Haz clic en Crear.
  3. Aplica la verificación de estado mediante la configuración de una política de reparación automática para el grupo de instancias administrado regional o zonal.

    1. Ve a la página Grupos de instancias en GCP Console.

      Ir a la página Grupos de instancias

    2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias donde quieres aplicar la verificación de estado.
    3. Haz clic en Editar grupo para modificar este grupo de instancias administrado.
    4. En Reparación automática, selecciona la verificación de estado que creaste anteriormente.
    5. Cambia o mantiene la configuración Retraso inicial. Esta configuración retrasa la reparación automática para que no se lleve a cabo una potencial recreación prematura de la instancia si esta está en proceso de inicio. El temporizador de retraso inicial comienza cuando la currentAction de la instancia es VERIFYING.
    6. Haz clic en Guardar para aplicar los cambios.

    Pueden transcurrir varios minutos hasta que la reparación automática comience a supervisar las instancias en el grupo.

gcloud

  1. Crea una verificación de estado para que la reparación automática sea más conservadora que la verificación de estado del balanceo de cargas.

    Por ejemplo, crea una verificación de estado que busque una respuesta en el puerto 80 y que pueda tolerar algunas fallas antes de marcar las instancias como UNHEALTHY y deban volver a crearse. En este ejemplo, una instancia se marca en buen estado si se muestra de forma correcta una vez. Se marca en mal estado si no se muestra de forma correcta 3 veces consecutivas.

    gcloud compute health-checks create http example-check --port 80 \
        --check-interval 30s \
        --healthy-threshold 1 \
        --timeout 10s \
        --unhealthy-threshold 3
    
  2. Crea una regla de firewall para permitir que la verificación de estado sondee la conexión a la aplicación.

    Los sondeos de la verificación de estado provienen de direcciones en los rangos 130.211.0.0/22 y 35.191.0.0/16, así que asegúrate de que las reglas de firewall permitan la conexión de la verificación de estado. En este ejemplo, el grupo de instancias administrado utiliza la red default, y sus instancias escuchan en el puerto 80. Si el puerto 80 no está abierto en la red predeterminada, crea una regla de firewall.

    gcloud compute firewall-rules create allow-health-check \
        --allow tcp:80 \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --network default
    
  3. Aplica la verificación de estado mediante la configuración de una política de reparación automática para el grupo de instancias administrado regional o zonal.

    Utiliza el comando update para aplicar la verificación de estado en el grupo de instancias administrado.

    La configuración initial-delay retrasa la reparación automática para que no se lleve a cabo una potencial recreación prematura de la instancia si esta está en proceso de inicio. El temporizador de retraso inicial comienza cuando la currentAction de la instancia es VERIFYING.

    Por ejemplo:

    gcloud compute instance-groups managed update my-mig \
        --health-check example-check \
        --initial-delay 300 \
        --zone us-east1-b
    

    Pueden transcurrir 15 minutos hasta que la reparación automática comience a supervisar las instancias en el grupo.

API

  1. Crea una verificación de estado para que la reparación automática sea más conservadora que la verificación de estado del balanceo de cargas.

    Por ejemplo, crea una verificación de estado que busque una respuesta en el puerto 80 y que pueda tolerar algunas fallas antes de marcar las instancias como UNHEALTHY y deban volver a crearse. En este ejemplo, una instancia se marca en buen estado si se muestra de forma correcta una vez. Se marca en mal estado si no se muestra de forma correcta 3 veces consecutivas.

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks
    
    {
     "name": "example-check",
     "type": "http",
     "port": 80,
     "checkIntervalSec": 30,
     "healthyThreshold": 1,
     "timeoutSec": 10,
     "unhealthyThreshold": 3
    }
    
  2. Crea una regla de firewall para permitir que la verificación de estado sondee la conexión a la aplicación.

    Los sondeos de la verificación de estado provienen de direcciones en los rangos 130.211.0.0/22 y 35.191.0.0/16, así que asegúrate de que las reglas de firewall permitan la conexión de la verificación de estado. En este ejemplo, el grupo de instancias administrado utiliza la red default, y sus instancias escuchan en el puerto 80. Si el puerto 80 no está abierto en la red predeterminada, crea una regla de firewall.

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls
    
    {
     "name": "allow-health-check",
     "network": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default",
     "sourceRanges": [
      "130.211.0.0/22",
      "35.191.0.0/16"
     ],
     "allowed": [
      {
       "ports": [
        "80"
       ],
       "IPProtocol": "tcp"
      }
     ]
    }
    
  3. Aplica la verificación de estado mediante la configuración de una política de reparación automática para el grupo de instancias administrado regional o zonal.

    Una política de reparación automática forma parte de un recurso instanceGroupManager o regionInstanceGroupManager.

    Puedes configurar una política de reparación automática con el método insert o patch.

    En el siguiente ejemplo, se configura una política de reparación automática con el método instanceGroupManagers.patch.

    PATCH https://www.googleapis.com/compute/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]
    {
      "autoHealingPolicies": [
        {
          "healthCheck": "global/healthChecks/example-check",
          "initialDelaySec": 300
        }
      ],
    }
    

    La configuración initialDelaySec retrasa la reparación automática para que no se lleve a cabo una potencial recreación prematura de la instancia si esta está en proceso de inicio. El temporizador de retraso inicial comienza cuando la currentAction de la instancia es VERIFYING.

    Pueden transcurrir varios minutos hasta que la reparación automática comience a supervisar las instancias en el grupo.

    Para desactivar la reparación automática de la aplicación, configura la política de reparación automática con un valor vacío, autoHealingPolicies[]. El grupo de instancias administrado solo volverá a crear las instancias que no tengan estado RUNNING.

    Puedes obtener la política de reparación automática de un grupo de instancias administrado mediante la lectura del campo instanceGroupManagers.autoHealingPolicies. Puedes obtener un recurso de grupo de instancias administrado con uno de los siguientes métodos:

Comportamiento de la reparación automática

La reparación automática vuelve a crear instancias en mal estado mediante el uso de la plantilla de instancias original que se utilizó para crear la instancia de VM (no necesariamente la plantilla de instancias actual en el grupo de instancias administrado). Por ejemplo, si una instancia de VM se creó con instance-template-a y, luego, actualizas el grupo de instancias administrado para usar instance-template-b en el modo OPPORTUNISTIC, la reparación automática seguirá utilizado instance-template-a para volver a crear la instancia. Esto se debe a que las recreaciones de reparación automática no las inicia el usuario, por lo que Compute Engine no quiere suponer que la instancia de VM debería usar la plantilla nueva. Si quieres aplicar una plantilla nueva, consulta la documentación Cambia la plantilla de instancias de un grupo de instancias administrado.

En un momento determinado, la cantidad de instancias simultáneamente reparadas de forma automática es menor que el tamaño del grupo de instancias administrado. Esto garantiza que el grupo continúa ejecutando un subconjunto de instancias incluso si, por ejemplo, la política de reparación automática no ajusta la carga de trabajo, las reglas de firewall están mal configuradas o hay problemas de conectividad de red o infraestructura que identifiquen de forma errónea una instancia en buen estado como en mal estado. Sin embargo, si un grupo de instancias administrado zonal solo tiene una instancia o un grupo de instancias administrado regional solo tiene una instancia por zona, la reparación automática volverá a crear estas instancias cuando tengan mal estado.

La reparación automática no volverá a crear una instancia UNHEALTHY durante el período de inicialización de la instancia, como lo especifica la propiedad autoHealingPolicies[].initialDelaySec. La configuración retrasa la reparación automática para que no se lleve a cabo la verificación y, potencialmente, la recreación prematura de la instancia si esta está en proceso de inicio. El temporizador de retraso inicial comienza cuando la instancia tiene una currentAction de VERIFYING.

Reparación automática y discos

Cuando se vuelve a crear una instancia basada en su plantilla, la reparación automática maneja diferentes tipos de discos de manera diferente. Algunas configuraciones de disco pueden causar una falla en la reparación automática cuando intenta volver a crear una instancia administrada.

Tipo de disco autodelete Comportamiento durante una operación de reparación automática
Disco persistente nuevo true Se vuelve a crear el disco según lo especificado en la plantilla de la instancia. Se perderá cualquier dato escrito en ese disco cuando se vuelva a crear el disco y su instancia.
Disco persistente nuevo false Se conserva el disco y se vuelve a conectar cuando la reparación automática vuelve a crear la instancia.
Disco persistente existente true Se borra el disco antiguo. La recreación de instancia de VM falla porque Compute Engine vuelve a conectar un disco borrado en la instancia.
Disco persistente existente false Se vuelve a conectar el disco antiguo según lo especificado en la plantilla de instancias. Se conservan los datos en el disco. Sin embargo, para los discos de lectura-escritura existentes, un grupo de instancias administrado puede tener solo una VM porque no se puede conectar un disco persistente a varias instancias en modo de lectura-escritura.
Disco SSD local nuevo No corresponde Se vuelve a crear el disco según lo especificado en la plantilla de la instancia. Se perderán los datos en el disco SSD local cuando se vuelva a crear o borrar la instancia.

La reparación automática no vuelve a conectar los discos que no se especificaron en la plantilla de la instancia, como los discos que conectaste a una VM de forma manual luego de que se creó la VM.

Para conservar los datos importantes escritos en un disco, toma las siguientes precauciones:

  • Realiza instantáneas del disco persistente con regularidad.

  • Exporta los datos a otra fuente, como Cloud Storage.

Si las instancias tienen la configuración importante que quieres conservar, Google también recomienda que utilices una imagen personalizada en la plantilla de instancia que contiene la configuración personalizada que necesitas para que cuando se vuelva a crear una instancia, el grupo de instancias administrado utilice la imagen personalizada que especificaste.

Visualiza el historial de operaciones de reparación automática

Puedes usar la herramienta de gcloud o la API para ver los eventos de reparación automática anteriores.

gcloud

Utiliza el comando gcloud compute operations list con un filtro para ver solo los eventos de reparación automática en el proyecto.

gcloud compute operations list --filter='operationType~compute.instances.repair.*'

Para obtener más información sobre una operación de reparación específica, utiliza el comando describe. Por ejemplo:

gcloud compute operations describe repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5 --zone us-east1-b

API

Para los grupos de instancias administrados, envía una solicitud GET al recurso operations de la zona y, luego, incluye un filtro a fin de definir el alcance de la lista de resultado para los eventos compute.instances.repair.*.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/operations?filter=operationType+%3D+%22compute.instances.repair.*%22

Para los grupos de instancias administrados regionales, utiliza el recurso operations de la región, en lugar del recurso de la zona.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/region/[REGION]/operations?filter=operationType+%3D+%22compute.instances.repair.*%22

A fin de obtener más información sobre una operación de reparación específica, envía una solicitud GET para esa operación específica.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/operations/repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5

Identifica instancias que forman parte de un grupo

Para ver una lista de instancias en un grupo, consulta la documentación Recupera los grupos existentes y descripciones de grupo.

Para verificar si una instancia específica actualmente forma parte de un grupo, puedes usar Console o la API.

Console

  1. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en una instancia para acceder a los detalles de la instancia de VM.
  3. Si la instancia de VM forma parte de un grupo de instancias administrado, el nombre de ese grupo aparecerá con el encabezado En uso por. Si la instancia de VM no forma parte de un grupo, el encabezado En uso por no aparecerá en la página de detalles de la instancia.

API

Consulta la documentación Visualiza referencias a instancias de VM.

Además, para identificar si una instancia formó o forma parte de un grupo de instancias administrado, busca estas dos claves de metadatos en los metadatos de la instancia:

  • instance-template indica la plantilla a partir de la cual se creó la instancia.
  • created-by indica el grupo de instancias administrado que creó la instancia.

Incluso si descartas la instancia, esta seguirá teniendo estas entradas de metadatos, a menos que las quites manualmente.

Por ejemplo, si había una instancia denominada random-instance-biy y querías saber si un grupo de instancias administrado creó la instancia, puedes describirla y buscar las claves de metadatos anteriores. Por ejemplo:

gcloud compute instances describe random-instance-biy --zone us-central1-f

gcloud muestra una respuesta similar a esta:

canIpForward: false
cpuPlatform: Intel Ivy Bridge
creationTimestamp: '2016-08-24T14:11:38.012-07:00'
disks:
- autoDelete: true
  boot: true
  deviceName: persistent-disk-0
  index: 0
  interface: SCSI
  kind: compute#attachedDisk
...[snip]...
metadata:
  items:
  - key: instance-template
    value: projects/123456789012/global/instanceTemplates/example-it
  - key: created-by
    value: projects/123456789012/zones/us-central1-f/instanceGroupManagers/igm-metadata

Borra instancias individuales de un grupo

Puedes borrar instancias individuales en un grupo de instancias administrado. Borrar instancias reduce el targetSize especificado del grupo de instancias y quita instancias en 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, 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, detiene el escalador automático antes de intentar borrar las instancias.

Si el grupo forma parte de un servicio de backend que tiene habilitado el desvío de conexión, pueden transcurrir hasta 60 segundos después de la duración del desvío de conexión hasta que se quite o borre la instancia de VM.

Utiliza Google Cloud Platform Console, la herramienta de gcloud compute o la API para borrar instancias de un grupo de instancias administrado.

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias 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 lista, selecciona una o más instancias que quieres borrar.
  4. Haz clic en Borrar. Se borran las instancias seleccionadas.

gcloud

Para borrar una instancia con gcloud, utiliza el subcomando instance-groups managed delete-instances:

gcloud compute instance-groups managed delete-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

Crea una solicitud para el servicio instanceGroupManagers con el nombre del grupo de instancias administrado de destino. En el cuerpo de la solicitud, incluye las URL de una o más instancias que quieres borrar.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/deleteInstances

{
 "instances": [
  "zones/[ZONE]/instances/example-instance-i3n2",
  "zones/[ZONE]/instances/example-instance-l6n1"
 ]
}

Después de realizar una solicitud para borrar instancias en un grupo de instancias administrado, las instancias se detienen en cuento 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 de las instancias en el grupo de instancias administrado.

Descarta instancias de un grupo

Puedes separar una instancia de un grupo de instancias administrado para depurar de forma más sencilla los problemas con instancias individuales sin afectar al grupo completo. Descartar una instancia de un grupo también la quita de los balanceadores de cargas que fueron asignados al grupo de instancias administrado. No se quitan los grupos de destino asignados de forma manual a instancias individuales específicas.

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 eliminando instancias de forma automática según sea necesario.

Si el grupo forma parte de un servicio de backend que tiene habilitado el desvío de conexión, pueden transcurrir hasta 60 segundos después de la duración del desvío de conexión hasta que se quite o borre la instancia de VM.

Utiliza Google Cloud Platform Console, la herramienta de gcloud compute o la API para descartar instancias de un grupo de instancias administrado.

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página 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 lista, selecciona 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 sin borrar la instancia, utiliza el subcomando abandon-instances.

gcloud compute instance-groups managed abandon-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

Crea una solicitud para el servicio instanceGroupManagers con el nombre del grupo de instancias administrado de destino. En el cuerpo de la solicitud, incluye las URL de una o más instancias que quieres descartar.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/abandonInstances

{
 "instances": [
  "zones/[ZONE]/instances/example-instance-i3n2",
  "zones/[ZONE]/instances/example-instance-l6n1"
 ]
}

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 de las instancias en el grupo de instancias administrado.

Vuelve a crear instancias en el grupo

La recreación de la instancia borra las instancias especificadas y crea nuevas con la plantilla asignada al grupo de instancias administrado.

Utiliza este método para actualizar las instancias seleccionadas a fin de que usen la plantilla de instancias más reciente. En cambio, si debes volver a crear todas las instancias en un grupo de instancias administrado, inicia una actualización progresiva.

Si el grupo forma parte de un servicio de backend que tiene habilitado el desvío de conexión, pueden transcurrir hasta 60 segundos después de la duración del desvío de conexión hasta que se quite o borre la instancia de VM.

Utiliza la herramienta gcloud compute o la API para volver a crear instancias seleccionadas en un grupo de instancias administrado.

gcloud

Utiliza el subcomando instance-groups managed recreate-instances.

gcloud compute instance-groups managed recreate-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

Crea una solicitud para el servicio instanceGroupManagers con el nombre del grupo de instancias administrado de destino. En el cuerpo de la solicitud, incluye las URL de una o más instancias que quieres volver a crear.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/recreateInstances

{
 "instances": [
  "zones/[ZONE]/instances/example-instance-i3n2",
  "zones/[ZONE]/instances/example-instance-l6n1"
 ]
}

Después de realizar una solicitud para volver a crear instancias en un grupo de instancias administrado, las instancias nuevas se inician en cuento el sistema puede aprovisionarlas. Este proceso puede tardar una cantidad de tiempo significativa dependiendo de la cantidad de instancias que vuelves a crear. Verifica el estado de las instancias en el grupo de instancias administrado.

Verifica el estado de instancias en un grupo de instancias administrado

Varios comandos y solicitudes crean, borran y modifican instancias en un grupo de instancias administrado. Esas operaciones se muestran como DONE una vez que el grupo programó acciones para crear, borrar o actualizar esas instancias. Sin embargo, esto no significa que se crearon, borraron o actualizaron las instancias hasta que se completen esas acciones subyacentes. Debes verificar el estado de estas instancias o el estado del grupo con la herramienta gcloud compute o la API.

Verifica el estado de instancias

gcloud

Utiliza el comando instance-groups managed list-instances a fin de generar una lista de instancias en el grupo y las acciones actuales para esas instancias.

gcloud compute instance-groups managed list-instances [INSTANCE_GROUP] \
    --zone [ZONE]

Por ejemplo:

gcloud compute instance-groups managed list-instances example-group \
    --zone [ZONE]
NAME               STATUS  ACTION   LAST_ERROR
example-group-0gnk RUNNING NONE
example-group-15xy         CREATING Error QUOTA_EXCEEDED: Instance 'example-group-15xy' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0
example-group-18ep         CREATING Error QUOTA_EXCEEDED: Instance 'example-group-18ep' creation failed: Quota 'CPUS' exceeded.  Limit: 24.0, Error QUOTA_EXCEEDED: Instance 'example-group-18ep' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0
example-group-1u1y         CREATING

En este ejemplo, example-group contiene cuatro instancias: una instancia que se está ejecutando, dos instancias que intentaron crearse, pero no se pudo debido a las cuotas de dirección y CPU, y una instancia que se está creando y no encuentra ningún error.

En los grupos de instancias interrumpibles, si la capacidad interrumpible no está disponible, las acciones de creación fallarán y tendrán el error: ZONE_RESOURCE_POOL_EXHAUSTED. Para ver los eventos de interrupción, consulta la documentación Detecta si se interrumpió una instancia.

Espera hasta que las instancias estén estables

Puedes usar el comando instance-groups managed wait-until-stable para verificar de forma automática un grupo de instancias y hacer esperar a la secuencia de comandos hasta que todas las instancias en el grupo estén estables.

gcloud compute instance-groups managed wait-until-stable example-group \
    --zone [ZONE]

API

Crea una solicitud para el servicio instanceGroupManagers y especifica el nombre del grupo de instancias administrado que contiene las instancias que quieres verificar.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/listManagedInstances

Por ejemplo:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instanceGroupManagers/example-group/listManagedInstances

La solicitud obtiene la siguiente respuesta:

{
 "managedInstances": [
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-0gnk",
   "id": "16960422116594945029",
   "instanceStatus": "RUNNING",
   "currentAction": "NONE"
  },
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-15xy",
   "currentAction": "CREATING",
   "lastAttempt": {
    "errors": {
     "errors": [
      {
       "code": "QUOTA_EXCEEDED",
       "message": "Instance 'example-group-15xy' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0"
      }
     ]
    }
   }
  },
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-18ep",
   "currentAction": "CREATING",
   "lastAttempt": {
    "errors": {
     "errors": [
      {
       "code": "QUOTA_EXCEEDED",
       "message": "Instance 'example-group-18ep' creation failed: Quota 'CPUS' exceeded.  Limit: 24.0"
      },
      {
       "code": "QUOTA_EXCEEDED",
       "message": "Instance 'example-group-18ep' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0"
      }
     ]
    }
   }
  },
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-1u1y",
   "id": "7239700230861444556",
   "instanceStatus": "RUNNING",
   "currentAction": "CREATING"
  }
 ]
}

En este ejemplo, example-group contiene cuatro instancias: una instancia que se está ejecutando, dos instancias que intentaron crearse, pero no se pudo debido a las cuotas de dirección y CPU, y una instancia que se está creando y no encuentra ningún error.

En los grupos de instancias interrumpibles, si la capacidad interrumpible no está disponible, las acciones de creación fallarán y tendrán el error: ZONE_RESOURCE_POOL_EXHAUSTED. Para ver los eventos de interrupción, consulta la documentación Detecta si se interrumpió una instancia.

Verifica el estado del grupo

En el nivel del grupo, Compute Engine propaga un campo de solo lectura denominado status que contiene un marcador isStable, al que puedes acceder con la herramienta de gcloud compute o con la API.

gcloud

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

gcloud muestra información detallada sobre el grupo de instancias, incluido el campo status.isStable.

API

En la API, realiza una solicitud POST al siguiente URI:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP_NAME]/get

Si el grupo de instancias es un grupo de instancias administrado regional, reemplaza zones/[ZONE] con regions/[REGION].

La API muestra información detallada sobre el grupo de instancias, incluso el campo status.isStable.

Puedes verificar si un grupo de instancias administrado tiene buen estado y si se está ejecutando mediante la comprobación del valor del campo status.isStable del recurso asociado instanceGroupManagers o regionInstanceGroupManagers.

El estado status.isStable establecido en false indica que los cambios están activos, pendientes o que el grupo de instancias administrado se está modificado.

El estado status.isStable establecido en true indica los siguientes estados:

  • Ninguna de las instancias en el grupo de instancias administrado está experimentando algún tipo de cambio y la currentAction para todas es NONE.
  • No hay cambios pendientes para las instancias en el grupo de instancias administrado.
  • El grupo de instancias administrado en sí no se está modificando.

Los grupos de instancias administrados se pueden modificar de varias maneras. Por ejemplo:

  • Realizas una solicitud para implementar una plantilla de instancias nueva.
  • Realizas una solicitud para crear, borrar, cambiar el tamaño o actualizar las instancias en el grupo.
  • Un escalador automático solicita cambiar el tamaño del grupo.
  • Un recurso de reparación automática reemplaza una o más instancias en mal estado en el grupo de instancias administrado.
  • En un grupo de instancias administrado regional, se redistribuyen algunas de las instancias.

Cuando todas las acciones finalicen, el estado status.isStable se establece en true nuevamente para ese grupo de instancias administrado.

También puedes usar el comando gcloud beta compute instance-groups managed wait-until con el marcador --stable para esperar hasta que el estado status.isStable se establezca en true en el grupo:

gcloud beta compute instance-groups managed wait-until INSTANCE_GROUP_NAME \
    --stable \
    [--zone [ZONE] | --region [REGION]]

Borra un grupo de instancias administrado

Cuando borras un grupo de instancias administrado con Google Cloud Platform Console o gcloud, también se eliminan todas las instancias en el grupo y cualquier escalador automático conectado. Si debes conservar alguna de las instancias en este grupo de instancias administrado, primero descarta las instancias para quitarlas del grupo. Luego, borra (delete) el grupo de instancias administrado.

Antes de que puedas borrar un grupo de instancias administrado con la API, primero debes emitir solicitudes separadas para borrar los escaladores automáticos conectados.

Utiliza Google Cloud Platform Console, la herramienta de gcloud compute o la API para borrar un grupo de instancias administrado completo y sus instancias.

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página Grupos de instancias

  2. Selecciona uno o más grupos de la lista que quieres borrar.
  3. Haz clic en Borrar para borrar el grupo y todas las instancias en el grupo de instancias administrado.

gcloud

Utiliza el subcomando instance-groups managed delete.

gcloud compute instance-groups managed delete [INSTANCE_GROUP] \
    --zone [ZONE]

API

Crea una solicitud DELETE para el servicio instanceGroupManagers y especifica el nombre del grupo de instancias administrado que quieres borrar.

DELETE https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

Crea grupos de instancias interrumpibles

Puedes usar grupos de instancias administrados para crear varias instancias interrumpibles con rapidez, que pueden reducir los costos de las instancias en los grupos de instancias administrados. Por ejemplo, puedes crear un grupo de instancias interrumpibles, usarlas para ejecutar una tarea de procesamiento por lotes y, luego, borrar el grupo cuando se complete la tarea.

Para crear un grupo de instancias interrumpibles, configura la opción interrumpible en una plantilla de instancias y, luego, utiliza la plantilla para crear el grupo de instancias administrado.

Console

  1. Ve a la página Plantillas de instancias en GCP Console.

    Ir a la página Plantillas de instancias

  2. Haz clic en Plantilla de instancias nueva.
  3. Completa las propiedades que quieres para la plantilla de instancias.
  4. Haz clic en Mostrar opciones avanzadas para expandir la sección Políticas de disponibilidad.
  5. Configura la opción Prioridad en Activado.
  6. Haz clic en Crear para crear la plantilla.
  7. Utiliza esta plantilla para crear un grupo de instancias administrado.

gcloud

En gcloud compute, crea una plantilla de instancias con el comando instance-templates create. Incluye el marcador --preemptible.

gcloud compute instance-templates create [INSTANCE_TEMPLATE] \
    --preemptible

Luego de crear la plantilla de instancias, úsala para crear un grupo de instancias administrado.

API

Utiliza el método instanceTemplates().insert para crear una plantilla de instancias nueva. Incluye la propiedad preemptible en scheduling y configúrala como true.

{
"name": "[INSTANCE_TEMPLATE]",
"properties": {
  "machineType": "zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "scheduling":
  {
    "preemptible": true
  },
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
      }
    }
  ]
  }
}

Luego de crear la plantilla de instancias, úsala para crear un grupo de instancias administrado.

Agrega un grupo de instancias administrado a un balanceador de cargas

El balanceo de cargas de Google Cloud Platform utiliza grupos de instancias administrados y no administrados para entregar tráfico. En función del tipo de balanceador de cargas que utilices, puedes agregar grupos de instancias a un grupo de destino o servicio de backend. Para obtener más información sobre el balanceo de cargas, consulta la documentación Selecciona un balanceador de cargas.

Agrega un grupo de instancias administrado a un servicio de backend

Un servicio de backend es necesario para crear un protocolo HTTP(S), un proxy SSL, un proxy TCP o un balanceador de cargas interno. Un servicio de backend contiene backends individuales que tienen un grupo de instancias, ya sea administrado o no. Las instancias del grupo responden al tráfico del balanceador de cargas. El servicio de backend, a su vez, detecta las instancias que puede usar, la cantidad de tráfico que pueden manejar y el tráfico que manejan en el momento. Además, este servicio supervisa la verificación de estado y no envía conexiones nuevas a instancias en mal estado.

Si quieres obtener instrucciones para agregar un grupo de instancias a un servicio de backend, consulta la documentación Agrega grupos de instancias a un servicio de backend.

Agrega un grupo de instancias administrado a un grupo de destino

Un grupo de destino es un objeto que contiene una o más instancias de máquinas virtuales. Un grupo de destino se utiliza en el balanceo de cargas de red, en el que el balanceador de cargas de red reenvía las solicitudes del usuario al grupo de destino conectado. Las instancias que forman parte de ese grupo de destino entregan estas solicitudes y muestran una respuesta. Puedes agregar un grupo de instancias administrado a un grupo de destino para que cuando se agreguen o quiten instancias del grupo de instancias, el grupo de destino también se actualice automáticamente con los cambios.

El grupo de destino debe existir antes de que puedas agregar un grupo de instancias administrado a uno de destino. Para obtener más información, consulta la documentación sobre Agrega un grupo de destino.

Sigue estas instrucciones para agregar un grupo de instancias administrado existente a un grupo de destino. Esto agrega todas las instancias de VM que forman parte del grupo de instancias administrado al grupo de destino.

Console

  1. Ve a la página Grupos de destino en GCP Console.

    Ir a la página Grupos de destino

  2. Haz clic en el grupo de destino en el que quieres agregar el grupo de instancias.
  3. Haz clic en el botón Editar.
  4. Desplázate hacia la sección Instancias de VM y haz clic en Seleccionar grupos de instancias.
  5. Selecciona un grupo de instancias en el menú desplegable.
  6. Guarda los cambios.

gcloud

Con la herramienta de línea de comandos de gcloud, utiliza el comando set-target-pools:

gcloud compute instance-groups managed set-target-pools [INSTANCE_GROUP] \
    --target-pools [TARGET_POOL,..] [--zone ZONE]

donde:

  • [INSTANCE_GROUP] es el nombre del grupo de instancias.
  • [TARGET_POOL] es el nombre de uno o más grupos de destino en los que se agrega el grupo de instancias.
  • [ZONE] es la zona del grupo de instancias.

API

En la API, realiza una solicitud POST al siguiente URI:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

donde:

  • [PROJECT_ID] es el ID del proyecto para esta solicitud.
  • [ZONE] es la zona para el grupo de instancias.
  • [INSTANCE_GROUP] es el nombre del grupo de instancias.

El cuerpo de la solicitud debe contener una lista de URI para los grupos de destino en los que quieres agregar este grupo. Por ejemplo:

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

Asigna puertos con nombre para grupos de instancias administrados

Los puertos con nombre son pares clave:valor que representan un nombre de servicio y el número de puerto en el que se ejecuta el servicio. Los servicios de balanceo de cargas usan puertos con nombre para dirigir el tráfico a puertos específicos en instancias individuales. Por ejemplo, si configuras un puerto con nombre como http:80 y, luego, configuras el servicio de backend para enviar tráfico a un puerto denominado http, el balanceo de cargas reenviará el tráfico al puerto 80 de instancias individuales que forman parte del grupo de instancias.

Los puertos con nombre son metadatos simples que utiliza el balanceo de cargas. Los puertos con nombre no controlan recursos de red o de firewall en Compute Engine.

Puedes asignar varios puertos para cada nombre de servicio y varios nombres de servicio a cada puerto. Sin embargo, ten en cuenta que un servicio de backend específico solo puede reenviar tráfico a un puerto con nombre a la vez.

Console

  1. Ve a la página Grupos de instancias en GCP Console.

    Ir a la página Grupos de instancias

  2. Haz clic en el nombre del grupo de instancias en el que quieres especificar puertos con nombre. Se abrirá una página con las propiedades del grupo de instancias.
  3. Haz clic en Editar grupo para modificar este grupo de instancias administrado.
  4. Haz clic en Especificar la asignación del nombre de puerto para expandir las opciones de puertos con nombre.
  5. Haz clic en Agregar elemento y, luego, ingresa el nombre de puerto deseado y los números de puerto que quieres asociar con ese nombre. Haz clic en Agregar elemento de nuevo para agregar entradas adicionales si es necesario.
  6. Haz clic en Guardar para guardar los cambios y aplicar los puertos con nombre a las instancias del grupo de instancias administrado.

gcloud

Configura uno o más puertos con nombre con el comando set-named-ports:

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
  --named-ports [PORT_NAME]:[PORT],[PORT_NAME]:[PORT]

Por ejemplo:

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
  --named-ports name1:80,name2:8080

A fin de asignar varios puertos a cada nombre de servicio o varios nombres por cada servicio, crea más de una entrada para cada nombre o puerto. Por ejemplo, asigna name1 a los puertos 10, 20 y 80. A continuación, asigna name2 y name3 al puerto 80. Por último, asigna el puerto 9000 a name4.

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
  --named-ports name1:10,name1:20,name1:80,\
                name2:8080,name3:8080,\
                name4:9000

Verifica las asignaciones de puertos con nombre para un grupo de instancias administrado con el comando get-named-ports:

gcloud compute instance-groups managed get-named-ports [INSTANCE_GROUP]
NAME  PORT
name1 10
name1 20
name1 80
name2 8080
name3 8080
name4 9000

API

La API de Instance Group Manager no ofrece un método de API setNamedPorts; sin embargo, puedes usar la API de Instance Group para realizar esta tarea.

Crea una solicitud para la API de Instance Group y también incluye el nombre de un grupo de instancias. Obtén información sobre un grupo específico a fin de obtener el valor fingerprint para el grupo de instancias. Incluye el valor fingerprint y uno o más pares de valores namedPorts en el cuerpo de la solicitud:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroups/[INSTANCE_GROUP]/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  },
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  }
 ]
}

Por ejemplo:

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 80
  },
  {
   "name": "name2",
   "port": 8080
  }
 ]
}

Si quieres asignar varios puertos a cada nombre de servicio, crea varias entradas para ese nombre de servicio. Por ejemplo, puedes asignar los puertos 10, 20 y 80 a name1. También asigna el puerto 8080 a name2.

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 10
  },
  {
   "name": "name1",
   "port": 20
  }
  {
   "name": "name1",
   "port": 80
  }
  {
   "name": "name2",
   "port": 8080
  }
  {
   "name": "name3",
   "port": 80
  }
  {
   "name": "name4",
   "port": 8080
  }
 ]
}

Para obtener una lista de los puertos con nombre que ya están asignados a un grupo de instancias administrado, crea una solicitud GET que apunte al grupo:

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

Información sobre los campos instanceTemplate y versions

Cuando creas un grupo de instancias administrado, proporcionas una plantilla de instancias que el grupo utiliza para crear instancias de VM individuales. De manera predeterminada, Compute Engine describe la plantilla de instancias utilizada en dos propiedades de API separadas: la propiedad instanceTemplate principal y la propiedad versions. Por ejemplo, en el siguiente grupo de instancias administrado, observa que se propagaron los campos instanceTemplate y versions:

{

 "name": "example-group",
 "zone": "zones/us-central1-a",
 "instanceTemplate": "global/instanceTemplates/example-it",
 "versions": [
  {
   "name": "v3",
   "instanceTemplate": "global/instanceTemplates/example-it",
   "targetSize": {
    "calculated": 3
   }
  }
 ]...
}

Compute Engine propaga de forma automática el campo instanceTemplate principal y el campo versions para la compatibilidad con versiones anteriores. Recomendamos que especifiques el campo versions y omitas el campo instanceTemplates principal cuando sea posible. Sin embargo, si el código de la aplicación actualmente establece el campo instanceTemplate principal, continúa siendo una solicitud válida.

Para obtener más información sobre el actualizador del grupo de instancias administrado, consulta la documentación Actualiza grupos de instancias administrados.

Realiza una prueba canary en plantillas de instancias con un grupo de instancias administrado (avanzado)

Es posible crear un grupo de instancias administrado donde hay dos grupos de VM que usan plantillas de instancias diferentes. Por ejemplo, es posible que quieras crear un grupo de instancias administrado que tenga 20 instancias de VM, y 10 VM deben ejecutarse en una imagen operativa específica, mientras que el resto se ejecuta en una imagen de sistema operativo diferente. Esta función permite comparar las dos versiones diferentes de la plantilla de instancias antes de decidirte por una.

En la API, realiza una solicitud POST a la siguiente URL:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

El cuerpo de la solicitud debe omitir el campo instanceTemplates principal, pero debe contener la propiedad versions con dos plantillas de instancias establecidas. En cada objeto versions, debes especificar una plantilla de instancias. También debes especificar targetSize para uno de los objetos versions, pero no para ambos. Por ejemplo, la siguiente solicitud crea un grupo de instancias donde la mitad de las instancias de VM utilizan la plantilla de instancias example-template y la otra mitad utiliza la plantilla small-machine-type:

{
  "baseInstanceName": "example-instances",
  "name": "example-group",
  "targetSize": 5,
  "versions":
  [
    {
      "instanceTemplate": "global/instanceTemplates/example-template",
      "targetSize":
      {
        "percent": 50
      }
    },
   {
     "instanceTemplate": "global/instanceTemplates/small-machine-type"
   }
  ]
}

IAM y grupos de instancias administrados

Todas las operaciones que realiza Compute Engine como parte de un grupo de instancias administrado se llevan a cabo con la cuenta de servicio de las API de Google del proyecto. Esta cuenta de servicio por proyecto tiene una dirección de correo electrónico como esta:

[PROJECT_ID]@cloudservices.gserviceaccount.com

donde:

  • [PROJECT_ID] es el ID numérico del proyecto correspondiente.

La cuenta de servicio de las API de Google es diferente a la cuenta de servicio predeterminada de Compute Engine.

Depende de ti asegurarte de que la cuenta de servicio que utiliza el grupo de instancias administrado tenga suficientes privilegios para crear instancias de máquinas virtuales basadas en la plantilla de instancias. En particular, esto significa que a la cuenta de servicio se le debe otorgar la función compute.instanceAdmin.v1 y, de forma opcional, la función serviceAccountUser, para crear y administrar instancias en el grupo de instancias. Solo se requiere la función serviceAccountUser si el grupo de instancias administrado crea instancias que se puedan ejecutar como una cuenta de servicio. Además, ten presente que otros procesos, incluido Deployment Manager, utilizan esta cuenta.

Cuando creas un grupo de instancias administrado o actualizas una plantilla de instancias, Compute Engine valida que la cuenta de servicio de las API de Google tiene la función y el permiso que se mencionan a continuación.

  • Función serviceAccountUser en la plantilla de instancias, si quieres crear instancias que se pueden ejecutar en una cuenta de servicio.
  • Permiso para todos los recursos a los que se hace referencia en las plantillas de instancias, como imágenes, discos, redes de VPC y subredes.

Para obtener más información sobre las cuentas de servicio, consulta la Descripción general de cuentas de servicio.

Actualiza todas las instancias en un grupo de instancias administrado

Consulta la documentación Actualiza grupos de instancias administrados.

Soluciona problemas

Mi grupo de instancias administrado sigue sin poder crear una instancia. ¿A qué se debe?

Hay varios problemas que pueden evitar que el grupo de instancias cree o vuelva a crear una instancia de forma correcta. Estos son algunos problemas comunes:

  • El grupo de instancias administrado está intentando crear o volver a crear la instancia y el disco persistente de inicio, pero el disco persistente ya existe. De forma predeterminada, se crean discos persistentes de inicio nuevos cuando se crean instancias nuevas. Estos discos tienen el mismo nombre que la instancia. Si una instancia se denomina my-awesome-instance, el disco también se denomina my-awesome-instance. Si ya existe un disco persistente con ese nombre, la solicitud falla. Borra el disco persistente existente para resolver este problema.

  • La plantilla de instancias estableció la opción disks.autoDelete en false para los discos persistentes de inicio, de modo que cuando se borró una instancia (por ejemplo, debido a la reparación automática), el disco persistente no se eliminó. Cuando el grupo de instancias administrado intentó volver a crear la instancia con el mismo nombre, detectó el mismo problema de que ya existe un disco persistente con el mismo nombre. Borra el disco persistente existente a fin de resolver el problema inmediato y actualiza la plantilla de instancias para establecer disks.autoDelete en true si quieres que los discos persistentes de inicio se borren junto con la instancia.

  • La plantilla de instancias podría no ser válida. Si actualizaste la plantilla de instancias recientemente, podría haber una propiedad no válida que genere que el grupo de instancias administrado falle en la creación de instancias. A continuación, se detallan propiedades que podrían no ser válidas:

    • Especificaste un recurso que no existe, como una imagen de origen.
    • Escribiste mal el nombre de un recurso.
    • Intentaste conectar discos persistentes adicionales que no son de inicio en modo lectura-escritura. Como los grupos de instancias contienen varias instancias, cualquier disco adicional que desees compartir entre todas las instancias del grupo solo se pueden conectar en modo de solo lectura.

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Compute Engine