Agrupar las VMs no administradas


Un grupo de instancias no administrado es un conjunto de instancias de máquina virtual (VM) que se encuentran en un solo proyecto, una sola zona, red de VPC y subred. Un grupo de instancias no administrado es útil para agrupar las VM que requieren parámetros de configuración o ajustes individuales. Puedes usar un grupo de instancias no administrado en el servicio de backend de un balanceador de cargas.

Para las VM que necesitan parámetros de configuración coherentes, puedes usar un grupo de instancias administrado (MIG) que se base en una plantilla de instancias. Siempre que sea posible, considera usar grupos de instancias administrados en lugar de los no administrados. Para crear un grupo de instancias administrado, consulta Crea un MIG.

Puedes agregar cualquier tipo de grupo de instancias como un backend a un balanceador de cargas de Google Cloud. Para obtener más información, consulta Descripción general de Cloud Load Balancing. Para conocer la cantidad de VM por grupo de instancias que admite Cloud Load Balancing, consulta VM por grupo de instancias.

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

Antes de comenzar

  • Lee sobre la diferencia entre grupos de instancias administrados y no administrados.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

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

    Consola

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

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    REST

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

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Trabaja con grupos de instancias no administrados

Creación de grupos

A diferencia de los grupos de instancias administrados, los grupos de instancias no administrados son solo conjuntos de VM distintas que no comparten una plantilla de instancias común. Solo debes crear un grupo y agregar VM individuales al grupo.

Console

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

    Ir a la página Grupos de instancias

  2. Haga clic en Crear grupo de instancias.
  3. Haz clic en Crea un nuevo grupo de instancias no administrado.
  4. Escribe un nombre para el grupo de instancias no administrado.
  5. En Ubicación, elige una región y una zona.
  6. Elige una Red y una Subred.
  7. En Instancias de VM, elige las VM que desees agregar a este grupo.
  8. Haz clic en Crear.

gcloud

Para crear un nuevo grupo de instancias no administrado, usa el comando instance-groups unmanaged create:

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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo que deseas crear
  • zone: La zona en la que deseas crear el grupo

REST

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

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

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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo que deseas crear
  • zone: La zona en la que deseas crear el grupo
  • project-id: El ID del proyecto que contiene el grupo

Cuando creas un nuevo grupo de instancias no administrado con Google Cloud CLI o REST, las VMs no se agregan de forma automática. Puedes agregar VM al grupo de instancias no administrado de forma manual.

Enumera y describe grupos

Recupera una lista de grupos de instancias no administrados existentes.

Console

En la consola de Google Cloud, en la página Grupos de instancias, se enumeran los grupos de instancias administrados y no administrados existentes.

Ir a la página Grupos de instancias

gcloud

Para generar una lista de todos los grupos de instancias no administrados en tu proyecto con Google Cloud CLI, usa la lista de grupos de instancias no administrados de instancias:

gcloud compute instance-groups unmanaged list

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

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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo que se describirá
  • zone: La zona del grupo

REST

Para enumerar los 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 administrado 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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo que se describirá
  • zone: La zona del grupo
  • project-id: El ID del proyecto que contiene el grupo

Borra grupos

A diferencia de lo que ocurriría en un grupo de instancias administrado, la eliminación de un grupo de instancias no administrado no borra ninguna de las VM del grupo. Si borras un grupo de instancias no administrado, solo se quita la agrupación lógica de las VM.

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

Console

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

    Ir a la página Grupos de instancias

  2. Elige uno o más grupos de instancias no administrados de la lista.
  3. Haz clic en Borrar para quitar los grupos. Los grupos se quitan, pero las VM de los grupos no se borran.

gcloud

Para borrar un grupo de instancias no administrado, usa el comando instance-groups unmanaged delete:

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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo que deseas borrar
  • zone: La zona del grupo

REST

Para borrar un grupo de instancias no administrado 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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo que deseas borrar
  • zone: La zona del grupo
  • project-id: El ID del proyecto que contiene el grupo

Membresía del grupo

Agrega VM

Después de crear un grupo de instancias no administrado, puedes agregar VM al grupo. Sin embargo, solo puedes agrupar las VM si la primera o la única interfaz de red (nic0) de cada VM se conecta a la misma red de VPC. La cantidad máxima de VM que puedes agregar a un grupo de instancias no administrado es de 2,000. Si deseas agregar más de 2,000 VMs al grupo, comunícate con el equipo de asistencia.

Console

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

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias al que deseas agregar las VM. Se abrirá una página con las propiedades del grupo de instancias y una lista de las VM que ya forman parte del grupo.
  3. Haz clic en Editar para modificar este grupo de instancias no administrado.
  4. En Instancias de VM, elige una o más instancias existentes que desees agregar a este grupo. Solo puedes seleccionar las VM que estén en la misma zona, red de VPC y subred que las VM existentes.
  5. Haz clic en Guardar para agregar las VM nuevas al grupo.

gcloud

Para agregar instancias a un grupo de instancias no administrado, 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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo al que deseas agregar las VM
  • zone: La zona del grupo
  • list-of-VM-names: Una lista delimitada por comas de VM en la misma zona, red de VPC y subred.

REST

Para agregar VMs a un grupo de instancias no administrado, envía una solicitud POST mediante 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",
         ....
         }
      ]
   }

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo al que deseas agregar las VM
  • zone: La zona del grupo
  • project-id: El ID del proyecto que contiene el grupo
  • instance-1-name y instance-2-name: Los nombres de las VM, en la misma zona, red de VPC y subred, que deseas agregar al grupo

Enumera las VM

Puedes recuperar una lista de las VM del grupo en un grupo de instancias no administrado.

Console

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

    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 administrado que deseas ver. Aparecerá una página con la lista de instancias que se incluyen en el grupo.

gcloud

Para enumerar las VM en un grupo de instancias no administrado, usa el comando instance-groups unmanaged list-instances:

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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo cuyos miembros deseas enumerar
  • zone: La zona del grupo

REST

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

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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo cuyos miembros deseas enumerar
  • zone: La zona del grupo
  • project-id: El ID del proyecto que contiene el grupo

Quita VM

Puedes quitar VM de un grupo de instancias no administrado. Si quitas una VM del grupo de instancias, esta no se borra.

Console

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

    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 deseas quitar las VM. Se abrirá una página con las propiedades del grupo de instancias y una lista de las VM incluidas en el grupo.
  3. En la lista, elige una o más VM que quieras quitar del grupo.
  4. Haz clic en Quitar del grupo. Las VM que quitas de un grupo de instancias no administrado seguirán existiendo y se seguirán ejecutando, a menos que las detengas o borres.

gcloud

Para quitar VM de un grupo de instancias no administrado, 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

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo que contiene las instancias que se quitarán
  • zone: La zona del grupo
  • list-of-VM-names: Una lista delimitada por comas de las VM que deseas quitar del grupo

REST

Para quitar VMs de un grupo de instancias no administrado, envía una solicitud POST con el método instanceGroups.removeInstances. Puedes quitar varias VM de forma simultánea, 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",
        ....
        }
    ]
}

Reemplaza lo siguiente:

  • instance-group-name: El nombre del grupo que contiene las instancias que se quitarán
  • zone: La zona del grupo
  • project-id: El ID del proyecto que contiene el grupo
  • instance-1-name y instance-2-name: Los nombres de las VM que deseas desasociar del grupo

Trabaja 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 un nombre de un servicio o aplicación. El número de puerto representa el puerto en el que se ejecuta el servicio o la aplicación.

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

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

Los puertos con nombre son metadatos simples que usan los balanceadores de cargas de proxy. Los puertos con nombre no controlan recursos de red o de firewall en Compute Engine.

Múltiples números de puerto para un puerto con nombre

Puedes asignar varios puertos para 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 balancea entre todos los puertos con el mismo nombre de puerto.
  • 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 ser compatible con TLS.

Puedes definir varios puertos con nombre en un grupo de instancias. A modo de ejemplo, considera un servicio de backend que se suscribe al puerto con nombre http-port y que tiene dos grupos de instancias de backend:

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

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

Cuando agregas el mismo grupo de instancias a varios servicios de backend (para varios balanceadores de cargas) y el grupo de instancias entrega puertos diferentes en cada balanceador de cargas, no agregues todos los números de puerto a un solo puerto con nombre. En su lugar, debes crear un puerto con nombre único y asignarlo a un conjunto de puertos que cada servicio de backend deba entregar.

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

Puertos con nombre y verificaciones de estado

Para que un puerto con nombre y con varios números de puerto en un servicio de backend funcione en un balanceador de cargas de aplicaciones externo o en un balanceador de cargas de aplicaciones interno, la verificación de 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 de Google Cloud. Para configurar --use-serving-port, debes usar Google Cloud CLI o la API.

Por ejemplo, supongamos que tienes una aplicación que balancea las cargas del tráfico en tres puertos diferentes (81, 82, 83) en el mismo servicio de backend con un solo grupo de instancias. Puedes asignar los puertos para estos grupos de instancias como [app:81, 82, 83]. La verificación de estado en esta situación debe tener la marca --use-serving-port.

Para obtener más información, consulta la documentación de verificación de estado del balanceo de cargas.

Puertos con nombre y reglas de firewall

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

Puertos con nombre y servicios de backend

Además de la configuración del grupo de instancias, también debes configurar el servicio de backend. Por ejemplo, supongamos que configuraste el puerto con nombre en un grupo de instancias con el nombre my-service-name y el puerto 8888:

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

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

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

Crea puertos con nombre

Console

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

    Ir a Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias en el que quieres 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 no administrado.
  4. En la sección Asignación de puertos, haz clic en Agregar puerto e ingresa un nombre de puerto y su número. Agrega o quita 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 administrado.

gcloud

Para agregar puertos con nombre a un grupo de instancias no administrado, usa el comando instance-groups unmanaged set-named-ports:

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 en un grupo de instancias no administrado, usa el comando instance-groups unmanaged get-named-ports:

Configura uno o más puertos con nombre 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 por 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 se muestra 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 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, reemplaza la siguiente información si aparece:

  • instance-group-name: El nombre del grupo de instancias
  • zone: La zona del grupo
  • port-name y port-number: El nombre y el número del puerto, que 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 valor de fingerprint.

  2. Para agregar puertos con nombre, envía una solicitud POST con el método instanceGroups.setNamedPorts. Si deseas quitar todos los puertos con nombre, configura namedPorts como 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
            },
            ....
        ]
    }
    

    Reemplaza lo siguiente:

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

¿Qué sigue?