Agrega un grupo de instancias a un balanceador de cargas

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

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

Antes de comenzar

Agrega un grupo de instancias administrado a un servicio de backend

Es necesario un servicio de backend para crear un HTTP(S), un proxy SSL, un proxy TCP o un balanceador de cargas interno. Un servicio de backend puede contener varios backends. Un grupo de instancias es un tipo de backend. Las instancias en el grupo de instancias 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 puede manejar y el tráfico que maneja en el momento. Además, el servicio de backend 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 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. El grupo de destino se usa 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. Así se agregan 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, usa el comando set-target-pools:

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

en el que:

  • [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://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

en la que:

  • [PROJECT_ID] es el ID del proyecto de 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 el nombre http:80 y, luego, configuras el servicio de backend para enviar tráfico a un puerto denominado http, el balanceador 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 usa 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 dado 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. Si necesitas más entradas, haz clic en Agregar elemento de nuevo para agregar más entradas.
  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 instanceGroupManagers no ofrece un método setNamedPorts de la API. En su lugar, usa la API de instanceGroups para realizar esta tarea.

Crea una solicitud para la API de instanceGroups y, también, incluye el nombre del grupo de instancias. Para obtener el valor actual fingerprint para el grupo de instancias, obtén información sobre un grupo específico. Incluye el valor fingerprint y uno o más pares de valores namedPorts en el cuerpo de la solicitud:

POST https://compute.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://compute.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. Además, asigna el puerto 8080 a name2.

POST https://compute.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://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

Qué sigue

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

Enviar comentarios sobre...

Documentación de Compute Engine