Configura un balanceador de cargas de red de proxy interno regional con backends de grupos de instancias de VM

El balanceador de cargas de red del proxy interno regional es un balanceador de cargas regional de capa 4 basado en proxy que te permite ejecutar y escalar el tráfico de servicio TCP detrás de 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.

Esta guía contiene instrucciones para configurar un balanceador de cargas de red de proxy interno regional con un backend de grupo de instancias administrado (MIG).

Antes de comenzar, lee la descripción general del balanceador de cargas de red de proxy interno regional.

Descripción general

En este ejemplo, usaremos el balanceador de cargas para distribuir el tráfico de TCP entre las VM de backend en dos grupos de instancias zonales administrados en la región REGION_A. En este ejemplo en particular, el servicio consiste en un conjunto de servidores Apache configurados para responder en el puerto 110. Muchos navegadores no admiten el puerto 110, por lo que, en la sección de prueba, se usa curl.

En este ejemplo, debes configurar la siguiente implementación:

Configuración de ejemplo del balanceador de cargas de red de proxy regional interno con backends de grupo de instancias
Configuración de ejemplo del balanceador de cargas de red de proxy regional interno con backends de grupo de instancias

El balanceador de cargas de red del proxy interno regional es un balanceador de cargas regional. Todos los componentes del balanceador de cargas (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 ser propietario o editor de un proyecto o tener todas las siguientes funciones de IAM de Compute Engine:

Tarea Función requerida
Crear redes, subredes y componentes del balanceador de cargas Administrador de redes
Agrega y quita reglas de firewall Administrador de seguridad
Crea instancias Administrador de instancias de Compute

Si deseas obtener más información, consulta las siguientes guías:

Configura la red y las subredes

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

Este ejemplo usa la siguiente red de VPC, región y subredes:

  • Red. Es una red de VPC de modo personalizado con el nombre lb-network.

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

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

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

Crea la red y las subredes

Console

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

    Ir a las redes de VPC

  2. Haz clic en Crear red de VPC.

  3. En Nombre, ingresa lb-network.

  4. En la sección Subredes, establece Modo de creación de subred como Personalizado.

  5. Crea una subred para los backends del balanceador de cargas. En la sección Nueva subred, ingresa la siguiente información:

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

  7. Haz clic en Agregar subred.

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

    • Nombre: test-global-access-subnet
    • Región: REGION_B
    • Rangos 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 en 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
    

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

  3. Crea una subred en la red lb-network en 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
    

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

Crea la subred de solo proxy

La subred de solo proxy proporciona un conjunto de direcciones IP que Google usa para ejecutar proxies de Envoy en tu nombre. Los proxies finalizan las conexiones del cliente y crean conexiones nuevas a los backends.

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

Console

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 cargas.

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

  1. En la consola de Google Cloud, ve a la página Redes de VPC.
    Ir a las redes de VPC
  2. Haz clic en el nombre de la red de VPC compartida: lb-network.
  3. Haz clic en Agregar subred.
  4. En Nombre, ingresa proxy-only-subnet.
  5. En Región, selecciona REGION_A.
  6. Configura Propósito como Proxy administrado regional.
  7. En Rango de direcciones IP, ingresa 10.129.0.0/23.
  8. Haz clic en Agregar.

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

Crea reglas de firewall

En este ejemplo, se requieren las siguientes reglas de firewall:

  • fw-allow-ssh. Es 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 que inicias 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 en las que se realiza el balanceo de cargas, que permite todo el tráfico de TCP de los sistemas de verificación de estado de Google Cloud (en 130.211.0.0/22 y 35.191.0.0/16). En este ejemplo, se usa la etiqueta de destino allow-health-check.

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

Sin estas reglas de firewall, la regla predeterminada de denegación de entrada bloquea el tráfico entrante a las instancias de backend.

Las etiquetas de destino definen las instancias de backend. Sin las etiquetas de destino, las reglas de firewall se aplican a todas las instancias de backend en la red de VPC. Cuando crees las VM de backend, asegúrate de incluir las etiquetas de destino especificadas, como se muestra en Crea un grupo de instancias administrado.

Console

  1. En la consola de Google Cloud, ve a la página Firewall.
    Ir a Políticas de firewall
  2. Haz clic en Crear regla de firewall para crear la regla que permite conexiones SSH entrantes:
    • Nombre: fw-allow-ssh
    • Red: lb-network
    • Dirección del tráfico: Entrada
    • Acción en caso de coincidencia: Permitir
    • Destinos: 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.
      • Selecciona la casilla de verificación TCP y, luego, ingresa 22 para el número de puerto.
  3. Haz clic en Crear.
  4. Haz clic en Crear regla de firewall por segunda vez para crear la regla que permita las verificaciones de estado de Google Cloud:
    • Nombre: fw-allow-health-check
    • Red: lb-network
    • Dirección del tráfico: Entrada
    • Acción en caso de coincidencia: Permitir
    • Destinos: 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 y 35.191.0.0/16
    • Protocolos y puertos:
      • Elige Protocolos y puertos especificados.
      • Selecciona la casilla de verificación TCP y, luego, ingresa 80 para el número de puerto.
        Como práctica recomendada, limita esta regla solo a los protocolos y puertos que coincidan con los que usa tu verificación de estado. Si usas tcp:80 en el protocolo y el puerto, Google Cloud puede usar HTTP en el puerto 80 a fin de contactar las VM, pero no puede usar HTTPS en el puerto 443 para comunicarse con ellas.
  5. Haz clic en Crear.
  6. Haz clic en Crear regla de firewall por tercera vez para crear la regla a fin de permitir que los servidores proxy del balanceador de cargas conecten los backends:
    • Nombre: fw-allow-proxy-only-subnet
    • Red: lb-network
    • Dirección del tráfico: Entrada
    • Acción en caso de coincidencia: Permitir
    • Destinos: Etiquetas de destino especificadas
    • Etiquetas de destino: allow-proxy-only-subnet
    • Filtro de fuente: Rangos de IPv4
    • Rangos de IPv4 de origen: 10.129.0.0/23
    • Protocolos y puertos:
      • Elige Protocolos y puertos especificados.
      • Selecciona la casilla de verificación TCP y, luego, ingresa 80 para los números de puerto.
  7. Haz clic en Crear.

gcloud

  1. Crea la regla de firewall fw-allow-ssh para permitir la conectividad SSH a las VM con la etiqueta de red allow-ssh. Cuando omites source-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
    
  2. Crea la regla fw-allow-health-check para permitir las verificaciones de estado de Google Cloud. Este ejemplo permite todo el tráfico de TCP proveniente de la verificación de estado. Sin embargo, puedes configurar un conjunto más limitado de puertos según tus 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 fw-allow-proxy-only-subnet para permitir que los proxies de Envoy de la región se conecten a tus backends. Configura --source-ranges en los rangos 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
    

Reserva la dirección IP del balanceador de cargas

Si deseas reservar una dirección IP interna estática para tu balanceador de cargas, consulta Reserva una dirección IPv4 o IPv6 interna estática nueva.

Cree un grupo de instancias administrado

En esta sección, se muestra cómo crear dos backends de grupos de instancias administrados (MIG) en la región REGION_A del balanceador de cargas. El MIG proporciona instancias de VM que ejecutan los servidores Apache de backend para este ejemplo de balanceador de cargas de red del proxy interno regional. Por lo general, no se usa un balanceador de cargas de red interno de proxy regional para el tráfico HTTP, pero Apache es un software de uso común y es fácil de configurar para realizar pruebas.

Consola

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

    Ir a Plantillas de instancia

    1. Haz clic en Crear plantilla de instancias.
    2. En Nombre, ingresa int-tcp-proxy-backend-template.
    3. Asegúrate de que el disco de arranque esté configurado como una imagen de Debian, como Debian GNU/Linux 10 (stretch). En estas instrucciones, se usan comandos que solo están disponibles en Debian, como apt-get.
    4. Haz clic en Opciones avanzadas.
    5. Haz clic en Herramientas de redes y configura los siguientes campos:
      1. En Etiquetas de red, ingresa 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 Administración. Ingresa 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 administrado. En la consola de Google Cloud, 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 administrado (sin estado). Para obtener más información, consulta MIG sin estado o con estado.
    3. En Nombre, ingresa mig-a.
    4. En Ubicación, selecciona Zona única.
    5. En Región, selecciona REGION_A.
    6. En Zona, selecciona ZONE_A1.
    7. En Plantilla de instancias, selecciona int-tcp-proxy-backend-template.
    8. 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.
    9. En Asignación de puertos, haz clic en Agregar puerto.

      • En Nombre del puerto, ingresa tcp80.
      • En Número de puerto, ingresa 80.
    10. Haz clic en Crear.

  3. Repite el paso 2 para crear un segundo grupo de instancias administrado con la siguiente configuración:

    1. Name: mig-c
    2. Zona: ZONE_A2 Mantén todas las demás opciones de configuración iguales.

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.

  1. Crea una plantilla de instancias de VM con el servidor de 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-10 \
       --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 administrado en la zona ZONE_A1.

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

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

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

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

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

Configura el balanceador de cargas

Console

Inicia la configuración

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

    Ir a Balanceo de cargas

  2. Haz clic en Crear balanceador de cargas.
  3. En Tipo de balanceador de cargas, selecciona Balanceador de cargas de red (TCP/UDP/SSL) y haz clic en Siguiente.
  4. En Proxy o transferencia, selecciona Balanceador de cargas de proxy y haz clic en Siguiente.
  5. En Orientado al público o interno, selecciona Interno y haz clic en Siguiente.
  6. En Implementación entre regiones o de una sola región, selecciona Ideal para cargas de trabajo regionales y haz clic en Siguiente.
  7. Haz clic en Configurar.

Configuración básica

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

Reserva una subred de solo proxy

Sigue estos pasos para reservar una subred de solo proxy:

  1. Haz clic en Reservar subred.
  2. En Nombre, ingresa proxy-only-subnet.
  3. En Rango de direcciones IP, ingresa 10.129.0.0/23.
  4. Haga clic en Agregar.

Configuración de backend

  1. Haga clic en Configuración de backend.
  2. En Tipo de backend, selecciona Grupo de instancias.
  3. En Protocol, selecciona TCP.
  4. En Puerto con nombre, ingresa tcp80.
  5. Configura el primer backend:
    1. En Nuevo backend, selecciona el grupo de instancias mig-a.
    2. En Números de puerto, ingresa 80.
    3. Conserva los valores predeterminados restantes y haz clic en Listo.
  6. Configura el segundo backend:
    1. Haga clic en Agregar backend.
    2. En Nuevo backend, selecciona el grupo de instancias mig-c.
    3. En Números de puerto, ingresa 80.
    4. Conserva los valores predeterminados restantes y haz clic en Listo.
  7. Configura la verificación de estado:
    1. En Verificación de estado, selecciona Crear una verificación de estado.
    2. Establece el campo Nombre de la verificación de estado en tcp-health-check.
    3. En Protocol, selecciona TCP.
    4. Configura el Puerto como 80.
  8. Conserva los valores predeterminados restantes y haz clic en Guardar.
  9. En la consola de Google Cloud, verifica que haya una marca de verificación junto a Configuración de backend. De lo contrario, verifica que hayas completado todos los pasos.

Configuración de frontend

  1. Haga clic en Configuración de frontend.
  2. En Nombre, ingresa int-tcp-forwarding-rule.
  3. En Subred, selecciona backend-subnet.
  4. En Dirección IP, selecciona la dirección IP que se reservó antes: LB_IP_ADDRESS
  5. En Número de puerto, ingresa 110. La regla de reenvío solo reenvía los paquetes con un puerto de destino coincidente.
  6. En este ejemplo, no habilites el Protocolo de proxy porque no funciona con el software del servidor HTTP de Apache. Para obtener más información, consulta Protocolo de proxy.
  7. Haga clic en Listo.
  8. En la consola de Google Cloud, verifica que haya una marca de verificación junto a Configuración de frontend. De lo contrario, verifica que hayas completado todos los pasos anteriores.

Revisa y finaliza

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

gcloud

  1. Creación de una verificación de 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. Agrega 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, configúralo como PROXY_V1 en lugar de NONE. En este ejemplo, no habilites el Protocolo de 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. Para --ports, especifica un solo número de puerto, de 1 a 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
    

Prueba el balanceador de cargas

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

Crea una VM de cliente

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

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. Establece el Nombre como client-vm.

  4. Establece la Zona en ZONE_A1.

  5. Haz clic en Opciones avanzadas.

  6. Haz clic en Herramientas de redes y configura los siguientes campos:

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

gcloud

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

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

Envía tráfico al balanceador de cargas

Ahora que ya configuraste el balanceador de cargas, puedes probar el envío de tráfico a la dirección IP del balanceador de cargas.

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

    gcloud compute ssh client-vm \
       --zone=ZONE_A1
    
  2. Verifica que el balanceador de cargas entregue los nombres de host del backend como se esperaba.

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

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

      Anota la dirección IP.

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

      curl IP_ADDRESS:110
      

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.

Habilitar el acceso global

Puedes habilitar el acceso global para tu balanceador de cargas para que sea accesible a los clientes en todas las regiones. De todos modos, los backends del balanceador de cargas de ejemplo deben ubicarse en una región (REGION_A).

Balanceador de cargas de red del proxy interno regional con acceso global
Balanceador de cargas de red de proxy regional interno con acceso global (haz clic para ampliar)

No puedes modificar una regla de reenvío regional existente para habilitar el acceso global. Debes crear una nueva regla de reenvío para este fin. Además, después de crear una regla de reenvío con acceso global habilitado, no se puede modificar. Para inhabilitar el acceso global, debes crear una nueva regla de reenvío de acceso regional y borrar la regla anterior.

Para configurar el acceso global, realiza los siguientes cambios de configuración.

Consola

Crea una nueva regla de desvío para el balanceador de cargas:

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

    Ir a Balanceo de cargas

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

  3. Haz clic en Configuración de frontend.

  4. Haz clic en Agregar IP y puerto de frontend.

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

  6. En Subred, selecciona backend-subnet.

  7. En la dirección IP, puedes seleccionar la misma dirección IP que una regla de reenvío existente, reservar una dirección IP nueva o usar una dirección IP efímera. Compartir la misma dirección IP en varias reglas de reenvío solo es posible si configuras la marca de dirección IP --purpose como SHARED_LOADBALANCER_VIP mientras creas la dirección IP.

  8. En Número de puerto, ingresa 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 nueva para el balanceador de cargas 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.

Crea una VM de 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. Establece el Nombre como test-global-access-vm.

  4. Establece la Zona en ZONE_B1.

  5. Haz clic en Opciones avanzadas.

  6. Haz clic en Herramientas de redes y configura los siguientes campos:

    1. En Etiquetas de red, ingresa 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 VM de cliente en la zona ZONE_B1.

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

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

Conéctate a la VM de cliente y prueba la conectividad

  1. Usa ssh para conectarte al cliente.

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

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

    Anota la dirección IP.

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

    curl IP_ADDRESS:110
    

Protocolo PROXY para retener información de conexión del cliente

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

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

Asegúrate de que las instancias de backend del balanceador de cargas de red del 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 muestran respuestas vacías.

Si configuras el protocolo PROXY para el tráfico de los usuarios, también debes configurarlo para las verificaciones de estado. Si verificas el estado y entregas contenido en el mismo puerto, configura el --proxy-header de la verificación de estado para que coincida con la configuración del balanceador de cargas.

Por lo general, el encabezado del protocolo PROXY será una sola línea de texto legible para 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 de cliente es 192.0.2.1, la IP de balanceo de cargas es 198.51.100.1, el puerto del cliente es 15221 y el puerto de destino es 110.

Cuando no se sabe la dirección IP de cliente, el balanceador de cargas genera un encabezado de protocolo PROXY con el formato siguiente:

PROXY UNKNOWN\r\n

Actualiza el encabezado del protocolo PROXY para el proxy de destino

No puedes actualizar el encabezado del protocolo PROXY en el proxy de destino existente. Debes crear un proxy de destino nuevo con la configuración requerida para el encabezado del protocolo PROXY. Sigue estos pasos para crear un frontend nuevo con la configuración necesaria:

Console

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

    Ir a Balanceo de cargas

  2. Haz clic en el nombre del balanceador de cargas que quieres editar.
  3. Haz clic en Editar para editar tu balanceador de cargas.
  4. Haz clic en Configuración de frontend.
  5. Borra la IP y el puerto de frontend anteriores.
  6. Haz clic en Agregar IP y puerto de frontend.
    1. En Nombre, ingresa int-tcp-forwarding-rule.
    2. En Subred, selecciona backend-subnet.
    3. En Dirección IP, selecciona la dirección IP que se reservó antes: LB_IP_ADDRESS
    4. En Número de puerto, ingresa 110. La regla de reenvío solo reenvía los paquetes con un puerto de destino coincidente.
    5. Cambia el valor del campo del Protocolo Proxy a Activado.
    6. Haz clic en Listo.
  7. Haz clic en Actualizar para guardar los cambios.

gcloud

  1. En el siguiente comando, edita el campo --proxy-header y configúralo como NONE o PROXY_V1 según tu requisito.

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

       gcloud compute forwarding-rules delete int-tcp-forwarding-rule \
           --region=REGION
       
  3. Crea una regla de reenvío nueva y asóciala con el 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
       

Habilita la afinidad de sesión

En la configuración de ejemplo, se crea un servicio de backend sin afinidad de sesión.

En estos procedimientos, se muestran cómo actualizar un servicio de backend para el balanceador de cargas de proxy regional interno de ejemplo ade modo que el servicio de backend use la afinidad de IP de cliente o la afinidad de cookie generada.

Cuando la afinidad de IP de cliente está habilitada, el balanceador de cargas dirige las solicitudes de un cliente en particular a la misma VM de backend según el hash que se generó en la dirección IP del cliente y la dirección IP del balanceador de cargas (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 consola de Google Cloud, ve a la página Balanceo de cargas.
    Ir a Balanceo de cargas
  2. Haga clic en Backends.
  3. Haz clic en internal-tcp-proxy-bs (el nombre del servicio de backend que creaste para este ejemplo) y en Editar.
  4. En la página Detalles del servicio de backend, haz clic en Configuración avanzada.
  5. En Afinidad de sesión, selecciona IP de cliente en el menú.
  6. Haz clic en Actualizar.

gcloud

Usa el siguiente comando de gcloud a fin de actualizar el servicio de backend internal-tcp-proxy-bs; para ello, especifica la afinidad de sesión de IP de cliente:

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

Habilita el vaciado de conexiones

Puedes habilitar el desvío de conexiones en servicios de backend a fin de garantizar una interrupción mínima para tus usuarios cuando se finaliza una instancia que entrega tráfico, se quita de forma manual o la quita un escalador automático. Para obtener más información sobre el vaciado de conexiones, consulta la documentación Habilita el vaciado de conexiones.

¿Qué sigue?