En esta página, se describe cómo agregar un grupo de instancias administrado (MIG) existente al servicio de backend o grupo de destino de un balanceador de cargas.
Un balanceador de cargas distribuye el tráfico del usuario, lo que ayuda a reducir el riesgo de experimentar problemas de rendimiento en la aplicación. Cloud Load Balancing 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 servicio de backend.
Para obtener información sobre cómo crear un tipo específico de balanceador de cargas con un backend de MIG, consulta la documentación de Cloud Load Balancing.
Antes de comenzar
-
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 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Ve a la página Balanceo de cargas en la consola de Google Cloud.
- Haz clic en el nombre del servicio de backend al que quieres agregar el grupo de instancias administrado.
- Haz clic en Editar.
- Haz clic en +Agregar backend.
- Elige el grupo de instancias que deseas agregar.
- Edita cualquier configuración opcional que quieras cambiar.
- Guarda los cambios.
- Ve a la página Grupos de destino en la consola de Google Cloud.
- Haz clic en el grupo de destino en el que quieres agregar el grupo de instancias.
- Haz clic en el botón Editar.
- Desplázate hacia la sección Instancias de VM y haz clic en Elegir grupos de instancias.
- Elige un grupo de instancias en el menú desplegable.
- Guarda los cambios.
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 este grupo de instancias.PROJECT_ID
es el ID del proyecto de esta solicitud.REGION
es la región del grupo de instancias.INSTANCE_GROUP
es el nombre del grupo de instancias.- 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, perohttp:80,http:443
no funciona porque el puerto 80 no suele ser compatible con TLS.instance-group-a
con un puerto con nombre dehttp-port:80
instance-group-b
con un puerto con nombre dehttp-port:79
- En la consola de Google Cloud, ve a la página Grupos de instancias.
- 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.
- Haz clic en Editar para modificar este grupo de instancias administrado.
- En la sección Asignación de puertos, haz clic en Agregar puerto e ingresa el nombre del puerto deseado y los números de puerto que quieres asociar con ese nombre. Si necesitas más entradas, haz clic en Agregar puerto de nuevo.
- Haz clic en Guardar para guardar los cambios y aplicar los puertos con nombre a las instancias del grupo de instancias administrado.
- Prueba el instructivo Usa del balanceo de cargas para apps con alta disponibilidad.
- Crea una plantilla de instancias que puedas usar para un grupo de instancias administrado.
- Crea un grupo de instancias administrado regional.
- Habilita la reparación automática para el grupo de instancias administrado.
- Habilita el ajuste de escala automático en tu grupo de instancias administrado.
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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Agrega un grupo de instancias administrado a un servicio de backend
Un servicio de backend es necesario para crear la mayoría de los tipos de balanceadores de cargas.
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.
Usa estas instrucciones para agregar un grupo de instancias administrado a un servicio de backend.
Console
gcloud
Usa el comando
add-backend
:gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=INSTANCE_GROUP \ [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \ --balancing-mode=BALANCING_MODE
La compatibilidad con el modo de balanceo varía según el tipo de balanceador de cargas. Si deseas ver la lista completa, consulta Modo de balanceo disponible para cada balanceador de cargas.
Los parámetros adicionales son obligatorios según el modo del balanceo del grupo de instancias administrado. Para obtener más información, consulta el comando
add-backend
en el SDK.REST
Para agregar un servicio de backend con la API de REST, consulta backendServices.
Limitaciones
El balanceo de cargas con un MIG regional no admite la capacidad de destino
max-rate
en los modos de balanceoRATE
yUTILIZATION
. Para obtener más información sobre los lineamientos de uso de cada balanceador de cargas, consulta Modos de balanceo y configuración de la capacidad objetivo.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 balanceadores de cargas de red, en los 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
gcloud
Usa el comando
set-target-pools
:gcloud compute instance-groups managed set-target-pools INSTANCE_GROUP \ --target-pools TARGET_POOL,..
Donde:
REST
Llama al método
setTargetPools
para un MIG regional o un MIG zonal. Por ejemplo:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/regionInstanceGroupManagers/INSTANCE_GROUP/setTargetPools
Donde:
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 a grupos de instancias administrados
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 llamadohttp-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:
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: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 eninstance-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 paraapp2
y 83 paraapp3
. 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 puerto8888
: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 comomy-service-name
:gcloud compute backend-services update my-backend-service \ --port-name=my-service-name
Crea puertos con nombre
Console
gcloud
Para los grupos de instancias administrados, configura uno o más puertos con nombre mediante el comando
instance-groups managed set-named-ports
. Para los grupos no administrados, usa el comandoinstance-groups 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
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
y80
son para la misma aplicación, puedes asignarname1
a todos esos puertos. Además, puedes asignar dos nombres,name2
yname3
, al puerto8080
. Por último, puedes asignar el puerto9000
aname4
, como se muestra en el siguiente ejemplo: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
REST
La API de
instanceGroupManagers
no ofrece un método de la API desetNamedPorts
. En su lugar, usa la API deinstanceGroups
para hacer esta tarea.Crea una solicitud a la API de
instanceGroups
e incluye el nombre del grupo de instancias. Para obtener el valor actual defingerprint
para el grupo de instancias, obtén información sobre un grupo específico. Incluye el valor defingerprint
y uno o más pares de valoresnamedPorts
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, si los puertos
10
,20
y80
son para la misma aplicación, puedes asignarname1
a todos esos puertos. Además, puedes asignar dos nombres,name2
yname3
, al puerto8080
. Por último, puedes asignar el puerto9000
aname4
, como se muestra en el siguiente ejemplo:POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "name1", "port": 8080 }, { "name": "name2", "port": 9000 } ] }
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
y80
aname1
. Además, asigna el puerto8080
aname2
.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
Próximos pasos
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-12-22 (UTC)
-