En Google Cloud, puedes integrar dispositivos de terceros de forma altamente disponible y escalable. Para ello, configura una ruta estática y define su salto siguiente como el Google Cloud balanceador de carga de red de paso a través interno. De esta forma, el balanceador de carga puede balancear la carga del tráfico de un prefijo de destino a un grupo de aplicaciones de VM de terceros con comprobación del estado.
En esta guía se usa un ejemplo para mostrarte cómo configurar un balanceador de carga de red de paso a través interno como siguiente salto. Antes de seguir esta guía, familiarízate con lo siguiente:
- Conceptos de los balanceadores de carga de red de paso a través internos
- Balanceadores de carga de red de paso a través internos como siguientes saltos
Permisos
Para seguir esta guía, debes crear instancias y modificar una red en un proyecto. Debes tener el rol de propietario o editor del proyecto, o bien tener todos los roles de gestión de identidades y accesos de Compute Engine siguientes:
Tarea | Rol necesario |
---|---|
Crear redes, subredes y componentes de balanceador de carga | Administrador de red |
Añadir y eliminar reglas de cortafuegos | Administrador de seguridad |
Crear instancias | Administrador de instancias de Compute |
Para obtener más información, consulta las siguientes guías:
Configurar balanceadores de carga de red de paso a través internos como siguientes saltos con backends comunes
En esta guía se explica cómo usar un balanceador de carga de red de transferencia interna como el siguiente salto de una ruta estática para integrar dispositivos virtuales escalados horizontalmente.
La solución que se describe en esta guía crea VMs de dispositivo que ejecutan Debian Linux. Las VMs de ejemplo no realizan ningún filtrado de paquetes, pero puedes añadir esa función modificando la configuración de red de este ejemplo o usando otro software de filtrado o enrutamiento de paquetes.
En los pasos de esta sección se describe cómo configurar los siguientes recursos:
- Redes de VPC y subredes personalizadas de ejemplo
- Google Cloud reglas de cortafuegos que permiten las conexiones entrantes a las máquinas virtuales (VMs) del dispositivo backend
- Rutas estáticas
- Dos máquinas virtuales de cliente para probar las conexiones
- Los siguientes componentes del balanceador de carga de red de paso a través interno:
- Máquinas virtuales de backend de un grupo de instancias gestionado
- Una comprobación del estado de las VMs de backend
- Un servicio de backend interno en la región
us-west1
para gestionar la distribución de conexiones entre las VMs de backend - Una regla de reenvío interna y una dirección IP interna para el frontend del balanceador de carga
En este ejemplo se muestra el balanceo de carga en varias NICs de backend, tal como se describe en Balanceo de carga en varias NICs.
La topología tiene este aspecto:
En el diagrama se muestran algunos de los recursos que crea el ejemplo:
- Instancias de aplicación detrás de un balanceador de carga de red de paso a través interno (
fr-ilb1
en este ejemplo). Las instancias de la aplicación solo tienen direcciones IP internas. - Cada instancia de la aplicación tiene habilitada la marca
can-ip-forward
. Sin esta marca, una VM de Compute Engine solo puede transmitir un paquete si la dirección IP de origen del paquete coincide con la dirección IP interna de la VM, una dirección IP de un intervalo de IP de alias o una dirección IP de una regla de reenvío que se resuelva en la VM. La marcacan-ip-forward
cambia este comportamiento para que la VM pueda transmitir paquetes con cualquier dirección IP de origen. - Una ruta estática con el destino
10.50.1.0/24
y el siguiente salto configurado en la regla de reenvío del balanceador de cargafr-ilb1
.
El diagrama también muestra el flujo de tráfico:
- La red de VPC
testing
tiene una ruta estática para el tráfico que va a la subred10.50.1.0/24
. Esta ruta dirige el tráfico al balanceador de carga. - El balanceador de carga reenvía el tráfico a una de las instancias de la aplicación en función de la afinidad de sesión configurada. La afinidad de sesión solo afecta al tráfico TCP.
Para ver más casos prácticos, consulta Balanceadores de carga TCP/UDP internos como siguiente salto.
Configurar las redes, la región y las subredes
En este ejemplo se usan las siguientes redes de VPC, región y subredes:
Redes: en este ejemplo se necesitan dos redes, cada una con al menos una subred. Cada VM de dispositivo de terceros de backend debe tener al menos dos interfaces de red, una en cada red de VPC. Las redes de este ejemplo son redes de VPC en modo personalizado llamadas
testing
yproduction
. La redtesting
de este ejemplo contiene el cliente y el balanceador de carga. La redproduction
contiene la VM de destino.Región: las subredes se encuentran en la región
us-west1
. Las subredes deben estar en la misma región, ya que las instancias de VM son recursos zonales.Subredes: las subredes
testing-subnet
yproduction-subnet
usan los intervalos de direcciones IP principales10.30.1.0/24
y10.50.1.0/24
, respectivamente.
Para crear las redes y subredes de ejemplo, sigue estos pasos.
Consola
Crea la red testing
y la testing-subnet
:
En la Google Cloud consola, ve a la página Redes de VPC.
Haz clic en Crear red VPC.
Asigne un Nombre de
testing
.En la sección Subredes:
- Elige Personalizado en Modo de creación de subred.
- En la sección Nueva subred, introduce la siguiente información:
- Nombre:
testing-subnet
- Región:
us-west1
- Intervalo de direcciones IP:
10.30.1.0/24
- Haz clic en Listo.
- Nombre:
Haz clic en Crear.
Crea la red production
y la production-subnet
:
En la Google Cloud consola, ve a la página Redes de VPC.
Haz clic en Crear red VPC.
Asigne un Nombre de
production
.En la sección Subredes:
- Elige Personalizado en Modo de creación de subred.
- En la sección Nueva subred, introduce la siguiente información:
- Nombre:
production-subnet
- Región:
us-west1
- Intervalo de direcciones IP:
10.50.1.0/24
- Haz clic en Listo.
- Nombre:
Haz clic en Crear.
gcloud
Crea las redes de VPC en modo personalizado:
gcloud compute networks create testing --subnet-mode=custom
gcloud compute networks create production --subnet-mode=custom
Crea subredes en las redes
testing
yproduction
de la regiónus-west1
:gcloud compute networks subnets create testing-subnet \ --network=testing \ --range=10.30.1.0/24 \ --region=us-west1
gcloud compute networks subnets create production-subnet \ --network=production \ --range=10.50.1.0/24 \ --region=us-west1
Configurar reglas de cortafuegos
En este ejemplo se usan las siguientes reglas de cortafuegos:
fw-allow-testing-from-both
: una regla de entrada aplicable a todos los destinos de la redtesting
. Esta regla permite el tráfico procedente de orígenes incluidos en los intervalos de direcciones IP10.30.1.0/24
y10.50.1.0/24
. Estos dos intervalos cubren las direcciones IP internas principales de las VMs de ambas redes.fw-allow-production-from-both
: una regla de entrada aplicable a todos los destinos de la redproduction
. Esta regla permite el tráfico procedente de orígenes incluidos en los intervalos de direcciones IP10.30.1.0/24
y10.50.1.0/24
. Estos dos intervalos cubren las direcciones IP internas principales de las VMs de ambas redes.fw-allow-testing-ssh
: regla de entrada aplicada a las instancias de VM de la red de VPCtesting
. Esta regla permite la conectividad SSH entrante en el puerto TCP22
desde cualquier dirección. Puedes elegir un intervalo de IPs de origen más restrictivo para esta regla. Por ejemplo, puedes especificar los intervalos de IPs de los sistemas desde los que tienes previsto iniciar sesiones SSH. En este ejemplo se usa la etiqueta de destinoallow-ssh
para identificar las VMs a las que se aplica la regla de cortafuegos.fw-allow-production-ssh
: regla de entrada aplicada a las instancias de VM de la red de VPCproduction
. Esta regla permite la conectividad SSH entrante en el puerto TCP22
desde cualquier dirección. Al igual que con la reglafw-allow-testing-ssh
, puede elegir un intervalo de IPs de origen más restrictivo para esta regla.fw-allow-health-check
: una regla de entrada para las VMs de la aplicación de terceros que se están balanceando. Esta regla permite el tráfico de los sistemas de comprobación del estado (Google Cloud y35.191.0.0/16
). En este ejemplo se usa la etiqueta de destinoallow-health-check
para identificar las instancias a las que se debe aplicar.130.211.0.0/22
fw-allow-production-health-check
: una regla de entrada para las VMs de la aplicación de terceros que se están balanceando. Esta regla permite el tráfico de los sistemas de comprobación del estado (Google Cloud y35.191.0.0/16
). En este ejemplo se usa la etiqueta de destinoallow-health-check
para identificar las instancias a las que se debe aplicar.130.211.0.0/22
Sin estas reglas de cortafuegos, la regla denegar predeterminada de entrada bloquea el tráfico entrante a las instancias de backend. Debes crear una regla de cortafuegos para permitir las comprobaciones de estado de los intervalos de direcciones IP de los sistemas de sondeo de Google Cloud . Consulta los intervalos de IPs de sondeo para obtener más información.
Consola
En la Google Cloud consola, ve a la página Políticas de cortafuegos.
Haz clic en Crear regla de cortafuegos e introduce la siguiente información para crear la regla que permita que las VMs de prueba reciban paquetes de las subredes de prueba y de producción:
- Nombre:
fw-allow-testing-from-both
- Red:
testing
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción tras coincidencia: permitir
- Destinos: todas las instancias de la red
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
10.30.1.0/24
,10.50.1.0/24
- Protocolos y puertos: permitir todos
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de cortafuegos e introduce la siguiente información para crear la regla que permita que las VMs de producción reciban paquetes de las subredes de prueba y de producción:
- Nombre:
fw-allow-production-from-both
- Red:
production
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción tras coincidencia: permitir
- Destinos: todas las instancias de la red
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
10.30.1.0/24
,10.50.1.0/24
- Protocolos y puertos: permitir todos
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de cortafuegos para crear la regla que permita las conexiones SSH entrantes en el entorno de pruebas:
- Nombre:
fw-allow-testing-ssh
- Red:
testing
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción tras coincidencia: permitir
- Destinos: etiquetas de destino especificadas
- Etiquetas de destino:
allow-ssh
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
0.0.0.0/0
- Protocolos y puertos: elige Protocolos y puertos especificados y escribe:
tcp:22
.
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de cortafuegos para crear la regla que permita las conexiones SSH entrantes en el entorno de producción:
- Nombre:
fw-allow-production-ssh
- Red:
production
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción tras coincidencia: permitir
- Destinos: etiquetas de destino especificadas
- Etiquetas de destino:
allow-ssh
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
0.0.0.0/0
- Protocolos y puertos: elige Protocolos y puertos especificados y escribe:
tcp:22
.
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de cortafuegos para crear la regla que permita las comprobaciones del estado en el entorno de pruebas:Google Cloud
- Nombre:
fw-allow-health-check
- Red:
testing
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción tras coincidencia: permitir
- Destinos: etiquetas de destino especificadas
- Etiquetas de destino:
allow-health-check
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
130.211.0.0/22
y35.191.0.0/16
- Protocolos y puertos:
tcp
- Nombre:
Haz clic en Crear.
Haz clic en Crear regla de cortafuegos para crear la regla que permita Google Cloud comprobaciones del estado en el entorno de producción:
- Nombre:
fw-allow-production-health-check
- Red:
production
- Prioridad:
1000
- Dirección del tráfico: entrada
- Acción tras coincidencia: permitir
- Destinos: etiquetas de destino especificadas
- Etiquetas de destino:
allow-health-check
- Filtro de origen: Intervalos de IPv4
- Intervalos de IPv4 de origen:
130.211.0.0/22
y35.191.0.0/16
- Protocolos y puertos:
tcp
- Nombre:
Haz clic en Crear.
gcloud
Crea la regla de cortafuegos
fw-allow-testing-subnet
para permitir que las VMs de prueba reciban paquetes de las subredestesting
yproduction
:gcloud compute firewall-rules create fw-allow-testing-from-both \ --network=testing \ --action=allow \ --direction=ingress \ --source-ranges=10.30.1.0/24,10.50.1.0/24 \ --rules=all
Crea la regla de cortafuegos
fw-allow-production-subnet
para permitir que las VMs de producción reciban paquetes de las subredestesting
yproduction
:gcloud compute firewall-rules create fw-allow-production-from-both \ --network=production \ --action=allow \ --direction=ingress \ --source-ranges=10.30.1.0/24,10.50.1.0/24 \ --rules=all
Crea la regla de cortafuegos
fw-allow-testing-ssh
para permitir la conectividad SSH a las VMs con la etiqueta de redallow-ssh
. Si omitesource-ranges
, Google Cloud interpreta que la regla se aplica a cualquier fuente.gcloud compute firewall-rules create fw-allow-testing-ssh \ --network=testing \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Crea la regla de cortafuegos
fw-allow-production-ssh
para permitir la conectividad SSH a las VMs con la etiqueta de redallow-ssh
.gcloud compute firewall-rules create fw-allow-production-ssh \ --network=production \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Crea la regla
fw-allow-health-check
para permitir Google Cloud las comprobaciones del estado a las VMs del dispositivo de terceros en la redtesting
.gcloud compute firewall-rules create fw-allow-testing-health-check \ --network=testing \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp
Crea la regla de cortafuegos
fw-allow-production-health-check
para permitir que lasGoogle Cloud comprobaciones del estado se realicen en las VMs del dispositivo de terceros de la redproduction
.gcloud compute firewall-rules create fw-allow-production-health-check \ --network=production \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp
Crear las aplicaciones virtuales de terceros
En los siguientes pasos se muestra cómo crear una plantilla de instancia y un grupo de instancias regional gestionado con más de una interfaz de red. Este grupo de instancias se usa como dispositivo virtual de terceros en este ejemplo.
Consola
Debes usar gcloud
en este paso porque tienes que crear una plantilla de instancia con más de una interfaz de red. Actualmente, la Google Cloud consola
no admite la creación de plantillas de instancia con más de una
interfaz de red.
gcloud
Crea un archivo local llamado
config.sh
e inserta el siguiente contenido:#!/bin/bash # Enable IP forwarding: echo 1 > /proc/sys/net/ipv4/ip_forward echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/20-example.conf # Read VM network configuration: md_vm="http://metadata.google.internal/computeMetadata/v1/instance/" md_net="$md_vm/network-interfaces" nic0_gw="$(curl $md_net/0/gateway -H "Metadata-Flavor:Google" )" nic0_mask="$(curl $md_net/0/subnetmask -H "Metadata-Flavor:Google")" nic0_addr="$(curl $md_net/0/ip -H "Metadata-Flavor:Google")" nic0_id="$(ip addr show | grep $nic0_addr | awk '{print $NF}')" nic1_gw="$(curl $md_net/1/gateway -H "Metadata-Flavor:Google")" nic1_mask="$(curl $md_net/1/subnetmask -H "Metadata-Flavor:Google")" nic1_addr="$(curl $md_net/1/ip -H "Metadata-Flavor:Google")" nic1_id="$(ip addr show | grep $nic1_addr | awk '{print $NF}')" # Source based policy routing for nic1 echo "100 rt-nic1" >> /etc/iproute2/rt_tables sudo ip rule add pri 32000 from $nic1_gw/$nic1_mask table rt-nic1 sleep 1 sudo ip route add 35.191.0.0/16 via $nic1_gw dev $nic1_id table rt-nic1 sudo ip route add 130.211.0.0/22 via $nic1_gw dev $nic1_id table rt-nic1 # Use a web server to pass the health check for this example. # You should use a more complete test in production. sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl echo "Example web page to pass health check" | \ tee /var/www/html/index.html sudo systemctl restart apache2
Crea una plantilla de instancia para tus aplicaciones virtuales de terceros. La plantilla de instancia debe incluir la marca
--can-ip-forward
para que las instancias de VM creadas a partir de la plantilla puedan reenviar paquetes de otras instancias de las redestesting
yproduction
.gcloud compute instance-templates create third-party-template-multinic \ --region=us-west1 \ --network-interface subnet=testing-subnet,address="" \ --network-interface subnet=production-subnet \ --tags=allow-ssh,allow-health-check,my-network-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --can-ip-forward \ --metadata=startup-script="$(< config.sh)"
Crea un grupo de instancias gestionado para tus aplicaciones virtuales de terceros. Este comando crea un grupo de instancias regionales administrado, que se puede autoescalar en
us-west1
.gcloud compute instance-groups managed create third-party-instance-group \ --region=us-west1 \ --template=third-party-template-multinic \ --size=3
Crear los recursos de balanceo de carga
En estos pasos se configuran todos los componentes del balanceador de carga de red de pases interno, empezando por la comprobación de estado y el servicio de backend, y, a continuación, los componentes de frontend:
Comprobación del estado: en este ejemplo, la comprobación del estado de HTTP comprueba si hay una respuesta HTTP
200
(OK). Para obtener más información, consulta la sección de comprobaciones del estado del artículo sobre el balanceador de carga de red interno de pases.Servicio de backend: aunque el servicio de backend de este ejemplo especifica el protocolo TCP, cuando el balanceador de carga es el siguiente salto de una ruta,Google Cloud reenvía el tráfico de todos los protocolos (TCP, UDP e ICMP).
Regla de reenvío: aunque esta regla de reenvío de ejemplo especifica el puerto TCP 80, cuando el balanceador de carga es el siguiente salto de una ruta, el tráfico de cualquier puerto TCP o UDP se envía a los back-ends del balanceador de carga.
Dirección IP interna: en el ejemplo se especifica una dirección IP interna,
10.30.1.99
, para la regla de reenvío.
Consola
Iniciar la configuración
En la Google Cloud consola, ve a la página Balanceo de carga.
- Haga clic en Crear balanceador de carga.
- En Tipo de balanceador de carga, selecciona Balanceador de carga de red (TCP/UDP/SSL) y haz clic en Siguiente.
- En Proxy o pasarela, selecciona Balanceador de carga de pasarela y haz clic en Siguiente.
- En Público o interno, selecciona Interno y haz clic en Siguiente.
- Haz clic en Configurar.
Crear el primer balanceador de carga
- Asigna el valor
ilb1
a Nombre. - Asigna el valor
us-west1
a Región. - Define Red como
testing
. - Haz clic en Configuración de backend y haz los siguientes cambios:
- En Backends (Back-ends), en la sección New item (Nuevo elemento), selecciona el grupo de instancias
third-party-instance-group
y haz clic en Done (Hecho). - En Comprobación del estado, elige Crear otra comprobación del estado,
introduce la siguiente información y haz clic en Guardar y continuar:
- Nombre:
hc-http-80
- Protocolo:
HTTP
- Puerto:
80
- Protocolo de proxy:
NONE
- Ruta de la solicitud:
/
Ten en cuenta que, cuando usas la consola para crear tu balanceador de carga, la comprobación del estado es global. Google Cloud Si quieres crear una comprobación del estado regional, usagcloud
o la API.
- Nombre:
- En Afinidad de sesión, selecciona IP de cliente.
- Comprueba que haya una marca de verificación azul junto a Configuración del backend antes de continuar. Si no es así, revisa este paso.
- En Backends (Back-ends), en la sección New item (Nuevo elemento), selecciona el grupo de instancias
- Haz clic en Configuración de frontend. En la sección IP de frontend y puerto nuevos, haz los siguientes cambios:
- Nombre:
fr-ilb1
- Subred:
testing-subnet
- En IP interna, elige Reservar dirección IP estática interna, introduce la siguiente información y haz clic en Reservar:
- Nombre:
ip-ilb
- Dirección IP estática: Quiero elegir
- Dirección IP personalizada:
10.30.1.99
- Nombre:
- Puertos: elige Único e introduce
80
en el campo Número de puerto. Recuerda que la elección de un protocolo y un puerto para el balanceador de carga no limita los protocolos y los puertos que se usan cuando el balanceador de carga es el siguiente salto de una ruta. - Verifica que haya una marca de verificación azul junto a Configuración del frontend antes de continuar. Si no es así, revisa este paso.
- Nombre:
- Haz clic en Revisar y finalizar. Comprueba tu configuración.
- Haz clic en Crear.
Iniciar la configuración
En la Google Cloud consola, ve a la página Balanceo de carga.
- Haga clic en Crear balanceador de carga.
- En Tipo de balanceador de carga, selecciona Balanceador de carga de red (TCP/UDP/SSL) y haz clic en Siguiente.
- En Proxy o pasarela, selecciona Balanceador de carga de pasarela y haz clic en Siguiente.
- En Público o interno, selecciona Interno y haz clic en Siguiente.
- Haz clic en Configurar.
Crear el segundo balanceador de carga
- Asigna el valor
ilb2
a Nombre. - Asigna el valor
us-west1
a Región. - Define Red como
production
. - Haz clic en Configuración de backend y haz los siguientes cambios:
- En Backends (Back-ends), en la sección New item (Nuevo elemento), selecciona el grupo de instancias
third-party-instance-group
y haz clic en Done (Hecho). - En Comprobación del estado, selecciona
hc-http-80
. - En Afinidad de sesión, selecciona IP de cliente.
- Comprueba que haya una marca de verificación azul junto a Configuración del backend antes de continuar. Si no es así, revisa este paso.
- En Backends (Back-ends), en la sección New item (Nuevo elemento), selecciona el grupo de instancias
- Haz clic en Configuración de frontend. En la sección IP de frontend y puerto nuevos, haz los siguientes cambios:
- Nombre:
fr-ilb2
- Subred:
production-subnet
- En IP interna, elige Reservar dirección IP estática interna, introduce la siguiente información y haz clic en Reservar:
- Nombre:
ip-ilb2
- Dirección IP estática: Quiero elegir
- Dirección IP personalizada:
10.50.1.99
- Nombre:
- Puertos: elige Único e introduce
80
en el campo Número de puerto. Recuerda que la elección de un protocolo y un puerto para el balanceador de carga no limita los protocolos y los puertos que se usan cuando el balanceador de carga es el siguiente salto de una ruta. - Verifica que haya una marca de verificación azul junto a Configuración del frontend antes de continuar. Si no es así, revisa este paso.
- Nombre:
- Haz clic en Revisar y finalizar. Comprueba tu configuración.
Haz clic en Crear.
Configura los recursos del balanceador de carga en la red de la VPC
production
.
gcloud
Crea una comprobación del estado de HTTP para probar la conectividad TCP a las VMs en el puerto 80.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Crea dos servicios backend internos en la región
us-west1
.gcloud compute backend-services create ilb1 \ --load-balancing-scheme=internal \ --health-checks-region=us-west1 \ --health-checks=hc-http-80 \ --region=us-west1 \ --network=testing \ --session-affinity=CLIENT_IP
gcloud compute backend-services create ilb2 \ --load-balancing-scheme=internal \ --health-checks-region=us-west1 \ --health-checks=hc-http-80 \ --region=us-west1 \ --network=production \ --session-affinity=CLIENT_IP
Añade los grupos de instancias que contengan los dispositivos virtuales de terceros como backends en los servicios de backend.
gcloud compute backend-services add-backend ilb1 \ --instance-group=third-party-instance-group \ --instance-group-region=us-west1 \ --region=us-west1
gcloud compute backend-services add-backend ilb2 \ --instance-group=third-party-instance-group \ --instance-group-region=us-west1 \ --region=us-west1
Crea las reglas de reenvío internas y conéctalas a los servicios de backend para completar la configuración del balanceador de carga. Recuerda que el protocolo (TCP) y el puerto (80) de los balanceadores de carga no limitan los puertos ni los protocolos que se reenvían a las instancias de backend (los dispositivos virtuales de terceros) cuando los balanceadores de carga se usan como los siguientes saltos de las rutas.
gcloud compute forwarding-rules create fr-ilb1 \ --load-balancing-scheme=internal \ --ports=80 \ --network=testing \ --subnet=testing-subnet \ --region=us-west1 \ --backend-service=ilb1 \ --address=10.30.1.99
gcloud compute forwarding-rules create fr-ilb2 \ --load-balancing-scheme=internal \ --ports=80 \ --network=production \ --subnet=production-subnet \ --region=us-west1 \ --backend-service=ilb2 \ --address=10.50.1.99
Crear las rutas estáticas que definen los balanceadores de carga como los siguientes saltos
Crea dos rutas estáticas que usen un balanceador de carga de siguiente salto.
Consola
Crear la primera ruta
En la Google Cloud consola, ve a la página Rutas.
Haz clic en Crear ruta.
En Nombre de la ruta, introduce
ilb-nhop-dest-10-50-1
.Selecciona la red
testing
.En Intervalo de IP de destino, introduce
10.50.1.0/24
.En Etiquetas de instancia, introduce
my-network-tag
.En Siguiente salto de la ruta, selecciona Especificar una regla de reenvío para el balanceador de carga TCP/UDP interno.
Para especificar la dirección IP del balanceador de carga como el siguiente salto, usa la CLI de gcloud o la API.
Especifica el nombre de la regla de reenvío. En el nombre de la regla de reenvío, selecciona
fr-ilb1
.Haz clic en Crear.
Crear la segunda ruta
- Haz clic en Crear ruta.
- En Nombre de la ruta, introduce
ilb-nhop-dest-10-30-1
. - Selecciona la red
testing
. - En Intervalo de IP de destino, introduce
10.30.1.0/24
. En Siguiente salto de la ruta, selecciona Especificar una regla de reenvío para el balanceador de carga TCP/UDP interno.
Para especificar la dirección IP del balanceador de carga como el siguiente salto, usa la CLI de gcloud o la API.
En Nombre de la regla de reenvío, selecciona
fr-ilb2
.Haz clic en Crear.
gcloud
Crea rutas estáticas con el siguiente salto definido en la regla de reenvío de cada balanceador de carga y cada intervalo de destino configurado en consecuencia.
En el caso de la marca --next-hop-ilb
, puede especificar el nombre o la dirección IP de una regla de reenvío. La dirección IP de una regla de reenvío de siguiente salto puede estar en la misma red de VPC que contiene la ruta o en una red de VPC emparejada. Para obtener más información, consulta Proyecto y red del próximo salto.
En el ejemplo, la primera ruta usa la dirección IP 10.30.1.99
, mientras que la segunda ruta usa el nombre de la regla de reenvío fr-ilb12
.
Si quieres, puedes especificar una o varias etiquetas de instancia en la ruta.
La ruta se puede aplicar a VMs específicas si se especifican etiquetas de red en la ruta. Si no especifica ninguna etiqueta de red, la ruta se aplica a todas las máquinas virtuales de la red de VPC. En este ejemplo, la ruta usa my-network-tag
para la etiqueta de red de la ruta.
gcloud compute routes create ilb-nhop-dest-10-50-1 \ --network=testing \ --destination-range=10.50.1.0/24 \ --next-hop-ilb=10.30.1.99 \ --tags=my-network-tag
gcloud compute routes create ilb-nhop-dest-10-30-1 \ --network=production \ --destination-range=10.30.1.0/24 \ --next-hop-ilb=fr-ilb2 \ --next-hop-ilb-region=us-west1
Crear la instancia de VM testing
En este ejemplo, se crea una instancia de VM con la dirección IP 10.30.1.100
en la subred testing-subnet
(10.30.1.0/24
) de la red de VPC testing
.
gcloud
Crea el
testing-vm
ejecutando el siguiente comando.gcloud compute instances create testing-vm \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,my-network-tag \ --subnet=testing-subnet \ --private-network-ip 10.30.1.100 \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo 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 sudo systemctl restart apache2'
Crear la instancia de VM production
En este ejemplo, se crea una instancia de VM con la dirección IP 10.50.1.100
en la subred production-subnet
(10.50.1.0/24
) de la red de VPC production
.
gcloud
El production-vm
puede estar en cualquier zona de la misma región que el balanceador de carga y puede usar cualquier subred de esa región. En este ejemplo, la production-vm
está en la zona us-west1-a
.
Crea el
production-vm
ejecutando el siguiente comando.gcloud compute instances create production-vm \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=production-subnet \ --private-network-ip 10.50.1.100 \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo 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 sudo systemctl restart apache2'
Probar el balanceo de carga en una implementación con varias NICs
Verifica el estado de los backends del balanceador de carga.
gcloud compute backend-services get-health ilb1 --region us-west1
gcloud compute backend-services get-health ilb2 --region us-west1
Prueba la conectividad desde la VM
testing
.gcloud compute ssh testing-vm --zone=us-west1-a
curl http://10.50.1.99
exit
Prueba la conectividad desde la VM
production
.gcloud compute ssh production-vm --zone=us-west1-a
curl http://10.30.1.99
exit
Habilitar el cifrado simétrico
Al calcular el hash asignado a la instancia de backend,Google Cloud ignora la dirección de las direcciones IP y los puertos. El valor de hash coherente calculado de un paquete TCP/UDP es el mismo independientemente de la dirección de la que proceda el paquete. Esto se denomina hash simétrico.
Para habilitar este comportamiento de hashing en los balanceadores de carga de red de paso a través internos, debes volver a crear la regla de reenvío y la ruta del siguiente salto.
Para obtener más información, consulta Hashing simétrico.
Eliminar y volver a crear las reglas de reenvío
Consola
Eliminar una regla de reenvío y crear otra
En la Google Cloud consola, ve a la página Balanceo de carga.
Haz clic en tu balanceador de carga
be-ilb
y, a continuación, en Editar.Haz clic en Configuración de frontend.
Coloca el puntero sobre la regla de reenvío y haz clic en
Eliminar para quitarla.Haz clic en Añadir IP y puerto de frontend.
En la sección IP de frontend y puerto nuevos, haz los siguientes cambios:
- Nombre:
FORWARDING_RULE_NAME
- Subred:
SUBNET_NAME
- En IP interna, selecciona
IP_ADDRESS
. - Puertos:
PORT_NUMBER
oALL
. - Haz clic en Listo.
- Verifica que haya una marca de verificación azul junto a Configuración del frontend antes de continuar. Si no es así, revisa este paso.
- Nombre:
Haz clic en Revisar y finalizar. Comprueba tu configuración.
Haz clic en Crear.
gcloud
Elimina las reglas de reenvío que tengas.
gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \ --region=REGION
Crea reglas de reenvío de sustitución con el mismo nombre.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=internal \ --ports=PORT_NUMBER or `ALL` \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --region=REGION \ --backend-service=BACKEND_SERVICE_NAME \ --address=IP_ADDRESS
Cuándo no se requiere SNAT
Como se ha demostrado en el ejemplo anterior, no es necesario usar la traducción de direcciones de red de origen (SNAT) si se cumplen todas las condiciones siguientes:
- La regla de reenvío del balanceador de carga de red de paso a través interno se creó el 22 de junio del 2021 o después.
- La ruta estática que hace referencia a la regla de reenvío se creó el 22 de junio del 2021 o después.
- El servicio de backend del balanceador de carga de red de paso a través interno no usa el ajuste de afinidad de sesión
NONE
.
Para convertir una ruta de un balanceador de carga de red de paso a través interno de siguiente salto en una ruta que use el hashing simétrico, sigue estos pasos:
Asegúrate de que el servicio de backend del balanceador de carga de red de paso a través interno no use el
NONE
ajuste de afinidad de sesiónCrea una regla de reenvío de sustitución que haga referencia al mismo servicio de backend. La regla de reenvío de sustitución usa una dirección IP diferente.
Crea una ruta estática de sustitución que haga referencia a la nueva regla de reenvío. Asegúrate de que esta ruta de sustitución tenga una prioridad mayor que la ruta actual.
Elimina la ruta de menor prioridad (que hace referencia a la regla de reenvío anterior) y, a continuación, elimina la regla de reenvío anterior.
Limpieza
En la configuración del balanceador de carga, quita el backend de los servicios de backend.
gcloud compute backend-services remove-backend ilb1 \ --instance-group=third-party-instance-group \ --instance-group-region=us-west1 \ --region=us-west1
gcloud compute backend-services remove-backend ilb2 \ --instance-group=third-party-instance-group \ --instance-group-region=us-west1 \ --region=us-west1
Elimina las rutas.
gcloud compute routes delete ilb-nhop-dest-10-50-1
gcloud compute routes delete ilb-nhop-dest-10-30-1
En las configuraciones del balanceador de carga, elimina las reglas de reenvío.
gcloud compute forwarding-rules delete fr-ilb1 \ --region=us-west1
gcloud compute forwarding-rules delete fr-ilb2 \ --region=us-west1
En las configuraciones del balanceador de carga, elimina los servicios de backend.
gcloud compute backend-services delete ilb1 \ --region=us-west1
gcloud compute backend-services delete ilb2 \ --region=us-west1
En las configuraciones del balanceador de carga, elimina la comprobación del estado.
gcloud compute health-checks delete hc-http-80 \ --region=us-west1
Si has usado la consola Google Cloud , la comprobación del estado es global. Por lo tanto, el comando es el siguiente:
gcloud compute health-checks delete hc-http-80 \ --global
Elimina el grupo de instancias gestionado.
gcloud compute instance-groups managed delete third-party-instance-group \ --region=us-west1
Elimina las plantillas de instancia.
gcloud compute instance-templates delete third-party-template
gcloud compute instance-templates delete third-party-template-multinic
Elimina las instancias de prueba y de producción.
gcloud compute instances delete testing-vm \ --zone=us-west1-a
gcloud compute instances delete production-vm \ --zone=us-west1-a
Siguientes pasos
- Descripción general del balanceador de carga de red de paso a través interno
- Conmutación por error de balanceadores de carga de red de paso a través internos
- Configurar balanceadores de carga de red de paso a través internos con backends de grupos de instancias de VM
- Registro y monitorización de balanceadores de carga de red de paso a través internos
- Balanceadores de carga de red de paso a través internos y redes conectadas
- Solucionar problemas de balanceadores de carga de red de paso a través internos
- Limpiar la configuración del balanceador de carga