En esta página, se proporcionan instrucciones a fin de crear balanceadores de cargas de red internos para balancear las cargas del tráfico de varios protocolos.
Si deseas configurar un balanceador de cargas para varios protocolos, incluidos TCP y UDP, debes crear una regla de reenvío con el protocolo configurado como L3_DEFAULT
. Esta regla de reenvío apunta a un servicio de backend con un protocolo configurado como UNSPECIFIED
.
En este ejemplo, usamos un balanceador de cargas de red de transferencia interna para distribuir el tráfico entre una VM de backend en la región us-west1
. El balanceador de cargas tiene una regla de reenvío con el protocolo L3_DEFAULT
para controlar TCP, UDP, ICMP, ICMPv6, SCTP, ESP, AH y GRE.
Antes de comenzar
- Instala Google Cloud CLI. Para obtener una descripción general completa de la herramienta, consulta la descripción general de la CLI de gcloud. Encontrarás comandos relacionados con el balanceo de cargas en las referencias de la API y la CLI de gcloud.
Si no ejecutaste la CLI de gcloud antes, ejecuta primero el comando
gcloud init
para autenticarte. - Obtén más información sobre bash.
Permisos
Para obtener los permisos que necesitas a fin de completar esta guía, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
- Para crear recursos del balanceador de cargas, ve a: Administrador de balanceador de cargas de Compute (
roles/compute.loadBalancerAdmin
) - Para crear instancias de Compute Engine y grupos de instancias, ve a: Administrador de instancias de Compute (
roles/compute.instanceAdmin.v1
) - Para crear componentes de herramientas de redes: Administrador de redes de Compute (
roles/compute.networkAdmin
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Configura el balanceador de cargas para el tráfico L3_DEFAULT
En los pasos de esta sección, se describen las siguientes configuraciones:
- Un ejemplo en el que se usa una red de VPC en modo personalizado con el nombre
lb-network
. Puedes usar una red de modo automático si solo deseas controlar el tráfico IPv4. Sin embargo, el tráfico IPv6 requiere una subred de modo personalizado. - Una subred de pila única (
stack-type
configurada enIPv4
), que es necesaria para el tráfico IPv4. Cuando creas una subred de pila única en una red de VPC de modo personalizado, eliges un rango de subred IPv4 para la subred. Para el tráfico IPv6 requerimos una subred de doble pila (stack-type
configurada enIPv4_IPv6
). Cuando creas una subred de doble pila en una red de VPC de modo personalizado, eliges un tipo de acceso IPv6 para la subred. Para este ejemplo, establecemos el parámetroipv6-access-type
de la subred enINTERNAL
. Esto significa que a las VMs nuevas de esta subred se les pueden asignar direcciones IPv4 y IPv6 internas. - Reglas de firewall que permiten conexiones entrantes a VMs de backend.
- El grupo de instancias de backend y los componentes del balanceador de cargas usados para este ejemplo se encuentran en la región y la subred que se incluyen a continuación:
- Región:
us-west1
- Subred:
lb-subnet
, con el rango de direcciones IPv4 principal10.1.2.0/24
. Aunque elijas qué rango de direcciones IPv4 se configurará en la subred, el rango de direcciones IPv6 se asigna automáticamente. Google proporciona un bloque CIDR IPv6 de tamaño fijo (/64).
- Región:
- Una VM de backend en un grupo de instancias administrado en la zona
us-west1-a
. - Una VM de cliente para probar conexiones a los backends.
- Un balanceador de cargas de red interno de transferencia con los siguientes componentes:
- Una verificación de estado del servicio de backend.
- Un servicio de backend en la región
us-west1
con el protocolo configurado enUNSPECIFIED
para administrar la distribución de conexiones en el grupo de instancias zonal. - Una regla de reenvío con el protocolo configurado en
L3_DEFAULT
y el puerto configurado enALL
.
Configura una red, una región y una subred
Para configurar subredes con rangos de IPv6 internos, habilita un rango de IPv6 interno de ULA de la red de nube privada virtual (VPC). Los rangos de subredes IPv6 internas se asignan a partir de este rango. Para crear la red y subred de ejemplo, sigue estos pasos:
Console
Para admitir el tráfico IPv4 e IPv6, sigue estos pasos:
En la consola de Google Cloud, ve a la página Redes de VPC.
Haz clic en Crear red de VPC.
En Nombre, ingresa
lb-network
.Si deseas configurar rangos de direcciones IPv6 internos en subredes de esta red, completa estos pasos:
- En Rango de IPv6 interno de ULA de la red de VPC, selecciona Habilitado.
- En Asignar rango de IPv6 interno, selecciona Automáticamente o Manualmente.
En Modo de creación de subred, selecciona Personalizado.
En la sección Subred nueva, especifica los siguientes parámetros de configuración para una subred:
- En Nombre, ingresa
lb-subnet
. - En Región, selecciona
us-west1
. - Para crear una subred de pila doble, en Tipo de pila de IP, selecciona IPv4 e IPv6 (pila doble).
- En el Rango de IPv4, ingresa
10.1.2.0/24
. - En Tipo de acceso IPv6, selecciona Interno.
- En Nombre, ingresa
Haz clic en Listo.
Haz clic en Crear.
Para que sea compatible con el tráfico IPv4, sigue estos pasos:
En la consola de Google Cloud, ve a la página Redes de VPC.
Haz clic en Crear red de VPC.
En Nombre, ingresa
lb-network
.En la sección Subredes:
- Establece Modo de creación de subred en Personalizado.
- En la sección Nueva subred, ingresa la siguiente información:
- Nombre:
lb-subnet
- Región:
us-west1
- Tipo de pila IP: IPv4 (pila única)
- Rangos de direcciones IP:
10.1.2.0/24
- Nombre:
- Haz clic en Listo.
Haz clic en Crear.
gcloud
Para el tráfico IPv4 e IPv6, usa los siguientes comandos:
Para crear una nueva red de VPC en modo personalizado, ejecuta el comando
gcloud compute networks create
.Para configurar los rangos de IPv6 internos en cualquier subred de esta red, usa la marca
--enable-ula-internal-ipv6
. Esta opción asigna un prefijo ULA/48
que pertenece al rangofd20::/20
que usa Google para los rangos de subred IPv6 internos.gcloud compute networks create lb-network \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Dentro de
lb-network
, crea una subred para backends en la regiónus-west1
.Para crear las subredes, ejecuta el comando
gcloud compute networks subnets create
:gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1 \ --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL
Para el tráfico IPv4, usa el siguiente comando:
Para crear la red de VPC personalizada, usa el comando
gcloud compute networks create
.gcloud compute networks create lb-network --subnet-mode=custom
Si deseas crear la subred para backends en la región
us-west1
dentro de la redlb-network
, usa el comandogcloud compute networks subnets create
.gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
Para el tráfico IPv4 e IPv6, usa los siguientes comandos:
Crea una nueva red de VPC en modo personalizado. Realiza una solicitud
POST
al métodonetworks.insert
.Para configurar rangos IPv6 internos en cualquier subred de esta red, configura
enableUlaInternalIpv6
comotrue
. Esta opción asigna un rango/48
que pertenece al rangofd20::/20
que usa Google para los rangos de subred IPv6 internos.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "lb-network", "mtu": MTU, "enableUlaInternalIpv6": true, }
Reemplaza lo siguiente:
PROJECT_ID
: es el ID del proyecto en el que se crea la red de VPC.MTU
: es la unidad de transmisión máxima de la red. Puede ser1460
(predeterminada) o1500
. Revisa la descripción general de la unidad de transmisión máxima antes de configurar la MTU como1500
.
Realiza una solicitud
POST
al métodosubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "10.1.2.0/24", "network": "lb-network", "name": "lb-subnet" "stackType": IPV4_IPV6, "ipv6AccessType": Internal }
Para el tráfico IPv4, sigue estos pasos:
Realiza una solicitud
POST
al métodonetworks.insert
. ReemplazaPROJECT_ID
por el ID del proyecto de Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "name": "lb-network", "autoCreateSubnetworks": false }
Realiza dos solicitudes
POST
al métodosubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks { "name": "lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "privateIpGoogleAccess": false }
Configura reglas de firewall
En este ejemplo, se usan las siguientes reglas de firewall:
fw-allow-lb-access
: Es una regla de entrada aplicable a todos los destinos en la red de VPC, de modo que se admite el tráfico de las fuentes en los rangos10.1.2.0/24
. Con esta regla, se permite el tráfico entrante desde cualquier cliente ubicado en la subred.fw-allow-lb-access-ipv6
: Es una regla de entrada aplicable a todos los destinos en la red de VPC, de modo que se admite el tráfico de las fuentes en el rango de IPv6 configurado en la subred. Con esta regla, se permite el tráfico de IPv6 entrante desde cualquier cliente ubicado en la subred.fw-allow-ssh
: Una regla de entrada aplicable a las instancias con balanceo de cargas y que permite la conectividad SSH entrante en el puerto TCP 22 desde cualquier dirección. Puedes elegir un rango de IP de origen más restrictivo para esta regla; por ejemplo, puedes especificar solo los rangos de IP del sistema desde el cual iniciarás sesiones SSH. En este ejemplo se usa la etiqueta de destinoallow-ssh
para identificar las VM a las que se debe aplicar.fw-allow-health-check
: es una regla de entrada aplicable a las instancias con balanceo de cargas, que permite el tráfico de los sistemas de verificación de estado de Google Cloud (130.211.0.0/22
y35.191.0.0/16
). En este ejemplo se usa la etiqueta de destinoallow-health-check
para identificar las instancias a las que debe aplicarse.fw-allow-health-check-ipv6
: Es una regla de entrada aplicable a las instancias con balanceo de cargas, que permite el tráfico de los sistemas de verificación de estado de Google Cloud (2600:2d00:1:b029::/64
). En este ejemplo se usa la etiqueta de destinoallow-health-check-ipv6
para identificar las instancias a las que debe aplicarse.
Sin estas reglas de firewall, la regla predeterminada de denegación de entrada bloquea el tráfico entrante a las instancias de backend.
Console
En la consola de Google Cloud, ve a la página Políticas de firewall.
Para permitir que el tráfico de TCP, ICMP, UDP y IPv4 llegue al grupo de instancias de backend
ig-a
, haz lo siguiente:- Haz clic en Crear regla de firewall.
- Nombre:
fw-allow-lb-access
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: Entrada
- Acción si hay coincidencia: permitir
- Objetivos: todas las instancias de la red
- Filtro de fuente: Rangos de IPv4
- Rangos de IPv4 de origen:
10.1.2.0/24
- En Protocolos y puertos, selecciona Protocolos y puertos especificados.
- Selecciona TCP y, luego, ingresa
ALL
. - Selecciona UDP.
- Selecciona Otro y, luego, ingresa
ICMP
.
- Selecciona TCP y, luego, ingresa
Haz clic en Crear.
Para permitir conexiones SSH entrantes, haz lo siguiente:
- Haz clic en Crear regla de firewall.
- Nombre:
fw-allow-ssh
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: Entrada
- Acción si hay coincidencia: permitir
- Objetivos: etiquetas de destino especificadas
- Etiquetas de destino:
allow-ssh
- Filtro de fuente: Rangos de IPv4
- Rangos de IPv4 de origen:
0.0.0.0/0
- Protocolos y puertos: Elige Protocolos y puertos especificados y, luego, ingresa
tcp:22
.
Haz clic en Crear.
Para permitir que el tráfico de TCP, ICMP, IPv6 y UDP llegue al grupo de instancias de backend
ig-a
:- Haz clic en Crear regla de firewall.
- Nombre:
fw-allow-lb-access-ipv6
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: Entrada
- Acción si hay coincidencia: permitir
- Objetivos: todas las instancias de la red
- Filtro de fuente: Rangos de IPv6
- Rangos de IPv6 de origen: IPV6_ADDRESS asignados en
lb-subnet
- En Protocolos y puertos, selecciona Protocolos y puertos especificados.
- Selecciona TCP y, luego, ingresa
0-65535
. - Selecciona UDP.
- Selecciona Otro y, para el protocolo ICMPv6, ingresa
58
.
- Selecciona TCP y, luego, ingresa
Haz clic en Crear.
Para permitir las verificaciones de estado de IPv6 de Google Cloud, sigue estos pasos:
- Haz clic en Crear regla de firewall.
- Nombre:
fw-allow-health-check-ipv6
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: Entrada
- Acción si hay coincidencia: permitir
- Objetivos: etiquetas de destino especificadas
- Etiquetas de destino:
allow-health-check-ipv6
- Filtro de fuente: Rangos de IPv6
- Rangos de IPv6 de origen:
2600:2d00:1:b029::/64
- Protocolos y puertos: permitir todos
Haz clic en Crear.
Para permitir las verificaciones de estado de IPv4 de Google Cloud, sigue estos pasos:
- Haz clic en Crear regla de firewall.
- Nombre:
fw-allow-health-check
- Red:
lb-network
- Prioridad:
1000
- Dirección del tráfico: Entrada
- Acción si hay coincidencia: permitir
- Objetivos: etiquetas de destino especificadas
- Etiquetas de destino:
allow-health-check
- Filtro de fuente: Rangos de IPv4
- Rangos de IPv4 de origen:
130.211.0.0/22
y35.191.0.0/16
- Protocolos y puertos: permitir todos
Haz clic en Crear.
gcloud
Para permitir que el tráfico TCP IPv4 llegue al grupo de instancias de backend
ig-a
, crea la siguiente regla:gcloud compute firewall-rules create fw-allow-lb-access \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmp
Crea la
fw-allow-ssh
regla de firewall para permitir la conectividad SSH a las VMs mediante la etiqueta de redallow-ssh
. Cuando omitessource-ranges
, Google Cloud interpreta que la regla significa cualquier fuente.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Para permitir que el tráfico IPv6 llegue al grupo de instancias de backend
ig-a
, crea la siguiente regla:gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=IPV6_ADDRESS \ --rules=all
Reemplaza
IPV6_ADDRESS
por la dirección IPv6 asignada enlb-subnet
.Crea la regla de firewall
fw-allow-health-check
para permitir las verificaciones de estado de Google Cloud.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
Crea la regla
fw-allow-health-check-ipv6
para permitir las verificaciones de estado IPv6 de Google Cloud.gcloud compute firewall-rules create fw-allow-health-check-ipv6 \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64 \ --rules=tcp,udp,icmp
API
Para crear la regla de firewall
fw-allow-lb-access
, realiza una solicitudPOST
al métodofirewalls.insert
. ReemplazaPROJECT_ID
por el ID del proyecto de Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crea la regla de firewall
fw-allow-lb-access-ipv6
mediante una solicitudPOST
al métodofirewalls.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-lb-access-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "IPV6_ADDRESS" ], "allPorts": true, "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "58" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Reemplaza IPV6_ADDRESS por la dirección IPv6 asignada en
lb-subnet
.Para crear la regla de firewall
fw-allow-ssh
, realiza una solicitudPOST
al métodofirewalls.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-ssh", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Para crear la regla de firewall
fw-allow-health-check
, realiza una solicitudPOST
al métodofirewalls.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "allow-health-check" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crea la regla de firewall
fw-allow-health-check-ipv6
mediante una solicitudPOST
al métodofirewalls.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-allow-health-check-ipv6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "2600:2d00:1:b029::/64" ], "targetTags": [ "allow-health-check-ipv6" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crea VMs de backend y grupos de instancias
Para esta situación de balanceo de cargas, crearás un grupo de instancias administrado zonal de Compute Engine y, luego, instalarás un servidor web Apache.
Para manejar el tráfico IPv4 e IPv6, configura las VM de backend a fin de que sean de pila doble. Establece stack-type
de la VM en IPv4_IPv6
. Las VM también heredan la configuración ipv6-access-type
(en este ejemplo, INTERNAL
) de la subred. Para obtener más detalles sobre los requisitos de IPv6, consulta la descripción general del balanceador de cargas de red de transferencia interno: reglas de reenvío.
Si deseas usar las VM existentes como backends, actualiza las VM para que sean de pila doble mediante el comando gcloud compute instances network-interfaces update.
Las instancias que participan como VMs de backend para los balanceadores de cargas de red de transferencia internos deben ejecutar el entorno invitado de Linux o el entorno invitado de Windows adecuados, o algún otro proceso que proporcione una funcionalidad equivalente.
Para simplificar el instructivo, las VMs de backend ejecutan Debian GNU/Linux 10.
Crea el grupo de instancias
Console
Para admitir el tráfico IPv4 e IPv6, sigue estos pasos:
Crear una plantilla de instancias En la consola de Google Cloud, ve a la página Plantillas de instancia.
- Haga clic en Crear plantilla de instancias.
- En Nombre, ingresa
vm-a1
. - Asegúrate de que el disco de arranque esté configurado como
una imagen de Debian, como Debian GNU/Linux 12 (bookWorm). En estas instrucciones, se usan comandos que solo están disponibles en Debian, como
apt-get
. - Expande la sección Opciones avanzadas.
Expande la sección Administración y, luego, copia la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio. La secuencia de comandos de inicio también configura el servidor Apache para que escuche en el puerto
8080
en lugar de en el puerto80
.#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
Expande la sección Herramientas de redes y, luego, especifica lo siguiente:
- En Etiquetas de red, agrega
allow-ssh
yallow-health-check-ipv6
. - En Interfaces de red, haz clic en la interfaz predeterminada y configura los siguientes campos:
- Red:
lb-network
- Subred:
lb-subnet
- Tipo de pila IP: IPv4 e IPv6 (pila doble)
- Red:
- En Etiquetas de red, agrega
Haz clic en Crear.
Para que sea compatible con el tráfico IPv4, sigue estos pasos:
Crear una plantilla de instancias En la consola de Google Cloud, ve a la página Plantillas de instancia.
Haga clic en Crear plantilla de instancias.
- En Nombre, ingresa
vm-a1
. - Asegúrate de que el disco de arranque esté configurado como
una imagen de Debian, como Debian GNU/Linux 12 (bookWorm). En estas instrucciones, se usan comandos que solo están disponibles en Debian, como
apt-get
. - Expande la sección Opciones avanzadas.
Expande la sección Administración y, luego, copia la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio. La secuencia de comandos de inicio también configura el servidor Apache para que escuche en el puerto
8080
en lugar de en el puerto80
.#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
Expande la sección Herramientas de redes y, luego, especifica lo siguiente:
- En Etiquetas de red, agrega
allow-ssh
yallow-health-check
. - En Interfaces de red, haz clic en la interfaz predeterminada y configura los siguientes campos:
- Red:
lb-network
- Subred:
lb-subnet
- Tipo de pila IP: IPv4 (pila única)
- Red:
- En Etiquetas de red, agrega
Haz clic en Crear.
- En Nombre, ingresa
Cree un grupo de instancias administrado. Ve a la página Grupos de instancias en la consola de Google Cloud.
- Haga clic en Crear grupo de instancias.
- Selecciona Nuevo grupo de instancias administrado (sin estado). Para obtener más información, consulta MIG con o sin estado.
- En Nombre, ingresa
ig-a
. - En Ubicación, selecciona Zona única.
- En Región, selecciona
us-west1
. - En Zona, selecciona
us-west1-a
. - En Plantilla de instancias, selecciona
vm-a1
. Especifica la cantidad de instancias que quieres crear en el grupo.
En este ejemplo, especifica las siguientes opciones en Ajuste de escala automático:
- En Modo de ajuste de escala automático, selecciona
Off:do not autoscale
. - En Cantidad máxima de instancias, ingresa
2
.
- En Modo de ajuste de escala automático, selecciona
Haz clic en Crear.
gcloud
En las instrucciones de gcloud
que se incluyen en esta guía, se supone que usas Cloud Shell o algún otro entorno con bash instalado.
Crea una plantilla de instancias de VM con el servidor de HTTP con el comando
gcloud compute instance-templates create
.La secuencia de comandos de inicio también configura el servidor Apache para que escuche en el puerto
8080
en lugar de en el puerto80
.Para controlar el tráfico IPv4 e IPv6, usa el siguiente comando.
gcloud compute instance-templates create vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=allow-ssh \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
O bien, si deseas controlar solo el tráfico IPv4, usa el siguiente comando.
gcloud compute instance-templates create vm-a1 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=allow-ssh \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Crea un grupo de instancias administrado en la zona con el comando
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create ig-a \ --zone us-west1-a \ --size 2 \ --template vm-a1
api
Para controlar el tráfico IPv4 e IPv6, sigue estos pasos:
Crea una VM mediante la realización de solicitudes
POST
al métodoinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check-ipv6", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Para controlar el tráfico IPv4, sigue estos pasos:
Crea una VM mediante la realización de solicitudes
POST
al métodoinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "vm-a1", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-a1", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname="$(curl -H "Metadata-Flavor:Google" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)"\necho "Page served from: $vm_hostname" | \\\ntee /var/www/html/index.html\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Crea un grupo de instancias mediante una solicitud
POST
al métodoinstanceGroups.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups { "name": "ig-a", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Agrega instancias a cada grupo de instancias mediante una solicitud
POST
al métodoinstanceGroups.addInstances
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances { "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1" } ] }
Crear una VM de cliente
En este ejemplo se crea una VM de cliente en la misma región en la que están las VM de backend (servidor). El cliente se usa para validar la configuración del balanceador de cargas y demostrar el comportamiento esperado, como se describe en la sección de pruebas.
Para el tráfico IPv4 e IPv6, haz lo siguiente:
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Haga clic en Crear instancia.
Configura el campo Nombre como
vm-client-ipv6
.En Zona establece
us-west1-a
.Expande la sección Opciones avanzadas y, a continuación, realiza los siguientes cambios:
- Expande Herramientas de redes y, luego, agrega
allow-ssh
a Etiquetas de red. - En Interfaces de red, haz clic en Editar, realiza los siguientes cambios y, luego, haz clic en Listo:
- Red:
lb-network
- Subred:
lb-subnet
- Tipo de pila IP: IPv4 e IPv6 (pila doble)
- IP interna principal: efímera (automática)
- IP externa: Efímera
- Red:
- Expande Herramientas de redes y, luego, agrega
Haz clic en Crear.
gcloud
La VM de cliente puede estar en cualquier zona de la misma región que el balanceador de cargas y puede usar cualquier subred en esa región. En este ejemplo el cliente se encuentra en la zona us-west1-a
y usa la misma subred que las VM de backend.
gcloud compute instances create vm-client-ipv6 \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --stack-type=IPV4_IPV6 \ --tags=allow-ssh \ --subnet=lb-subnet
api
Realiza una solicitud POST
al método instances.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances { "name": "vm-client-ipv6", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "stackType": "IPV4_IPV6", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-image-name", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Para el tráfico IPv4, haz lo siguiente:
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en Crear instancia.
En Nombre, ingresa
vm-client
.En Zona, ingresa
us-west1-a
.Expande la sección Opciones avanzadas.
Expande Herramientas de redes y, a continuación, configura los siguientes campos:
- En Etiquetas de red, ingresa
allow-ssh
. - En Interfaces de red, selecciona lo siguiente:
- Red:
lb-network
- Subred:
lb-subnet
- Red:
- En Etiquetas de red, ingresa
Haz clic en Crear.
gcloud
La VM de cliente puede estar en cualquier zona de la misma región que el balanceador de cargas y puede usar cualquier subred en esa región. En este ejemplo el cliente se encuentra en la zona us-west1-a
y usa la misma subred que las VM de backend.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
API
Realiza una solicitud POST
al método instances.insert
.
Reemplaza PROJECT_ID
por el ID del proyecto de Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances { "name": "vm-client", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-image-name", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Configura los componentes del balanceador de cargas
Crea un balanceador de cargas para varios protocolos
gcloud
Crea una verificación de estado HTTP para el puerto 80. Esta verificación de estado se usa para comprobar el estado de los backends en el grupo de instancias
ig-a
.gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Crea un servicio de backend con el protocolo configurado como
UNSPECIFIED
:gcloud compute backend-services create be-ilb-l3-default \ --load-balancing-scheme=internal \ --protocol=UNSPECIFIED \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Agrega el grupo de instancias al servicio de backend:
gcloud compute backend-services add-backend be-ilb-l3-default \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Para el tráfico IPv6: Crea una regla de reenvío con el protocolo configurado como
L3_DEFAULT
a fin de controlar todo el tráfico de protocolo IPv6 compatible. Todos los puertos se deben configurar con reglas de reenvíoL3_DEFAULT
.gcloud compute forwarding-rules create fr-ilb-ipv6 \ --region=us-west1 \ --load-balancing-scheme=internal \ --subnet=lb-subnet \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1 \ --ip-version=IPV6
Para el tráfico IPv4: Crea una regla de reenvío con el protocolo configurado como
L3_DEFAULT
para controlar todo el tráfico de protocolo IPv4 compatible. Todos los puertos se deben configurar con reglas de reenvíoL3_DEFAULT
. Usa10.1.2.99
como la dirección IP interna.gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
Para crear la verificación de estado, realiza una solicitud
POST
al métodoregionHealthChecks.insert
. ReemplazaPROJECT_ID
por el ID del proyecto de Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks { "name": "hc-http-80", "type": "HTTP", "httpHealthCheck": { "port": 80 } }
Crea el servicio de backend regional mediante una solicitud
POST
al métodoregionBackendServices.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-l3-default", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UNSPECIFIED", "connectionDraining": { "drainingTimeoutSec": 0 } }
Para el tráfico IPv6: Crea la regla de reenvío mediante una solicitud
POST
al métodoforwardingRules.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-ipv6", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "ipVersion": "IPV6", "networkTier": "PREMIUM" }
Para el tráfico IPv4: Crea la regla de reenvío mediante una solicitud
POST
al métodoforwardingRules.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "10.1.2.99", "IPProtocol": "L3_DEFAULT", "allPorts": true, "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
Prueba el balanceador de cargas
En las siguientes pruebas, se muestra cómo validar la configuración del balanceador de cargas y conocer su comportamiento esperado.
Prueba la conexión desde la VM del cliente
En esta prueba, se contacta al balanceador de cargas desde una VM de cliente diferente, es decir, no desde una VM de backend del balanceador de cargas.
gcloud:IPv6
Conéctate a la instancia de VM de cliente.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
Describe la regla de reenvío de IPv6
fr-ilb-ipv6
. Ten en cuenta laIPV6_ADDRESS
en la descripción.gcloud compute forwarding-rules describe fr-ilb-ipv6 --region=us-west1
Desde los clientes con conectividad IPv6, ejecuta el siguiente comando: Reemplaza
IPV6_ADDRESS
por la dirección IPv6 efímera en la regla de reenvíofr-ilb-ipv6
.curl -m 10 -s http://IPV6_ADDRESS:80
Por ejemplo, si la dirección IPv6 asignada es
[fd20:1db0:b882:802:0:46:0:0/96]:80
, el comando debe verse de la siguiente manera:curl -m 10 -s http://[fd20:1db0:b882:802:0:46:0:0]:80
gcloud:IPv4
Conéctate a la instancia de VM de cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Describe la regla de reenvío de IPv4
fr-ilb
.gcloud compute forwarding-rules describe fr-ilb --region=us-west1
Realiza una solicitud web al balanceador de cargas mediante
curl
para establecer contacto con su dirección IP. Repite la solicitud para que puedas ver que las respuestas provienen de diferentes VMs de backend. El nombre de la VM que genera la respuesta se muestra en el texto de la respuesta HTML, en virtud del contenido de/var/www/html/index.html
en cada VM de backend. Las respuestas esperadas tienen el aspectoPage served from: vm-a1
.curl http://10.1.2.99
La regla de reenvío está configurada para entregar en los puertos
80
y53
. Para enviar tráfico a esos otros puertos, agrega dos puntos (:
) y el número de puerto después de la dirección IP, de esta manera:curl http://10.1.2.99:80
Haz ping en la dirección IP del balanceador de cargas
En esta prueba se demuestra un comportamiento esperado: puedes hacer ping a la dirección IP del balanceador de cargas.
gcloud:IPv6
Conéctate a la instancia de VM de cliente.
gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
Intenta hacer ping en la dirección IPv6 del balanceador de cargas. Reemplaza
IPV6_ADDRESS
por la dirección IPv6 efímera en la regla de reenvíofr-ilb-ipv6
.Ten en cuenta que obtienes una respuesta y que el comando
ping
funciona en este ejemplo.ping6 IPV6_ADDRESS
Por ejemplo, si la dirección IPv6 asignada es
[2001:db8:1:1:1:1:1:1/96]
, el comando es el siguiente:ping6 2001:db8:1:1:1:1:1:1
El resultado es similar a este:
@vm-client: ping
IPV6_ADDRESS
PINGIPV6_ADDRESS
(IPV6_ADDRESS
) 56(84) bytes of data. 64 bytes fromIPV6_ADDRESS
: icmp_seq=1 ttl=64 time=1.58 ms
gcloud:IPv4
Conéctate a la instancia de VM de cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Intenta hacer ping en la dirección IPv4 del balanceador de cargas. Ten en cuenta que obtienes una respuesta y que el comando
ping
funciona en este ejemplo.ping 10.1.2.99
Esta es la salida:
@vm-client: ping 10.1.2.99 PING 10.1.2.99 (10.1.2.99) 56(84) bytes of data. 64 bytes from 10.1.2.99: icmp_seq=1 ttl=64 time=1.58 ms 64 bytes from 10.1.2.99: icmp_seq=2 ttl=64 time=0.242 ms 64 bytes from 10.1.2.99: icmp_seq=3 ttl=64 time=0.295 ms
Opciones de configuración adicionales
En esta sección se expande el ejemplo de configuración para proporcionar opciones de configuración alternativas y adicionales. Todas las tareas son opcionales. Puedes realizarlas en cualquier orden.
Puedes reservar una dirección IP interna estática para tu ejemplo. Esta configuración permite que varias reglas de reenvío interno usen la misma dirección IP con diferentes protocolos y puertos.
De todos modos, los backends del balanceador de cargas de ejemplo deben ubicarse en la región us-west1
.
En el siguiente diagrama, se muestra la arquitectura para este ejemplo:
También puedes considerar usar las siguientes opciones de configuración de reglas de reenvío:
Reglas de reenvío con varios puertos:
- Protocolo
TCP
con los puertos80,8080
- Protocolo
L3_DEFAULT
con los puertosALL
- Protocolo
Reglas de reenvío con todos los puertos:
- Protocolo
TCP
con los puertosALL
- Protocolo
L3_DEFAULT
con los puertosALL
- Protocolo
Reservar dirección IPv4 interna estática
Reserva una dirección IP interna estática para 10.1.2.99
y establece su marca --purpose
en SHARED_LOADBALANCER_VIP
. La marca --purpose
es obligatoria para que muchas reglas de reenvío puedan usar la misma dirección IP interna.
gcloud
Usa el comando gcloud compute addresses create
:
gcloud compute addresses create internal-lb-ipv4 \ --region us-west1 \ --subnet lb-subnet \ --purpose SHARED_LOADBALANCER_VIP \ --addresses 10.1.2.99
API
Llama al
método addresses.insert
.
Reemplaza PROJECT_ID
por el ID del proyecto de Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/addresses
El cuerpo de la solicitud debe incluir el addressType
que debe ser INTERNAL
, el name
de la dirección y la subnetwork
a la que pertenece la dirección IP. Debes especificar el address
como 10.1.2.99
.
{ "addressType": "INTERNAL", "name": "internal-lb-ipv4", "subnetwork": "regions/us-west1/subnetworks/lb-subnet", "purpose": "SHARED_LOADBALANCER_VIP", "address": "10.1.2.99" }
Configura los componentes del balanceador de cargas
Configura tres balanceadores de cargas con los siguientes componentes:
- El primer balanceador de cargas tiene una regla de reenvío con el protocolo
TCP
y el puerto80
. El tráfico de TCP que llega a la dirección IP interna en el puerto80
se controla mediante la regla de reenvíoTCP
. - El segundo balanceador de cargas tiene una regla de reenvío con el protocolo
UDP
y el puerto53
. El tráfico de UDP que llega a la dirección IP interna en el puerto53
se controla mediante la regla de reenvíoUDP
. - El tercer balanceador de cargas tiene una regla de reenvío con el protocolo
L3_DEFAULT
y el puertoALL
. El resto del tráfico que no coincide con las reglas de reenvíoTCP
oUDP
se controla mediante la regla de reenvíoL3_DEFAULT
. - Los tres balanceadores de cargas comparten la misma dirección IP interna estática (
internal-lb-ipv4
) en sus reglas de reenvío.
Crea el primer balanceador de cargas
Crea el primer balanceador de cargas para el tráfico de TCP en el puerto 80
.
gcloud
Crea el servicio de backend para el tráfico TCP:
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Agrega el grupo de instancias al servicio de backend:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Crea una regla de reenvío para el servicio de backend. Usa la dirección IP interna reservada estática (
internal-lb-ipv4
) para la dirección IP interna.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
Crea el servicio de backend regional mediante una solicitud
POST
al métodoregionBackendServices.insert
. ReemplazaPROJECT_ID
por el ID del proyecto de Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "TCP", "connectionDraining": { "drainingTimeoutSec": 0 } }
Create the forwarding rule by making a
POST
request to theforwardingRules.insert
method:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb", "IPAddress": "internal-lb-ipv4", "IPProtocol": "TCP", "ports": [ "80" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb", "networkTier": "PREMIUM" }
Crea el segundo balanceador de cargas
Crea el segundo balanceador de cargas para el tráfico UDP en el puerto 53
.
gcloud
Crea un servicio de backend con el protocolo configurado como
UDP
.gcloud compute backend-services create be-ilb-udp \ --load-balancing-scheme=internal \ --protocol=UDP \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Agrega el grupo de instancias al servicio de backend:
gcloud compute backend-services add-backend be-ilb-udp \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Crea una regla de reenvío para el servicio de backend. Usa la dirección IP interna reservada estática (
internal-lb-ipv4
) para la dirección IP interna.gcloud compute forwarding-rules create fr-ilb-udp \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=UDP \ --ports=53 \ --backend-service=be-ilb-udp \ --backend-service-region=us-west1
API
Crea el servicio de backend regional mediante una solicitud
POST
al métodoregionBackendServices.insert
. ReemplazaPROJECT_ID
por el ID del proyecto de Google Cloud.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices { "name": "be-ilb-udp", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" } ], "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "protocol": "UDP", "connectionDraining": { "drainingTimeoutSec": 0 } }
Para crear la regla de reenvío, realiza una solicitud
POST
al métodoforwardingRules.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-udp", "IPAddress": "internal-lb-ipv4", "IPProtocol": "UDP", "ports": [ "53" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-udp", "networkTier": "PREMIUM" }
Crea el tercer balanceador de cargas
Crea la regla de reenvío del tercer balanceador de cargas para que use la dirección IP interna reservada estática.
gcloud
Crea la regla de reenvío con el protocolo configurado en L3_DEFAULT
para controlar todo el resto de tráfico del protocolo IPv4 compatible. Usa la dirección IP interna reservada estática (internal-lb-ipv4
) como la dirección IP interna.
gcloud compute forwarding-rules create fr-ilb-l3-default \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=internal-lb-ipv4 \ --ip-protocol=L3_DEFAULT \ --ports=ALL \ --backend-service=be-ilb-l3-default \ --backend-service-region=us-west1
API
Para crear la regla de reenvío, realiza una solicitud POST
al método forwardingRules.insert
.
Reemplaza PROJECT_ID
por el ID del proyecto de Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules { "name": "fr-ilb-l3-default", "IPAddress": "internal-lb-ipv4", "IPProtocol": "L3_DEFAULT", "ports": [ "ALL" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default", "networkTier": "PREMIUM" }
Prueba el balanceador de cargas
Para probar tu balanceador de cargas, sigue los pasos en la sección anterior.
¿Qué sigue?
- Para obtener información sobre conceptos importantes, consulta Descripción general del balanceador de cargas de red de transferencia interna.
- Si deseas obtener información sobre cómo configurar la conmutación por error, consulta Configura la conmutación por error para el balanceador de cargas de red de transferencia interno.
- Si deseas obtener información sobre cómo configurar Logging y Monitoring para los balanceadores de cargas de red de transferencia interna, consulta Registro y supervisión del balanceador de cargas de red de transferencia interna.
- Para obtener información sobre la solución de problemas, consulta Soluciona problemas de balanceadores de cargas de red de paso interno.
- Limpia una configuración de balanceo de cargas.