Agrupar máquinas virtuales no administradas


Un grupo de instancias no administrado es una colección de instancias de máquinas virtuales (VM) que residen en un único proyecto, zona, red de VPC y subred. Un grupo de instancias no administrado es útil para agrupar máquinas virtuales que requieren ajustes o ajustes de configuración individuales. Puedes usar un grupo de instancias no administrado en el servicio backend de un balanceador de carga.

Para las máquinas virtuales que requieren ajustes de configuración consistentes, puedes usar un grupo de instancias administrado (MIG) basado en una plantilla de instancias . Cuando sea posible, considere utilizar grupos de instancias administrados en lugar de grupos de instancias no administrados. Para crear un grupo de instancias administrado, consulte Crear un MIG .

Puedes agregar cualquier tipo de grupo de instancias como backend a un Google Cloudequilibrador de carga. Para obtener más información, consulte Descripción general del equilibrio de carga en la nube . Para conocer la cantidad de máquinas virtuales por grupo de instancias que admite Cloud Load Balancing, consulte Máquinas virtuales por grupo de instancias .

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

Antes de comenzar

  • Lea sobre la diferencia entre grupos de instancias administrados y no administrados.
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

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

    Console

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

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Trabajar con grupos de instancias no administrados

Creando grupos

A diferencia de los grupos de instancias administrados , los grupos de instancias no administrados son solo colecciones de máquinas virtuales distintas que no comparten una plantilla de instancias común. Simplemente crea un grupo y agrega máquinas virtuales individuales al grupo.

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Vaya a la página Grupos de instancias

  2. Haz clic en Crear grupo de instancias .
  3. Haz clic en Nuevo grupo de instancias no administrado .
  4. Ingresa un nombre para el grupo de instancias no administrado.
  5. En Ubicación , seleccione una región y una zona.
  6. Seleccione una red y una subred .
  7. En Instancias de VM , seleccione las VM que desea agregar a este grupo.
  8. Haga clic en Crear .

nube de gcloud

Para crear un nuevo grupo de instancias no administrado, use el comando de creación no administrada de grupos de instancias :

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

Reemplace lo siguiente:

  • instance-group-name : el nombre del grupo que desea crear.
  • zone : La zona donde desea crear el grupo.

DESCANSAR

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

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

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

Reemplace lo siguiente:

  • instance-group-name : el nombre del grupo que desea crear.
  • zone : La zona donde desea 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, no se le agregan máquinas virtuales automáticamente. Puedes agregar máquinas virtuales al grupo de instancias no administrado manualmente.

Listado y descripción de grupos.

Recupera una lista de grupos de instancias no administrados existentes.

Consola

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

Vaya a la página Grupos de instancias

nube de gcloud

Para enumerar todos los grupos de instancias no administrados en su proyecto con la CLI de Google Cloud, use la lista no administrada de grupos de instancias :

gcloud compute instance-groups unmanaged list

Para ver información sobre un grupo de instancias no administrado específico, use el comando de descripción no administrado de grupos de instancias :

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

Reemplace lo siguiente:

  • instance-group-name : el nombre del grupo a describir.
  • zone : La zona del grupo.

DESCANSAR

Para enumerar grupos de instancias con REST, envíe una solicitud GET utilizando el método instanciaGroups.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 instanciaGroups.get :

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

Reemplace lo siguiente:

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

Eliminar grupos

A diferencia de un grupo de instancias administrado, eliminar un grupo de instancias no administrado no elimina ninguna de las VM dentro del grupo. Eliminar un grupo de instancias no administrado solo elimina la agrupación lógica de VM.

No puedes eliminar un grupo de instancias si el grupo es un backend de unGoogle Cloud equilibrador de carga. Primero debe eliminar el backend del servicio de backend .

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Vaya a la página Grupos de instancias

  2. Seleccione uno o más grupos de instancias no administrados de la lista.
  3. Haga clic en Eliminar para eliminar los grupos. Los grupos se eliminan, pero las máquinas virtuales de los grupos no se eliminan.

nube de gcloud

Para eliminar un grupo de instancias no administrado, use el comando de eliminación no administrada de grupos de instancias :

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

Reemplace lo siguiente:

  • instance-group-name : el nombre del grupo que desea eliminar.
  • zone : La zona del grupo.

DESCANSAR

Para eliminar un grupo de instancias no administrado con REST, envía una solicitud DELETE usando el método instanciaGroups.delete :

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

Reemplace lo siguiente:

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

Membresía grupal

Agregar máquinas virtuales

Después de crear un grupo de instancias no administrado , puedes agregar máquinas virtuales al grupo. Sin embargo, solo puede agrupar máquinas virtuales si la primera o única interfaz de red ( nic0 ) de cada máquina virtual está conectada a la misma red de VPC. La cantidad máxima de VM que puedes agregar a un grupo de instancias no administrado es 2000. Si desea agregar más de 2000 máquinas virtuales al grupo, comuníquese con el soporte .

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Vaya a la página Grupos de instancias

  2. En la columna Nombre de la lista, haga clic en el nombre del grupo de instancias donde desea agregar sus máquinas virtuales. Se abre una página con las propiedades del grupo de instancias y una lista de máquinas virtuales que ya forman parte del grupo.
  3. Haga clic en Editar para modificar este grupo de instancias no administrado.
  4. En Instancias de VM, seleccione una o más máquinas virtuales existentes para agregarlas al grupo. Solo puede seleccionar máquinas virtuales que estén en la misma zona, red de VPC y subred que las máquinas virtuales existentes.
  5. Haga clic en Guardar para agregar las nuevas máquinas virtuales al grupo.

nube de gcloud

Para agregar instancias a un grupo de instancias no administrado, use el comando add-instances no administrado de grupos de instancias :

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

Reemplace lo siguiente:

  • instance-group-name : el nombre del grupo al que desea agregar máquinas virtuales.
  • 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.

DESCANSAR

Para agregar máquinas virtuales a un grupo de instancias no administrado, envíe una solicitud POST mediante el método instanciaGroups.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",
         ....
         }
      ]
   }

Reemplace lo siguiente:

  • instance-group-name : el nombre del grupo al que desea agregar máquinas virtuales.
  • zone : La zona del grupo.
  • project-id : el ID del proyecto que contiene el grupo.
  • instance-1-name e instance-2-name : estos son nombres de las máquinas virtuales, en la misma zona, red de VPC y subred, que desea agregar al grupo.

Listado de máquinas virtuales

Puedes recuperar una lista de máquinas virtuales miembro en un grupo de instancias no administrado.

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Vaya a la página Grupos de instancias

  2. En la columna Nombre de la lista, haga clic en el nombre del grupo de instancias no administrado que desea ver. Aparece una página con la lista de instancias que están incluidas en el grupo.

nube de gcloud

Para enumerar las máquinas virtuales en un grupo de instancias no administrado, use el comando instancias-grupos de instancias no administradas list-instances :

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

Reemplace lo siguiente:

  • instance-group-name : el nombre del grupo cuyos miembros desea enumerar.
  • zone : La zona del grupo.

DESCANSAR

Para enumerar las máquinas virtuales en un grupo de instancias no administrado, envíe una solicitud POST mediante el método instanciaGroups.listInstances :

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

Reemplace lo siguiente:

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

Eliminación de máquinas virtuales

Puedes eliminar máquinas virtuales de un grupo de instancias no administrado. Quitar una VM del grupo de instancias no la elimina.

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Vaya 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 desea eliminar las máquinas virtuales. Se abre una página con las propiedades del grupo de instancias y una lista de máquinas virtuales que están incluidas en el grupo.
  3. En la lista, seleccione una o más máquinas virtuales que desee eliminar del grupo.
  4. Haga clic en Eliminar del grupo . Las máquinas virtuales que eliminas de un grupo de instancias no administrado continúan existiendo y ejecutándose a menos que las detengas o las elimines.

nube de gcloud

Para eliminar máquinas virtuales de un grupo de instancias no administrado, use el comando de eliminación de instancias no administradas de grupos de instancias :

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

Reemplace lo siguiente:

  • instance-group-name : el nombre del grupo que contiene las instancias que se van a eliminar.
  • zone : La zona del grupo.
  • list-of-VM-names : una lista delimitada por comas de las máquinas virtuales que desea eliminar del grupo.

DESCANSAR

Para eliminar máquinas virtuales de un grupo de instancias no administrado, envíe una solicitud POST mediante el método instanciaGroups.removeInstances . Puede eliminar simultáneamente varias máquinas virtuales 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",
        ....
        }
    ]
}

Reemplace lo siguiente:

  • instance-group-name : el nombre del grupo que contiene las instancias que se van a eliminar.
  • zone : La zona del grupo.
  • project-id : el ID del proyecto que contiene el grupo.
  • instance-1-name y instance-2-name : estos son nombres de las máquinas virtuales que desea 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 aplicación. El número de puerto representa el puerto en el que se ejecuta el servicio o la aplicación.

Cloud Load Balancing utiliza los puertos con nombre. Los balanceadores de carga que actúan como servidores proxy se suscriben a un único puerto con nombre en su configuración de servicio backend. El nombre del puerto se traduce a un número de puerto según la asignación del puerto nombrado de cada backend del grupo de instancias.

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

Los puertos con nombre son metadatos simples utilizados por los balanceadores de carga de proxy . Los puertos con nombre no controlan los recursos de red o firewall en Compute Engine.

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

Puede asignar varios puertos para cada nombre de servicio. También puede asignar varios nombres de servicios para cada puerto.

Tenga en cuenta los siguientes puntos:

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

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

Puedes asignar varios puertos con nombre en un grupo de instancias. A modo de ilustración, considere un servicio de backend de ejemplo que se suscribe al puerto denominado http-port y que tiene dos grupos de instancias de backend:

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

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

Cuando agregas el mismo grupo de instancias a múltiples servicios backend (para múltiples balanceadores de carga) y el grupo de instancias atiende diferentes puertos en cada balanceador de carga, no agregues todos los números de puerto a un solo puerto con nombre. En su lugar, cree un puerto con nombre único y asígnelo a un conjunto de puertos que cada servicio backend debería servir.

Por ejemplo, supongamos que tiene tres aplicaciones, cada una con su propio equilibrador 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 backend utilizan un grupo de instancias común, asigne los puertos con nombre para este grupo de instancias como [app1:81, app2:82, app3:83] .

Puertos nombrados y controles de salud

Para que un puerto con nombre con varios números de puerto en un servicio backend funcione en un balanceador de carga de aplicaciones externo o en un balanceador de carga de aplicaciones interno, la verificación de estado debe tener el indicador --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 , debe utilizar la CLI o la API de Google Cloud.

Por ejemplo, suponga que tiene una aplicación que equilibra la carga del tráfico en tres puertos diferentes (81, 82, 83) en el mismo servicio backend con un único grupo de instancias. Puede asignar los puertos para estos grupos de instancias como [app:81, 82, 83] . La verificación de estado en este escenario debe tener el indicador --use-serving-port .

Para obtener más información, consulte la documentación de verificación del estado del equilibrio de carga .

Puertos con nombre y reglas de firewall

Los puertos con nombre no crean ni modifican Google Cloud reglas del cortafuegos . Para permitir el tráfico hacia las máquinas virtuales de backend, aún debe crear las reglas de firewall necesarias.

Puertos con nombre y servicios backend

Además de la configuración del grupo de instancias, también debes configurar el servicio backend. Por ejemplo, supongamos que configuras 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 debe hacer referencia al puerto nombrado en la configuración del servicio backend con --port-name en el servicio backend establecido en my-service-name :

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

Creando puertos con nombre

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a grupos de instancias

  2. En la columna Nombre de la lista, haga clic en el nombre del grupo de instancias donde desea especificar puertos con nombre. Se abre una página con las propiedades del grupo de instancias.
  3. Haga clic en Editar para modificar este grupo de instancias no administrado.
  4. En la sección Asignación de puertos , haga clic en Agregar puerto e ingrese un nombre de puerto y su número. Agregue o elimine otros puertos con nombre según sea necesario.
  5. Haga clic en Guardar para actualizar la lista de puertos con nombre para el grupo de instancias no administrado.

nube de gcloud

Para agregar puertos con nombre a un grupo de instancias no administrado, use el comandostance 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, use el comando instance-groups unmanaged get-named-ports :

Configure uno o más puertos con nombre usando 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 para cada servicio, cree 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, puede asignar name1 a todos esos puertos. Además, puede asignar dos nombres, name2 y name3 al puerto 8080 . Finalmente, 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 eliminar todos los puertos con nombre de un grupo de instancias no administrado con la CLI de Google Cloud, use grupos de instancias no administrados 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, reemplace lo siguiente si está presente:

  • 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 representan una asignación de un nombre que elija a un número de puerto. Puede especificar varias asignaciones separadas por comas; por ejemplo, port-one:80,port-two:8080 es una lista válida de puertos con nombre.

DESCANSAR

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

  2. Para agregar puertos con nombre, envíe una solicitud POST utilizando el método instanciaGroups.setNamedPorts . Si desea eliminar todos los puertos con nombre, configure namedPorts en 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
            },
            ....
        ]
    }
    

    Reemplace 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 representan una asignación de un nombre que elija a un número de puerto.
    • fingerprint : Esta es la huella digital del paso anterior.

¿Qué sigue?