Agrupar VMs sin gestionar


Un grupo de instancias sin gestionar es un conjunto de instancias de máquina virtual que se encuentran en un mismo proyecto, zona, red de VPC y subred. Un grupo de instancias sin gestionar es útil para agrupar VMs que requieren ajustes o configuraciones individuales. Puedes usar un grupo de instancias sin gestionar en el servicio de backend de un balanceador de carga.

En el caso de las VMs que requieran ajustes de configuración coherentes, puedes usar un grupo de instancias gestionado (MIG) basado en una plantilla de instancia. Cuando sea posible, te recomendamos que uses grupos de instancias gestionados en lugar de no gestionados. Para crear un grupo de instancias gestionado, consulta Crear un MIG.

Puedes añadir cualquiera de los dos tipos de grupos de instancias como backend a un Google Cloud balanceador de carga. Para obtener más información, consulta la descripción general de Cloud Load Balancing. Para ver el número de VMs por grupo de instancias que admite Cloud Load Balancing, consulta Máquinas virtuales por grupo de instancias.

Para obtener más información sobre los grupos de instancias, consulta el resumen de los grupos de instancias.

Antes de empezar

  • Consulta la diferencia entre los grupos de instancias gestionados y sin gestionar.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

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

    Console

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

    gcloud

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

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

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

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Trabajar con grupos de instancias sin gestionar

Crear grupos

A diferencia de los grupos de instancias gestionados, los grupos de instancias no gestionados son solo colecciones de VMs distintas que no comparten una plantilla de instancia común. Solo tienes que crear un grupo y añadirle máquinas virtuales.

Consola

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

    Ir a la página Grupos de instancias

  2. Haz clic en Crear grupo de instancias.
  3. Haga clic en Nuevo grupo de instancias sin gestionar.
  4. Introduce un nombre para el grupo de instancias no gestionado.
  5. En Ubicación, selecciona una región y una zona.
  6. Seleccione una red y una subred.
  7. En Instancias de VM, selecciona las VMs que quieras añadir a este grupo.
  8. Haz clic en Crear.

gcloud

Para crear un grupo de instancias sin gestionar, usa el comando instance-groups unmanaged create:

gcloud compute instance-groups unmanaged create instance-group-name \
    --zone=zone

Haz los cambios siguientes:

  • instance-group-name: el nombre del grupo que quieras crear.
  • zone: la zona en la que quieres crear el grupo.

REST

Para crear un grupo de instancias sin gestionar con REST, envía una solicitud POST con el método instanceGroups.insert:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

{
   "name": "instance-group-name"
}

Haz los cambios siguientes:

  • instance-group-name: el nombre del grupo que quieras crear.
  • zone: la zona en la que quieres crear el grupo.
  • project-id: ID del proyecto que contiene el grupo.

Cuando creas un grupo de instancias no gestionado con la CLI de Google Cloud o REST, no se añade ninguna VM automáticamente. Puedes añadir VMs al grupo de instancias no gestionadas manualmente.

Mostrar y describir grupos

Recupera una lista de grupos de instancias sin gestionar.

Consola

En la Google Cloud consola, la página Grupos de instancias muestra los grupos de instancias no administrados y los grupos de instancias administrados.

Ir a la página Grupos de instancias

gcloud

Para enumerar todos los grupos de instancias no gestionados de tu proyecto con la CLI de Google Cloud, usa instance-groups unmanaged list:

gcloud compute instance-groups unmanaged list

Para ver información sobre un grupo de instancias sin gestionar específico, usa el comando instance-groups unmanaged describe:

gcloud compute instance-groups unmanaged describe instance-group-name \
   --zone=zone

Haz los cambios siguientes:

  • instance-group-name: nombre del grupo que se va a describir.
  • zone: la zona del grupo.

REST

Para enumerar grupos de instancias con REST, envía una solicitud GET mediante el método instanceGroups.list:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

Para obtener información sobre un grupo de instancias no gestionado específico con la API, envía una solicitud GET mediante el método instanceGroups.get:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

Haz los cambios siguientes:

  • instance-group-name: nombre del grupo que se va a describir.
  • zone: la zona del grupo.
  • project-id: ID del proyecto que contiene el grupo.

Eliminando grupos

A diferencia de los grupos de instancias gestionados, al eliminar un grupo de instancias no gestionado, no se elimina ninguna de las VMs del grupo. Al eliminar un grupo de instancias no gestionado, solo se elimina la agrupación lógica de las VMs.

No puedes eliminar un grupo de instancias si es un backend de un balanceador de carga.Google Cloud Primero debes quitar el backend del servicio de backend.

Consola

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

    Ir a la página Grupos de instancias

  2. Seleccione uno o varios grupos de instancias no gestionados de la lista.
  3. Haz clic en Eliminar para quitar los grupos. Los grupos se eliminan, pero las VMs de los grupos no se eliminan.

gcloud

Para eliminar un grupo de instancias sin gestionar, usa el comando instance-groups unmanaged delete:

gcloud compute instance-groups unmanaged delete instance-group-name \
    --zone=zone

Haz los cambios siguientes:

  • instance-group-name: el nombre del grupo que quiere eliminar.
  • zone: la zona del grupo.

REST

Para eliminar un grupo de instancias sin gestionar con REST, envía una solicitud DELETE con el método instanceGroups.delete:

DELETE https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

Haz los cambios siguientes:

  • instance-group-name: el nombre del grupo que quiere eliminar.
  • zone: la zona del grupo.
  • project-id: ID del proyecto que contiene el grupo.

Pertenencia a grupos

Añadir VMs

Después de crear un grupo de instancias sin gestionar, puedes añadirle VMs. Sin embargo, solo puedes agrupar VMs si la primera o la única interfaz de red (nic0) de cada VM está conectada a la misma red de VPC. El número máximo de VMs que puedes añadir a un grupo de instancias no gestionado es 2000. Si quieres añadir más de 2000 máquinas virtuales al grupo, ponte en contacto con el equipo de Asistencia.

Consola

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

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haga clic en el nombre del grupo de instancias al que quiera añadir sus máquinas virtuales. Se abrirá una página con las propiedades del grupo de instancias y una lista de las VMs que ya forman parte del grupo.
  3. Haz clic en Editar para modificar este grupo de instancias sin gestionar.
  4. En Instancias de VM, selecciona una o varias VMs que quieras añadir al grupo. Solo puedes seleccionar VMs que estén en la misma zona, red VPC y subred que las VMs que ya tengas.
  5. Haz clic en Guardar para añadir las nuevas VMs al grupo.

gcloud

Para añadir instancias a un grupo de instancias sin gestionar, usa el comando instance-groups unmanaged add-instances:

gcloud compute instance-groups unmanaged add-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

Haz los cambios siguientes:

  • instance-group-name: el nombre del grupo al que quieres añadir las VMs.
  • zone: la zona del grupo.
  • list-of-VM-names: lista delimitada por comas de las VMs de la misma zona, red de VPC y subred.

REST

Para añadir VMs a un grupo de instancias sin gestionar, envía una solicitud POST con el método instanceGroups.addInstances:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/addInstances

   {
      "instances": [
         {
         "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
         "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
         ....
         }
      ]
   }

Haz los cambios siguientes:

  • instance-group-name: el nombre del grupo al que quieres añadir las VMs.
  • zone: la zona del grupo.
  • project-id: ID del proyecto que contiene el grupo.
  • instance-1-name y instance-2-name: son los nombres de las VMs que quieres añadir al grupo y que están en la misma zona, red de VPC y subred.

Listar VMs

Puedes obtener una lista de las VMs miembro de un grupo de instancias no gestionado.

Consola

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

    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 no gestionado que quieras ver. Aparecerá una página con la lista de instancias incluidas en el grupo.

gcloud

Para ver las VMs de un grupo de instancias sin gestionar, usa el comando instance-groups unmanaged list-instances:

gcloud compute instance-groups unmanaged list-instances instance-group-name \
   --zone=zone

Haz los cambios siguientes:

  • instance-group-name: el nombre del grupo cuyos miembros quieres mostrar.
  • zone: la zona del grupo.

REST

Para enumerar las VMs de un grupo de instancias no gestionado, envía una solicitud POST con el método instanceGroups.listInstances:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/listInstances

Haz los cambios siguientes:

  • instance-group-name: el nombre del grupo cuyos miembros quieres mostrar.
  • zone: la zona del grupo.
  • project-id: ID del proyecto que contiene el grupo.

Eliminar VMs

Puedes eliminar VMs de un grupo de instancias no gestionado. Al eliminar una VM del grupo de instancias, no se elimina la VM.

Consola

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

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haga clic en el nombre del grupo de instancias del que quiera quitar VMs. Se abrirá una página con las propiedades del grupo de instancias y una lista de las VMs que incluye.
  3. En la lista, selecciona una o varias máquinas virtuales que quieras quitar del grupo.
  4. Haz clic en Quitar del grupo. Las VMs que elimines de un grupo de instancias no gestionado seguirán existiendo y ejecutándose a menos que las detengas o las elimines.

gcloud

Para eliminar VMs de un grupo de instancias sin gestionar, usa el comando instance-groups unmanaged remove-instances:

gcloud compute instance-groups unmanaged remove-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

Haz los cambios siguientes:

  • instance-group-name: Nombre del grupo que contiene las instancias que se van a quitar.
  • zone: la zona del grupo.
  • list-of-VM-names: lista de VMs separadas por comas que quieres quitar del grupo.

REST

Para eliminar VMs de un grupo de instancias no gestionado, envía una solicitud POST con el método instanceGroups.removeInstances. Puedes quitar varias máquinas virtuales a la vez, como se muestra a continuación:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/removeInstances
{
    "instances": [
        {
        "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
        "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
        ....
        }
    ]
}

Haz los cambios siguientes:

  • instance-group-name: Nombre del grupo que contiene las instancias que se van a quitar.
  • zone: la zona del grupo.
  • project-id: ID del proyecto que contiene el grupo.
  • instance-1-name y instance-2-name: son los nombres de las VMs que quieres desasociar del grupo.

Trabajar con puertos con nombre

Los puertos con nombre son pares clave-valor que representan el nombre y el número de un puerto. El nombre del puerto representa el nombre de un servicio o una aplicación. El número de puerto representa el puerto en el que se ejecuta el servicio o la aplicación.

Cloud Load Balancing usa puertos con nombre. Los balanceadores de carga que actúan como proxies se suscriben a un solo puerto con nombre en su configuración de servicio de backend. El nombre del puerto se traduce a un número de puerto en función de la asignación del puerto con nombre de cada backend del grupo de instancias.

Por ejemplo, un servicio de backend puede suscribirse a un puerto llamado http-port. El grupo de instancias de backend puede tener un puerto llamado http-port:80. El grupo de instancias de backend indica al balanceador de carga que envíe tráfico a una VM del grupo en el puerto 80 mediante un protocolo (como TCP). El protocolo se define en el servicio de backend del balanceador de carga.

Los puertos con nombre son metadatos sencillos que usan los balanceadores de carga proxy. Los puertos con nombre no controlan los recursos de red ni de cortafuegos en Compute Engine.

Varios números de puerto para un puerto con nombre

Puede asignar varios puertos a cada nombre de servicio. También puedes asignar varios nombres de servicio a cada puerto.

Ten en cuenta los siguientes puntos:

  • El tráfico se equilibra entre todos los puertos que tengan el mismo nombre.
  • Un servicio de backend determinado solo puede reenviar tráfico a un puerto con nombre a la vez.
  • Si usas varios números de puerto para un puerto con nombre, todos los puertos deben ser de la misma aplicación.

    Por ejemplo, http:80,http:8080 funciona, pero http:80,http:443 no funciona porque el puerto 80 no suele admitir TLS.

Puedes asignar varios puertos identificados a un grupo de instancias. Para ilustrarlo, consideremos un servicio de backend de ejemplo que se suscribe al puerto con nombre http-port y que tiene dos grupos de instancias de backend:

  • instance-group-a con un puerto denominado http-port:80
  • instance-group-b con un puerto denominado http-port:79

Este servicio de backend envía tráfico al puerto 80 para las VMs de instance-group-a y al puerto 79 para las VMs de instance-group-b.

Si añades el mismo grupo de instancias a varios servicios de backend (para varios balanceadores de carga) y el grupo de instancias sirve diferentes puertos en cada balanceador de carga, no añadas todos los números de puerto a un único puerto con nombre. En su lugar, crea un puerto con nombre único y asígnalo a un conjunto de puertos que debe usar cada servicio de backend.

Por ejemplo, supongamos que tienes tres aplicaciones, cada una con su propio balanceador de carga. Cada aplicación tiene su propio número de puerto: 81 para app1, 82 para app2 y 83 para app3. Suponiendo que los tres servicios de backend usan un grupo de instancias común, asigna los puertos con nombre de este grupo de instancias como [app1:81, app2:82, app3:83].

Puertos con nombre y comprobaciones del estado

Para que un puerto con nombre y varios números de puerto en un servicio de backend funcione en un balanceador de carga de aplicaciones externo o interno, la comprobación del estado debe tener la marca --use-serving-port en lugar de un número de puerto específico. Esta opción no está disponible en la consola Google Cloud . Para definir --use-serving-port, debes usar Google Cloud CLI o la API.

Por ejemplo, supongamos que tiene una aplicación que balancea la carga del tráfico en tres puertos diferentes (81, 82 y 83) en el mismo servicio de backend con un solo grupo de instancias. Puedes asignar los puertos de este grupo de instancias como [app:81, 82, 83]. La comprobación del estado de este caso debe tener la marca --use-serving-port.

Para obtener más información, consulta la documentación sobre las comprobaciones del estado del balanceo de carga.

Puertos con nombre y reglas de cortafuegos

Los puertos con nombre no crean ni modifican Google Cloud reglas de firewall. Para permitir el tráfico a las VMs de backend, debes crear las reglas de cortafuegos necesarias.

Puertos con nombre y servicios de backend

Además de configurar el grupo de instancias, también debes configurar el servicio de backend. Por ejemplo, supongamos que asignas el nombre my-service-name y el puerto 8888 a un puerto con nombre de un grupo de instancias:

gcloud compute instance-groups set-named-ports my-unmanaged-ig \
    --named-ports=my-service-name:8888

A continuación, debes hacer referencia al puerto con nombre en la configuración del servicio de backend con el --port-name del servicio de backend definido como my-service-name:

gcloud compute backend-services update my-backend-service \
    --port-name=my-service-name

Crear puertos con nombre

Consola

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

    Ir a Grupos de instancias

  2. En la columna Nombre de la lista, haga clic en el nombre del grupo de instancias en el que quiera especificar los puertos con nombre. Se abrirá una página con las propiedades del grupo de instancias.
  3. Haz clic en Editar para modificar este grupo de instancias sin gestionar.
  4. En la sección Asignación de puertos, haz clic en Añadir puerto e introduce el nombre y el número del puerto. Añade o elimina otros puertos con nombre según sea necesario.
  5. Haz clic en Guardar para actualizar la lista de puertos con nombre del grupo de instancias no gestionado.

gcloud

Para añadir puertos con nombre a un grupo de instancias sin gestionar, usa el instance-groups unmanaged set-named-ports comando:

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=port-name:port-number,...

Para enumerar los puertos con nombre de un grupo de instancias sin gestionar, usa el comando instance-groups unmanaged get-named-ports:

Define uno o varios puertos identificados con el comando set-named-ports:

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports PORT_NAME:PORT,PORT_NAME:PORT

Por ejemplo:

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

Para asignar varios puertos a cada nombre de servicio o varios nombres a cada servicio, crea más de una entrada para cada nombre o puerto. Por ejemplo, si los puertos 10, 20 y 80 son para la misma aplicación, puedes asignar name1 a todos esos puertos. Además, puedes asignar dos nombres, name2 y name3, al puerto 8080. Por último, puedes asignar el puerto 9000 a name4, como en el siguiente ejemplo:

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

Para quitar todos los puertos con nombre de un grupo de instancias no administrado con la Google Cloud CLI, usa instance-groups unmanaged set-named-ports con una lista vacía de puertos con nombre:

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=""

En todos los ejemplos anteriores, sustituye lo siguiente si está presente:

  • instance-group-name: nombre del grupo de instancias.
  • zone: la zona del grupo.
  • port-name y port-number: El nombre y el número de puerto representan una asignación de un nombre que elijas a un número de puerto. Puedes especificar varias asignaciones separadas por comas. Por ejemplo, port-one:80,port-two:8080 es una lista válida de puertos con nombre.

REST

  1. Describe el grupo de instancias y anota el fingerprint.

  2. Para añadir puertos con nombre, envía una solicitud POST mediante el método instanceGroups.setNamedPorts. Si quieres quitar todos los puertos con nombre, asigna namedPorts a una lista vacía.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/setNamedPorts
    
    {
        "fingerprint": "fingerprint",
        "namedPorts": [
            {
            "name": "port-name",
            "port": port-number
            },
            {
            "name": "port-name",
            "port": port-number
            },
            ....
        ]
    }
    

    Haz los cambios siguientes:

    • instance-group-name: nombre del grupo de instancias.
    • zone: la zona del grupo.
    • project-id: ID del proyecto que contiene el grupo.
    • port-name y port-number: el nombre y el número del puerto representan una asignación de un nombre que elijas a un número de puerto.
    • fingerprint: esta es la huella digital del paso anterior.

Siguientes pasos