Configurar un balanceador de carga de red con proxy interno regional con backends de grupos de instancias de VM

El balanceador de carga de red de proxy interno regional es un balanceador de carga regional de capa 4 basado en proxy que te permite ejecutar y escalar el tráfico de tu servicio TCP mediante una dirección IP interna a la que solo pueden acceder los clientes de la misma red de VPC o los clientes conectados a tu red de VPC.

En esta guía se explica cómo configurar un balanceador de carga de red con proxy interno regional con un backend de grupo de instancias gestionado (MIG).

Antes de empezar, consulta la descripción general del balanceador de carga de red de proxy interno regional.

Información general

En este ejemplo, usaremos el balanceador de carga para distribuir el tráfico TCP entre las VMs de backend de dos grupos de instancias gestionados zonales de la región REGION_A. En este ejemplo, el servicio es un conjunto de servidores Apache configurados para responder en el puerto 110. Muchos navegadores no permiten el puerto 110, por lo que la sección de pruebas usa curl.

En este ejemplo, se configura la siguiente implementación:

Ejemplo de configuración de un balanceador de carga de red con proxy interno regional con backends de grupos de instancias.
Ejemplo de configuración de un balanceador de carga de red de proxy interno regional con backends de grupos de instancias

El balanceador de carga de red de proxy interno regional es un balanceador de carga regional. Todos los componentes del balanceador de carga (grupos de instancias de backend, servicio de backend, proxy de destino y regla de reenvío) deben estar en la misma región.

Permisos

Para seguir esta guía, debes poder crear instancias y modificar una red en un proyecto. Debes tener el rol de propietario o editor del proyecto, o bien debes tener todos los roles de gestión de identidades y accesos de Compute Engine siguientes:

Tarea Rol obligatorio
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 la red y las subredes

Necesitas una red de VPC con dos subredes: una para los backends del balanceador de carga y otra para los proxies del balanceador de carga. Los balanceadores de carga de red con proxy internos regionales son regionales. El tráfico de la red de VPC se dirige al balanceador de carga si la fuente del tráfico está en una subred de la misma región que el balanceador de carga.

En este ejemplo se usan la siguiente red VPC, región y subredes:

  • Red. La red es una red de VPC en modo personalizado llamada lb-network.

  • Subred para las back-ends. Una subred llamada backend-subnet en la región REGION_A usa 10.1.2.0/24 para su intervalo de IP principal.

  • Subred para proxies. Una subred llamada proxy-only-subnet en la región REGION_A usa 10.129.0.0/23 para su intervalo de IP principal.

Para demostrar el acceso global, en este ejemplo también se crea una segunda VM de cliente de prueba en otra región (REGION_B) y una subred con el intervalo de direcciones IP principal 10.3.4.0/24.

Crear la red y las subredes

Consola

  1. En la Google Cloud consola, ve a la página Redes de VPC.

    Ir a redes de VPC

  2. Haz clic en Crear red VPC.

  3. En Nombre, escribe lb-network.

  4. En la sección Subredes, selecciona Personalizado en Modo de creación de subredes.

  5. Crea una subred para los back-ends del balanceador de carga. En la sección Nueva subred, introduce la siguiente información:

    • Nombre: backend-subnet
    • Región: REGION_A
    • Intervalo de direcciones IP: 10.1.2.0/24
  6. Haz clic en Listo.

  7. Haz clic en Añadir subred.

  8. Crea una subred para demostrar el acceso global. En la sección Nueva subred, introduce la siguiente información:

    • Nombre: test-global-access-subnet
    • Región: REGION_B
    • Intervalo de direcciones IP: 10.3.4.0/24
  9. Haz clic en Listo.

  10. Haz clic en Crear.

gcloud

  1. Crea la red de VPC personalizada con el comando gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crea una subred en la red lb-network de la región REGION_A con el comando gcloud compute networks subnets create:

    gcloud compute networks subnets create backend-subnet \
       --network=lb-network \
       --range=10.1.2.0/24 \
       --region=REGION_A
    

    Sustituye REGION_A por el nombre de la región de destino. Google Cloud

  3. Crea una subred en la red lb-network de la región REGION_B con el comando gcloud compute networks subnets create:

    gcloud compute networks subnets create test-global-access-subnet \
       --network=lb-network \
       --range=10.3.4.0/24 \
       --region=REGION_B
    

    Sustituye REGION_B por el nombre de la Google Cloud región en la que quieras crear la segunda subred para probar el acceso global.

Crear la subred de solo proxy

Una subred de solo proxy proporciona un conjunto de direcciones IP que Google usa para ejecutar proxies de Envoy en tu nombre. Los proxies terminan las conexiones del cliente y crean nuevas conexiones con los back-ends.

Todos los balanceadores de carga basados en Envoy de la REGION_A región de la red de VPC lb-network usan esta subred de solo proxy.

Consola

Si usas la consola de Google Cloud , puedes esperar y crear la subred de solo proxy más adelante en la página Balanceo de carga.

Si quieres crear la subred de solo proxy ahora, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Redes de VPC.
    Ve a Redes de VPC.
  2. Haz clic en el nombre de la red de VPC compartida: lb-network.
  3. Haz clic en Añadir subred.
  4. En Nombre, escribe proxy-only-subnet.
  5. En Región, selecciona REGION_A.
  6. En Propósito, selecciona Proxy gestionado regional.
  7. En Intervalo de direcciones IP, introduce 10.129.0.0/23.
  8. Haz clic en Añadir.

gcloud

Crea la subred de solo proxy con el comando gcloud compute networks subnets create.

gcloud compute networks subnets create proxy-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION_A \
    --network=lb-network \
    --range=10.129.0.0/23

Crear reglas de cortafuegos

Este ejemplo requiere las siguientes reglas de cortafuegos:

  • fw-allow-ssh. Una regla de entrada aplicable a las instancias que se van a balancear de carga que permita la conectividad SSH entrante en el puerto TCP 22 desde cualquier dirección. Puede elegir un intervalo de IPs de origen más restrictivo para esta regla. Por ejemplo, puede especificar solo los intervalos de IPs del sistema desde el que inicia sesiones SSH. En este ejemplo se usa la etiqueta de destino allow-ssh.

  • fw-allow-health-check. Una regla de entrada, aplicable a las instancias con balanceo de carga, que permite todo el tráfico TCP de los sistemas de comprobación de estado (en 130.211.0.0/22 y 35.191.0.0/16). En este ejemplo, se usa la etiqueta de destino allow-health-check. Google Cloud

  • fw-allow-proxy-only-subnet. Una regla de entrada que permita que las conexiones de la subred de solo proxy lleguen a los backends.

Sin estas reglas de cortafuegos, la regla denegar predeterminada de entrada bloquea el tráfico entrante a las instancias de backend.

Las etiquetas de destino definen las instancias de backend. Si no se incluyen las etiquetas de destino, las reglas de cortafuegos se aplican a todas las instancias de backend de la red de VPC. Cuando crees las VMs de backend, asegúrate de incluir las etiquetas de destino especificadas, tal como se muestra en Crear un grupo de instancias gestionado.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de cortafuegos.
    Ve a Políticas de cortafuegos
  2. Haga clic en Crear regla de cortafuegos para crear la regla que permita las conexiones SSH entrantes:
    • Nombre: fw-allow-ssh
    • Red: lb-network
    • Sentido del tráfico: entrada
    • Acción tras coincidencia: Permitir
    • Objetivos: 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.
      • Selecciona la casilla TCP y, a continuación, introduce 22 como número de puerto.
  3. Haz clic en Crear.
  4. Haz clic en Crear regla de cortafuegos por segunda vez para crear la regla que permita las comprobaciones del estado: Google Cloud
    • Nombre: fw-allow-health-check
    • Red: lb-network
    • Sentido del tráfico: entrada
    • Acción tras coincidencia: Permitir
    • Objetivos: 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 y 35.191.0.0/16
    • Protocolos y puertos:
      • Elige Protocolos y puertos especificados.
      • Selecciona la casilla TCP y, a continuación, introduce 80 como número de puerto.
        Como práctica recomendada, limita esta regla a los protocolos y puertos que coincidan con los que usa tu comprobación de estado. Si usas tcp:80 para el protocolo y el puerto, Google Cloud puede usar HTTP en el puerto 80 para ponerse en contacto con tus VMs, pero no puede usar HTTPS en el puerto 443 para hacerlo.
  5. Haz clic en Crear.
  6. Haz clic en Crear regla de cortafuegos por tercera vez para crear la regla que permita que los servidores proxy del balanceador de carga se conecten a los backends:
    • Nombre: fw-allow-proxy-only-subnet
    • Red: lb-network
    • Sentido del tráfico: entrada
    • Acción tras coincidencia: Permitir
    • Objetivos: Etiquetas de destino especificadas
    • Etiquetas de destino: allow-proxy-only-subnet
    • Filtro de origen: Intervalos de IPv4
    • Intervalos de IPv4 de origen: 10.129.0.0/23
    • Protocolos y puertos:
      • Elige Protocolos y puertos especificados.
      • Selecciona la casilla TCP y, a continuación, introduce 80 en los números de puerto.
  7. Haz clic en Crear.

gcloud

  1. Crea la regla de cortafuegos fw-allow-ssh para permitir la conectividad SSH a las VMs con la etiqueta de red allow-ssh. Si omite source-ranges, Google Cloud interpreta que la regla se aplica a cualquier fuente.

    gcloud compute firewall-rules create fw-allow-ssh \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --target-tags=allow-ssh \
       --rules=tcp:22
    
  2. Crea la regla fw-allow-health-check para permitir Google Cloud las comprobaciones del estado. En este ejemplo, se permite todo el tráfico TCP de los verificadores de comprobación del estado. Sin embargo, puede configurar un conjunto de puertos más reducido para satisfacer sus necesidades.

    gcloud compute firewall-rules create fw-allow-health-check \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=allow-health-check \
       --rules=tcp:80
    
  3. Crea la regla de fw-allow-proxy-only-subnet para permitir que los proxies de Envoy de la región se conecten a tus backends. Asigna --source-ranges a los intervalos asignados de tu subred de solo proxy. En este ejemplo, 10.129.0.0/23.

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=10.129.0.0/23 \
       --target-tags=allow-proxy-only-subnet \
       --rules=tcp:80
    

Reservar la dirección IP del balanceador de carga

Para reservar una dirección IP interna estática para tu balanceador de carga, consulta Reservar una dirección IPv4 o IPv6 interna estática nueva.

Crear un grupo de instancias gestionado

En esta sección se muestra cómo crear dos backends de grupos de instancias gestionados (MIGs) en la región REGION_A para el balanceador de carga. El MIG proporciona instancias de VM que ejecutan los servidores Apache de backend de este ejemplo de balanceador de carga de red con proxy interno regional. Normalmente, los balanceadores de carga de red con proxy internos regionales no se usan para el tráfico HTTP, pero el software Apache se usa con frecuencia para las pruebas.

Consola

  1. Crea una plantilla de instancia. En la Google Cloud consola, ve a la página Plantillas de instancia.

    Ir a Plantillas de instancia

    1. Haz clic en Crear plantilla de instancia.
    2. En Nombre, escribe int-tcp-proxy-backend-template.
    3. Asegúrate de que el disco de arranque esté configurado con 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.
    4. Haz clic en Advanced options (Opciones avanzadas).
    5. Haga clic en Redes y configure los siguientes campos:
      1. En Etiquetas de red, introduce allow-ssh, allow-health-check y allow-proxy-only-subnet.
      2. En Interfaces de red, selecciona lo siguiente:
        • Red: lb-network
        • Subred: backend-subnet
    6. Haz clic en Gestión. Introduce la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio.

      #! /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
      systemctl restart apache2
      
    7. Haz clic en Crear.

  2. Crea un grupo de instancias gestionado. En la Google Cloud consola, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

    1. Haz clic en Crear grupo de instancias.
    2. Selecciona Nuevo grupo de instancias gestionado (sin reconocimiento del estado). Para obtener más información, consulta Grupos de instancias gestionados con o sin reconocimiento del estado.
    3. En Nombre, escribe mig-a.
    4. En Ubicación, selecciona Una sola zona.
    5. En Región, selecciona REGION_A.
    6. En Zona, selecciona ZONE_A1.
    7. En Plantilla de instancia, selecciona int-tcp-proxy-backend-template.
    8. Especifica el número de instancias que quieres crear en el grupo.

      En este ejemplo, especifica las siguientes opciones en Escalado automático:

      • En Modo de autoescalado, selecciona Off:do not autoscale.
      • En Número máximo de instancias, introduce 2.
    9. En Asignación de puertos, haz clic en Añadir puerto.

      • En Nombre de la portabilidad, introduce tcp80.
      • En Número de puerto, introduce 80.
    10. Haz clic en Crear.

  3. Repite el paso 2 para crear un segundo grupo de instancias gestionado con los siguientes ajustes:

    1. Nombre: mig-c
    2. Zona: ZONE_A2 Mantén el resto de los ajustes.

gcloud

En las gcloud instrucciones de esta guía se presupone que usas Cloud Shell u otro entorno con bash instalado.

  1. Crea una plantilla de instancia de VM con un servidor HTTP con el comando gcloud compute instance-templates create.

    gcloud compute instance-templates create int-tcp-proxy-backend-template \
       --region=REGION_A \
       --network=lb-network \
       --subnet=backend-subnet \
       --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
       --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
         systemctl restart apache2'
    
  2. Crea un grupo de instancias gestionado en la zona ZONE_A1.

    gcloud compute instance-groups managed create mig-a \
       --zone=ZONE_A1 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Sustituye ZONE_A1 por el nombre de la zona de la Google Cloud región de destino.

  3. Crea un grupo de instancias gestionado en la zona ZONE_A2.

    gcloud compute instance-groups managed create mig-c \
       --zone=ZONE_A2 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Sustituye ZONE_A2 por el nombre de otra zona de la región de destino Google Cloud .

Configurar el balanceador de carga

Consola

Iniciar la configuración

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haga clic en Crear balanceador de carga.
  3. En Tipo de balanceador de carga, selecciona Balanceador de carga de red (TCP/UDP/SSL) y haz clic en Siguiente.
  4. En Proxy o pasarela, selecciona Balanceador de carga de proxy y haz clic en Siguiente.
  5. En Público o interno, selecciona Interno y haz clic en Siguiente.
  6. En Implementación en una sola región o en varias regiones, selecciona La mejor opción para cargas de trabajo regionales y haz clic en Siguiente.
  7. Haz clic en Configurar.

Configuración básica

  1. En Nombre, escribe my-int-tcp-lb.
  2. En Región, selecciona REGION_A.
  3. En Red, selecciona lb-network.

Reservar una subred de solo proxy

Para reservar una subred de solo proxy, sigue estos pasos:

  1. Haz clic en Reservar subred.
  2. En Nombre, escribe proxy-only-subnet.
  3. En Intervalo de direcciones IP, introduce 10.129.0.0/23.
  4. Haz clic en Añadir.

Configuración de backend

  1. Haz clic en Configuración de backend.
  2. En Tipo de backend, selecciona Grupo de instancias.
  3. En Protocolo, selecciona TCP.
  4. En Puerto con nombre, introduce tcp80.
  5. Configura el primer backend:
    1. En Nuevo backend, selecciona el grupo de instancias mig-a.
    2. En Números de puerto, introduce 80.
    3. Mantén los valores predeterminados restantes y haz clic en Hecho.
  6. Configura el segundo backend:
    1. Haz clic en Añadir backend.
    2. En Nuevo backend, selecciona el grupo de instancias mig-c.
    3. En Números de puerto, introduce 80.
    4. Mantén los valores predeterminados restantes y haz clic en Hecho.
  7. Configura la comprobación del estado:
    1. En Comprobación del estado, selecciona Crear una comprobación del estado.
    2. Asigna el valor tcp-health-check al Nombre de la comprobación del estado.
    3. En Protocolo, selecciona TCP.
    4. Define Puerto como 80.
  8. Mantenga los demás valores predeterminados y haga clic en Guardar.
  9. En la Google Cloud consola, comprueba que haya una marca de verificación junto a Configuración de backend. Si no es así, comprueba que has completado todos los pasos.

Configuración de frontend

  1. Haz clic en Configuración de frontend.
  2. En Nombre, escribe int-tcp-forwarding-rule.
  3. En Subred, selecciona backend-subnet.
  4. En Dirección IP, selecciona la dirección IP reservada anteriormente: LB_IP_ADDRESS
  5. En Número de puerto, introduce 110. La regla de reenvío solo reenvía los paquetes con un puerto de destino coincidente.
  6. En este ejemplo, no habilites Proxy Protocol porque no funciona con el software del servidor HTTP de Apache. Para obtener más información, consulta Protocolo de proxy.
  7. Haz clic en Listo.
  8. En la Google Cloud consola, comprueba que haya una marca de verificación junto a Configuración de frontend. Si no es así, comprueba que has completado todos los pasos anteriores.

Revisar y finalizar

  1. Haz clic en Revisar y finalizar.
  2. Revisa los ajustes de configuración de tu balanceador de carga.
  3. Opcional: Haz clic en Código equivalente para ver la solicitud de la API REST que se usará para crear el balanceador de carga.
  4. Haz clic en Crear.

gcloud

  1. Crea una comprobación del estado regional.

    gcloud compute health-checks create tcp tcp-health-check \
       --region=REGION_A \
       --use-serving-port
    
  2. Crea un servicio de backend.

    gcloud compute backend-services create internal-tcp-proxy-bs \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=tcp-health-check \
       --health-checks-region=REGION_A
    
  3. Añade grupos de instancias a tu servicio de backend.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-a \
       --instance-group-zone=ZONE_A1 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-c \
       --instance-group-zone=ZONE_A2 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
  4. Crea un proxy TCP de destino interno.

    gcloud compute target-tcp-proxies create int-tcp-target-proxy \
       --backend-service=internal-tcp-proxy-bs \
       --proxy-header=NONE \
       --region=REGION_A
    

    Si quieres activar el encabezado de proxy, asigna el valor PROXY_V1 en lugar de NONE. En este ejemplo, no habilites el protocolo Proxy porque no funciona con el software del servidor HTTP de Apache. Para obtener más información, consulta Protocolo de proxy.

  5. Crea la regla de reenvío. En --ports, especifica un número de puerto único entre 1 y 65535. En este ejemplo se usa el puerto 110. La regla de reenvío solo reenvía los paquetes con un puerto de destino coincidente.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110
    

Probar el balanceador de carga

Para probar el balanceador de carga, crea una VM cliente en la misma región que el balanceador de carga. A continuación, envía tráfico del cliente al balanceador de carga.

Crear una VM cliente

Crea una VM cliente (client-vm) en la misma región que el balanceador de carga.

Consola

  1. En la consola de Google Cloud , ve a la página Instancias de VM.

    Ir a instancias de VM

  2. Haz clic en Crear instancia.

  3. Asigna el valor client-vm a Nombre.

  4. Define Zona como ZONE_A1.

  5. Haz clic en Advanced options (Opciones avanzadas).

  6. Haga clic en Redes y configure los siguientes campos:

    1. En Etiquetas de red, introduzca allow-ssh.
    2. En Interfaces de red, selecciona lo siguiente:
      • Red: lb-network
      • Subred: backend-subnet
  7. Haz clic en Crear.

gcloud

La VM cliente debe estar en la misma red VPC y región que el balanceador de carga. No es necesario que esté en la misma subred o zona. El cliente usa la misma subred que las VMs de backend.

gcloud compute instances create client-vm \
    --zone=ZONE_A1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=backend-subnet

Enviar tráfico al balanceador de carga

Ahora que ha configurado el balanceador de carga, puede probar a enviar tráfico a la dirección IP del balanceador de carga.

  1. Usa SSH para conectarte a la instancia de cliente.

    gcloud compute ssh client-vm \
       --zone=ZONE_A1
    
  2. Verifica que el balanceador de carga esté sirviendo los nombres de host de backend correctamente.

    1. Usa el compute addresses describe comando para ver la dirección IP del balanceador de carga:

      gcloud compute addresses describe int-tcp-ip-address \
       --region=REGION_A
      

      Anota la dirección IP.

    2. Envía tráfico al balanceador de carga. Sustituye IP_ADDRESS por la dirección IP del balanceador de carga.

      curl IP_ADDRESS:110
      

Opciones de configuración adicionales

En esta sección se amplía el ejemplo de configuración para ofrecer opciones de configuración alternativas y adicionales. Todas las tareas son opcionales. Puedes realizarlas en el orden que prefieras.

Habilitar el acceso global

Puedes habilitar el acceso global para tu balanceador de carga y que los clientes de todas las regiones puedan acceder a él. Los backends de tu balanceador de carga de ejemplo deben seguir estando en una región (REGION_A).

Balanceador de carga de red con proxy interno regional con acceso global
Balanceador de carga de red de proxy interno regional con acceso global (haz clic en la imagen para ampliarla)

No puedes modificar una regla de reenvío regional para habilitar el acceso global. Para ello, debes crear una nueva regla de reenvío. Además, una vez que se ha creado una regla de reenvío con el acceso global habilitado, no se puede modificar. Para inhabilitar el acceso global, debes crear una regla de reenvío de acceso regional y eliminar la regla de reenvío de acceso global anterior.

Para configurar el acceso global, haz los siguientes cambios en la configuración.

Consola

Crea una regla de reenvío para el balanceador de carga:

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. En la columna Nombre, haz clic en el balanceador de carga.

  3. Haz clic en Configuración de frontend.

  4. Haz clic en Añadir IP y puerto de frontend.

  5. Escribe el nombre y los detalles de la subred de la nueva regla de reenvío.

  6. En Subred, selecciona backend-subnet.

  7. En Dirección IP, puedes seleccionar la misma dirección IP que una regla de reenvío ya creada, reservar una nueva dirección IP o usar una dirección IP efímera. Solo se puede compartir la misma dirección IP en varias reglas de reenvío si se define la marca --purpose de la dirección IP en SHARED_LOADBALANCER_VIP al crearla.

  8. En Número de puerto, introduce 110.

  9. En Acceso global, selecciona Habilitar.

  10. Haz clic en Listo.

  11. Haz clic en Actualizar.

gcloud

  1. Crea una regla de reenvío para el balanceador de carga con la marca --allow-global-access.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule-global-access \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110 \
       --allow-global-access
    
  2. Puedes usar el comando gcloud compute forwarding-rules describe para determinar si una regla de reenvío tiene habilitado el acceso global. Por ejemplo:

    gcloud compute forwarding-rules describe int-tcp-forwarding-rule-global-access \
       --region=REGION_A \
       --format="get(name,region,allowGlobalAccess)"
    

    Cuando el acceso global está habilitado, la palabra True aparece en el resultado después del nombre y la región de la regla de reenvío.

Crear una VM cliente para probar el acceso global

Consola

  1. En la consola de Google Cloud , ve a la página Instancias de VM.

    Ir a instancias de VM

  2. Haz clic en Crear instancia.

  3. Asigna el valor test-global-access-vm a Nombre.

  4. Define Zona como ZONE_B1.

  5. Haz clic en Advanced options (Opciones avanzadas).

  6. Haga clic en Redes y configure los siguientes campos:

    1. En Etiquetas de red, introduzca allow-ssh.
    2. En Interfaces de red, selecciona lo siguiente:
      • Red: lb-network
      • Subred: test-global-access-subnet
  7. Haz clic en Crear.

gcloud

Crea una máquina virtual cliente en la zona ZONE_B1.

gcloud compute instances create test-global-access-vm \
    --zone=ZONE_B1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=test-global-access-subnet

Sustituye ZONE_B1 por el nombre de la zona de la región REGION_B.

Conéctate a la VM cliente y prueba la conectividad

  1. Usa ssh para conectarte a la instancia del cliente:

    gcloud compute ssh test-global-access-vm \
        --zone=ZONE_B1
    
  2. Usa el gcloud compute addresses describe comando para obtener la dirección IP del balanceador de carga:

    gcloud compute addresses describe int-tcp-ip-address \
        --region=REGION_A
    

    Anota la dirección IP.

  3. Envía tráfico al balanceador de carga. Sustituye IP_ADDRESS por la dirección IP del balanceador de carga:

    curl IP_ADDRESS:110
    

Protocolo PROXY para conservar la información de conexión del cliente

El balanceador de carga de red proxy finaliza las conexiones TCP del cliente y crea nuevas conexiones con las instancias. De forma predeterminada, la información de la IP y el puerto del cliente original no se conserva.

Para conservar y enviar la información de conexión original a tus instancias, habilita PROXY protocol version 1 (Protocolo PROXY versión 1). Este protocolo envía un encabezado adicional que contiene la dirección IP de origen, la dirección IP de destino y los números de puerto a la instancia como parte de la solicitud.

Asegúrate de que las instancias de backend del balanceador de carga de red proxy ejecuten servidores que admitan encabezados del protocolo PROXY. Si los servidores no están configurados para admitir encabezados del protocolo PROXY, las instancias de backend devuelven respuestas vacías.

Si configuras el protocolo PROXY para el tráfico de usuarios, también puedes hacerlo para tus comprobaciones del estado. Si compruebas el estado y sirves contenido en el mismo puerto, define el --proxy-header de la comprobación del estado para que coincida con la configuración del balanceador de carga.

El encabezado del protocolo PROXY suele ser una sola línea de texto legible por el usuario con el siguiente formato:

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

En el siguiente ejemplo se muestra un protocolo PROXY:

PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n

En el ejemplo anterior, la IP del cliente es 192.0.2.1, la IP de balanceo de carga es 198.51.100.1, el puerto del cliente es 15221 y el puerto de destino es 110.

Cuando no se conoce la IP del cliente, el balanceador de carga genera un encabezado de protocolo PROXY con el siguiente formato:

PROXY UNKNOWN\r\n

Actualizar el encabezado del protocolo PROXY del proxy de destino

No puedes actualizar el encabezado del protocolo PROXY en el proxy de destino. Tienes que crear un proxy de destino con el ajuste necesario para el encabezado del protocolo PROXY. Sigue estos pasos para crear un nuevo frontend con los ajustes necesarios:

Consola

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haz clic en el nombre del balanceador de carga que quieras editar.
  3. Haz clic en Editar en el balanceador de carga.
  4. Haz clic en Configuración de frontend.
  5. Elimina la IP y el puerto de frontend antiguos.
  6. Haz clic en Añadir IP y puerto de frontend.
    1. En Nombre, escribe int-tcp-forwarding-rule.
    2. En Subred, selecciona backend-subnet.
    3. En Dirección IP, selecciona la dirección IP reservada anteriormente: LB_IP_ADDRESS
    4. En Número de puerto, introduce 110. La regla de reenvío solo reenvía paquetes con un puerto de destino coincidente.
    5. Cambia el valor del campo Protocolo de proxy a Activado.
    6. Haz clic en Listo.
  7. Haz clic en Update (Actualizar) para guardar los cambios.

gcloud

  1. En el siguiente comando, edita el campo --proxy-header y asigna el valor NONE o PROXY_V1, según tus necesidades.

       gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \
           --backend-service=BACKEND_SERVICE \
           --proxy-header=[NONE | PROXY_V1] \
           --region=REGION
       
  2. Elimina la regla de reenvío que ya tienes.

       gcloud compute forwarding-rules delete int-tcp-forwarding-rule \
           --region=REGION
       
  3. Crea una regla de reenvío y asóciala al proxy de destino.

       gcloud compute forwarding-rules create int-tcp-forwarding-rule \
           --load-balancing-scheme=INTERNAL_MANAGED \
           --network=lb-network \
           --subnet=backend-subnet \
           --region=REGION \
           --target-tcp-proxy=TARGET_PROXY_NAME \
           --target-tcp-proxy-region=REGION \
           --address=LB_IP_ADDRESS \
           --ports=110
       

Habilitar la afinidad de sesión

La configuración de ejemplo crea un servicio de backend sin afinidad de sesión.

En estos procedimientos se muestra cómo actualizar un servicio de backend del balanceador de carga de red de proxy interno regional de ejemplo para que el servicio de backend use la afinidad de IP de cliente o la afinidad de cookies generada.

Cuando la afinidad de IP de cliente está habilitada, el balanceador de carga dirige las solicitudes de un cliente concreto a la misma VM de backend en función de un hash creado a partir de la dirección IP del cliente y la dirección IP del balanceador de carga (la dirección IP interna de una regla de reenvío interna).

Consola

Para habilitar la afinidad de sesión de IP de cliente, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Balanceo de carga.
    Ve a Balanceo de carga.
  2. Haz clic en Back-ends.
  3. Haz clic en internal-tcp-proxy-bs (el nombre del servicio de backend que has creado en este ejemplo) y, a continuación, en Editar.
  4. En la página Detalles del servicio backend, haz clic en Configuración avanzada.
  5. En Afinidad de sesión, seleccione IP de cliente en el menú.
  6. Haz clic en Actualizar.

gcloud

Usa el siguiente comando de la CLI de Google Cloud para actualizar el internal-tcp-proxy-bs backend service y especificar la afinidad de sesión de la IP del cliente:

gcloud compute backend-services update internal-tcp-proxy-bs \
    --region=REGION_A \
    --session-affinity=CLIENT_IP

Habilitar la purga de conexión

Puedes habilitar el drenaje de conexiones en los servicios de backend para minimizar las interrupciones para los usuarios cuando se termina, se elimina manualmente o se elimina mediante un escalador automático una instancia que está sirviendo tráfico. Para obtener más información sobre la purga de conexiones, consulta la documentación sobre cómo habilitar la purga de conexiones.

Siguientes pasos