Configura un balanceador de cargas de red de proxy externo regional con un backend externo

En la guía, se muestra cómo configurar un balanceador de cargas de red de proxy externo regional que envía solicitudes de proxy a un backend externo. Un backend externo es un extremo externo a Google Cloud.

Antes de seguir con esta guía, familiarízate con la documentación Descripción general de NEG de Internet, incluidas las limitaciones.

En el siguiente diagrama de arquitectura, se muestra un frontend del balanceador de cargas de red de proxy externo regional con un backend externo.

Un balanceador de cargas de red de proxy externo regional con un backend externo.
Figura 1. Un balanceador de cargas de red de proxy externo regional con un backend externo (haz clic para ampliar).

Permisos

Para seguir esta guía, debes crear un NEG de Internet y crear o modificar un balanceador de cargas de red de proxy en un proyecto. Debes ser propietario o editor (roles/owner o roles/editor) de proyecto o tener ambos de los siguientes roles de IAM de Compute Engine.

Tarea Función requerida
Crear y modificar componentes del balanceador de cargas Administrador de red de Compute
(roles/compute.networkAdmin)
Crear y modificar los NEG Administrador de instancias de Compute
(roles/compute.instanceAdmin)

Configura el entorno de backend externo fuera de Google Cloud

Para configurar tu entorno de backend externo, consulta las siguientes secciones.

Configura extremos de red

Configura un extremo de red para exponer tu backend externo a Google Cloud. Asegúrate de que se pueda acceder al extremo a través de Internet, ya sea una combinación de IP:Port o un nombre de dominio completamente calificado (FQDN) y un puerto. Luego, se hace referencia a este extremo desde el NEG de Internet.

A fin de obtener información sobre los requisitos de configuración detallados para los extremos de NEG de Internet, consulta Descripción general de los NEG de Internet.

Permite que el backend externo reciba tráfico de Google Cloud

Este paso se puede completar después de crear la subred de solo proxy y configurar la puerta de enlace de Cloud NAT.

Para permitir que las solicitudes de Google Cloud lleguen a tu backend externo, debes realizar los siguientes pasos:

  1. Configura una puerta de enlace de Cloud NAT con direcciones IP que se usen para el tráfico de salida de Google Cloud. La puerta de enlace asigna el rango de subred de solo proxy a las direcciones IP externas. Para conocer los pasos, consulta Configura una puerta de enlace de Cloud NAT.
  2. Asegúrate de que el entorno de backend externo esté configurado para permitir que el tráfico de Google Cloud llegue al backend externo. Por ejemplo, si usaste direcciones IP reservadas con anterioridad para la puerta de enlace de NAT, deberás incluir en la lista de entidades permitidas esas direcciones IP en tu entorno externo. Es probable que debas trabajar con el administrador de red o de seguridad de tu entorno externo para configurar esto.

Configura tu entorno de Google Cloud

Necesitarás una red de VPC con dos subredes: una para los componentes del balanceador de cargas y la otra para la subred de solo proxy de la región. Luego, crearás el balanceador de cargas con un backend de NEG de Internet.

Crea la red y la subred de VPC

Esta subred se usa para crear los componentes del balanceador de cargas.

consola de Cloud

  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. Ingresa un Nombre: LB_NETWORK
  4. En la sección Subredes, haz lo siguiente:
    • Establece Modo de creación de subred en Personalizado.
    • En la sección Nueva subred, ingresa la siguiente información:
      • Nombre: LB_SUBNET_NAME
      • Región: REGION
      • Rangos de direcciones IP: LB_SUBNET_RANGE
    • Haz clic en Listo.
  5. 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.

    gcloud compute networks subnets create LB_SUBNET_NAME \
      --network=LB_NETWORK \
      --range=LB_SUBNET_RANGE \
      --region=REGION
    

Configura la subred de solo proxy

Todos los balanceadores de cargas regionales basados en Envoy en la región REGION usan esta subred de solo proxy.

Console

  1. En la consola de Google  Cloud, ve a la página Redes de VPC.
    Ir a las redes de VPC
  2. Selecciona una red de la lista.
  3. Haz clic en Agregar subred.
  4. Ingresa un Nombre: PROXY_ONLY_SUBNET_NAME
  5. Selecciona una región: REGION
  6. Configura Propósito como Proxy administrado regional.
  7. Ingresa un Rango de direcciones IP: PROXY_ONLY_SUBNET_RANGE.
  8. Haga 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_NAME \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=REGION \
  --network=LB_NETWORK \
  --range=PROXY_ONLY_SUBNET_RANGE

Configura una puerta de enlace de Cloud NAT

Antes de configurar la puerta de enlace de Cloud NAT, asegúrate de haber revisado las limitaciones y las consideraciones de precios asociadas. Para obtener más detalles, consulta NEG regionales: Usa una puerta de enlace de Cloud NAT.

Los siguientes comandos describen cómo configurar una puerta de enlace de Cloud NAT. La puerta de enlace de Cloud NAT se puede configurar para usar direcciones IP externas automáticas de NAT, en las que la asignación se basa en la demanda, o bien para usar un conjunto de direcciones IP externas reservadas de forma manual. La puerta de enlace asigna el rango de subred de solo proxy a las direcciones IP externas.

Configura direcciones IP con NAT asignadas automáticamente

Cuando creas una puerta de enlace de Cloud NAT con la asignación de dirección IP de NAT automática, puedes especificar los niveles de servicio de red (nivel Premium o Estándar) desde los que la puerta de enlace de Cloud NAT asigna las direcciones IP.

Console

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

    Ir a Cloud NAT

  2. Haz clic en Comenzar o Crear la puerta de enlace de Cloud NAT.

  3. Ingresa un nombre de puerta de enlace LB_NAT_CONFIG.

  4. Para Tipo de NAT, seleccionaPública.

  5. En la lista Red, selecciona LB_NETWORK.

  6. En la lista Región, selecciona REGION.

  7. Crea un Cloud Router en la región.

  8. En Tipo de extremo de origen, selecciona Balanceadores de cargas de proxy administrados.

  9. En la lista Origen, selecciona Personalizado.

    • En Subredes, selecciona PROXY_ONLY_SUBNET_NAME.
  10. En la lista Direcciones IP de Cloud NAT, selecciona Automáticas (recomendado).

  11. En Nivel de servicio de red, elige Premium o Estándar.

  12. Haz clic en Crear.

gcloud

Usa direcciones IP asignadas de forma dinámica si tu entorno de backend externo no requiere que incluyas direcciones IP específicas de Google Cloud en la lista de entidades permitidas que puedan enviar tráfico al backend externo.

  1. Crea un Cloud Router:

    gcloud beta compute routers create ROUTER_NAME \
      --network=LB_NETWORK \
      --region=REGION
  2. Configura la puerta de enlace de Cloud NAT.

    gcloud beta compute routers nats create LB_NAT_CONFIG \
      --router=ROUTER_NAME \
      --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
      --nat-custom-subnet-ip-ranges=PROXY_ONLY_SUBNET_NAME \
      --auto-allocate-nat-external-ips \
      --region=REGION
    

Reemplaza lo siguiente:

  • LB_NAT_CONFIG: Es el nombre de tu configuración de NAT.

  • ROUTER_NAME: Es el nombre de tu Cloud Router.

  • REGION: la región de la NAT que se creará. Si no se especifica, es posible que se te solicite seleccionar una región (solo modo interactivo).

  • PROXY_ONLY_SUBNET_NAME: El nombre de tu subred de solo proxy.

Configura direcciones IP asignadas manualmente

Usa direcciones IP asignadas de forma manual solo si el entorno de backend externo requiere que uses una lista de entidades permitidas para direcciones IP de Google Cloud específicas. Si el entorno de backend externo no necesita una lista de entidades permitidas, usa la asignación dinámica como se mostró antes.

Cuando creas una puerta de enlace de Cloud NAT, puedes asignar direcciones IP de NAT de forma manual desde el nivel Premium, el nivel Estándar o ambos, sujetas a ciertas condiciones.

Console

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

    Ir a Cloud NAT

  2. Haz clic en Comenzar o Crear la puerta de enlace de Cloud NAT.

  3. Ingresa un nombre de puerta de enlace LB_NAT_CONFIG.

  4. En la lista Red, selecciona LB_NETWORK.

  5. En la lista Región, selecciona REGION.

  6. Selecciona o crea un Cloud Router en la región.

  7. En Tipo de extremo de origen, selecciona Balanceadores de cargas de proxy administrados.

  8. En la lista Origen, selecciona Personalizado.

    • En Subredes, selecciona PROXY_ONLY_SUBNET_NAME.
  9. En la lista Direcciones IP de Cloud NAT, selecciona Manuales.

  10. En Nivel de servicio de red, elige Premium o Estándar.

  11. Selecciona o crea una dirección IP externa reservada estática para usar en NAT.

  12. Si quieres especificar direcciones IP adicionales, haz clic en Agregar dirección IP y, luego, selecciona o crea una dirección IP externa reservada estática adicional.

  13. Haz clic en Crear.

gcloud

  1. Crea las direcciones IP. Debido a que la puerta de enlace realiza la traducción de NAT uno a uno, debes asegurarte de que el grupo de direcciones IP reservadas sea lo suficientemente grande como para manejar la cantidad de tráfico que esperas. Las direcciones IP de NAT asignadas de manera insuficiente podrían provocar la pérdida de tráfico.

    gcloud compute addresses create IP_ADDRESS_NAME_1 IP_ADDRESS_NAME_2 [IP_ADDRESS_NAME_3 ...] \
      --region=REGION
    
  2. Crea un Cloud Router:

    gcloud compute routers create ROUTER_NAME \
      --network=LB_NETWORK \
      --region=REGION
  3. Configura la puerta de enlace de Cloud NAT.

    gcloud beta compute routers nats create LB_NAT_CONFIG \
      --router=ROUTER_NAME \
      --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
      --nat-custom-subnet-ip-ranges=PROXY_ONLY_SUBNET_NAME \
      --nat-external-ip-pool=IP_ADDRESS_NAME_1,IP_ADDRESS_NAME_2,[IP_ADDRESS_NAME_3 ...] \
      --region=REGION
    

    Reemplaza lo siguiente:

  • LB_NAT_CONFIG: Es el nombre de tu configuración de NAT.

  • ROUTER_NAME: Es el nombre de tu Cloud Router.

  • PROXY_ONLY_SUBNET_NAME: El nombre de tu subred de solo proxy.

  • REGION: la región de la NAT que se creará. Si no se especifica, es posible que se te solicite seleccionar una región (solo modo interactivo).

Si deseas obtener más información, consulta Especifica los rangos de subred para NAT en la documentación de Cloud NAT.

Asegúrate de usar una lista de entidades permitidas para los rangos de direcciones IP de NAT en tu entorno de backend externo, de modo que tu backend externo pueda recibir tráfico de Google Cloud.

Reserva la dirección IP del balanceador de cargas

Reserva una dirección IP externa para el balanceador de cargas Este procedimiento crea la dirección IP del balanceador de cargas en el nivel Estándar. Los balanceadores de cargas de red del proxy externos regionales admiten los Niveles de servicio de red Premium y Estándar. Sin embargo, no se admite la creación de este balanceador de cargas en el nivel Premium en la consola de Google Cloud. En su lugar, usa gcloud o la API de REST.

Console

  1. En la consola de Google Cloud, ve a la página Reserva una dirección estática.

    Ir a Reserva una dirección estática

  2. Elige un nombre para la dirección nueva.

  3. En Nivel de servicio de red, selecciona Estándar.

  4. Para Versión de la IP, selecciona IPv4. Las direcciones IPv6 solo pueden ser globales y solo se pueden usar con balanceadores de cargas globales.

  5. En Tipo, selecciona Regional.

  6. Selecciona una Región.

  7. Deja la opción Conectado a configurada en Ninguna. Después de crear el balanceador de cargas, esta dirección IP se adjuntará a la regla de reenvío del balanceador de cargas.

  8. Haz clic en Reservar si deseas reservar la dirección IP.

gcloud

  1. Para reservar una dirección IP externa estática mediante gcloud compute, usa el comando compute addresses create.

    gcloud compute addresses create LB_IP_ADDRESS  \
       --region=REGION \
       --network-tier=STANDARD
    

    Reemplaza lo siguiente:

    • LB_IP_ADDRESS: El nombre que quieres asignar a esta dirección.
    • REGION: Es la región en la que deseas reservar esta dirección. Esta región debe ser la misma que la del balanceador de cargas. Todas las direcciones IP regionales son IPv4.
  2. Usa el comando compute addresses describe para ver el resultado:

    gcloud compute addresses describe LB_IP_ADDRESS
    

Configura el NEG de Internet

Puedes crear un NEG de Internet con extremos INTERNET_FQDN_PORT o INTERNET_IP_PORT.

Console

Crea un NEG con extremos INTERNET_FQDN_PORT

  1. En la consola de Google Cloud, ve a la página Grupo de extremos de red.

    Ir al grupo de extremos de red

  2. Haz clic en Crear un grupo de extremos de red.

  3. Especifica un INTERNET_NEG_NAME para tu NEG de Internet. Para obtener más información, consulta Convención de asignación de nombres de recursos.

  4. En la lista Tipo de grupo de extremos de red, selecciona Grupo de extremos de red (Internet) y, luego, haz lo siguiente:

    • En la lista Alcance, selecciona Regional.
    • Opcional: En la lista Región, cambia el REGION para este NEG.
    • En la lista Red, selecciona LB_NETWORK.
    • En el cuadro Puerto predeterminado, ingresa DEFAULT_PORT_NUMBER.
    • En la lista Agregar extremos a través de, selecciona Nombre y puerto de dominio completamente calificados.
  5. Seleccione Crear.

Agrega extremos INTERNET_FQDN_PORT al NEG

  1. En la consola de Google Cloud, ve a la página Grupo de extremos de red.

    Ir al grupo de extremos de red

  2. Haz clic en INTERNET_NEG_NAME.
  3. Ingresa el nombre de dominio completamente calificado, como myorg.example.com. Debes especificar los objetos de FQDN en la sintaxis de FQDN estándar.

  4. En Tipo de puerto, selecciona Personalizado. Si el Tipo de puerto es Default, se usa el puerto predeterminado del NEG.

  5. En el cuadro Número de puerto, ingresa PORT_NUMBER_1.
  6. Seleccione Crear.

Crea un NEG con extremos INTERNET_IP_PORT

  1. En la consola de Google Cloud, ve a la página Grupo de extremos de red.

    Ir al grupo de extremos de red

  2. Haz clic en Crear un grupo de extremos de red.

  3. Especifica un nombre para tu NEG de Internet INTERNET_NEG_NAME. Para obtener más información, consulta Convención de asignación de nombres de recursos.

  4. En la lista Tipo de grupo de extremos de red, selecciona Grupo de extremos de red (Internet) y, luego, haz lo siguiente:

    • En la lista Alcance, selecciona Regional.
    • Opcional: En la lista Región, cambia el REGION para este NEG.
    • En la lista Red, selecciona LB_NETWORK.
    • En el cuadro Puerto predeterminado, ingresa DEFAULT_PORT_NUMBER.
    • En la lista Agregar extremos a través de, selecciona IP y puerto.
  5. Seleccione Crear.

Agrega extremos INTERNET_IP_PORT al NEG

  1. En la consola de Google Cloud, ve a la página Grupo de extremos de red.

    Ir al grupo de extremos de red

  2. Haz clic en INTERNET_NEG_NAME.
  3. En el campo Dirección IP, ingresa IP_ADDRESS_1.
  4. Opcional: En la lista Tipo de puerto, selecciona Personalizado. Si el Tipo de puerto es Default, se usa el puerto predeterminado del NEG.

  5. En el campo Número de puerto, ingresa un PORT_NUMBER_1.
  6. Seleccione Crear.

gcloud

Para crear un NEG con extremos INTERNET_FQDN_PORT, haz lo siguiente:

  1. Crea el recurso de NEG.

    gcloud beta compute network-endpoint-groups create INTERNET_NEG_NAME \
        --network-endpoint-type=INTERNET_FQDN_PORT \
        --default-port=DEFAULT_PORT_NUMBER \
        --network=LB_NETWORK \
        --region=REGION
    
  2. Agrega extremos al NEG. Si no se especifica un puerto, se usa el puerto predeterminado del NEG.

    gcloud beta compute network-endpoint-groups update INTERNET_NEG_NAME \
        --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME_1,port=PORT_NUMBER_1" \
        [--add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME_2,port=PORT_NUMBER_2" \]
        --region=REGION
    

    Reemplaza lo siguiente:

    • FULLY_QUALIFIED_DOMAIN_NAME: es el nombre de dominio completamente calificado para el extremo.
    • PORT_NUMBER: es el número de puerto del el extremo.

    Puedes agregar hasta 256 extremos por NEG.

Si tu dominio se puede resolver en Internet, no se necesita ninguna otra configuración para configurar DNS. Sin embargo, si usas FQDN privados, deberás configurar Cloud DNS para facilitar la resolución de DNS. El nombre debe estar alojado en Cloud DNS o debe poder resolverse con el reenvío de DNS desde Cloud DNS a un DNS local.

Primero, crea una zona de Cloud DNS para alojar los registros DNS en tu proyecto. Luego, agrégale los registros DNS. Consulta la documentación de Cloud DNS para conocer los pasos de configuración específicos.

Para crear un NEG con extremos INTERNET_IP_PORT, haz lo siguiente:

  1. Crea el recurso de NEG.

    gcloud beta compute network-endpoint-groups create INTERNET_NEG_NAME \
        --network-endpoint-type=INTERNET_IP_PORT \
        --default-port=DEFAULT_PORT_NUMBER \
        --network=LB_NETWORK \
        --region=REGION
    
  2. Agrega extremos al NEG. Si no se especifica un puerto, se usa el puerto predeterminado del NEG.

    gcloud beta compute network-endpoint-groups update INTERNET_NEG_NAME \
        --add-endpoint="ip=IP_ADDRESS_1,port=PORT_NUMBER_1" \
        [--add-endpoint="ip=IP_ADDRESS_2,port=PORT_NUMBER_2" \]
        --region=REGION
    

    Reemplaza lo siguiente:

    • IP_ADDRESS: es la dirección IP del extremo.
    • PORT_NUMBER: es el número de puerto del el extremo.

    Puedes repetir este paso para agregar hasta 256 extremos por NEG.

Crea 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 Orientado al público (externo) y haz clic en Siguiente.
  6. En Implementación global o de una sola región, selecciona Mejor para cargas de trabajo regionales y haz clic en Siguiente.
  7. Haz clic en Configurar.

Configuración básica

  1. Ingresa un nombre de balanceador de cargas.
  2. En Región, selecciona REGION.
  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_NAME.
  3. En Rango de direcciones IP, ingresa PROXY_ONLY_SUBNET_RANGE.
  4. Haga clic en Agregar.

Configuración de frontend

  1. Haz clic en Configuración de frontend.
  2. Ingresa un Nombre.
  3. En Subred, selecciona LB_SUBNET_NAME.
  4. En Dirección IP, selecciona la dirección IP que se reservó antes: LB_IP_ADDRESS.
  5. En Número de puerto, especifica un solo número de puerto entre 1 y 65535. La regla de reenvío solo reenvía los paquetes con un puerto de destino coincidente.
  6. Haz clic en Listo.

Configuración de backend

  1. Haz clic en Configuración de backend.
  2. Haz clic en Servicios y buckets de backend.
  3. Haz clic en Crear un servicio de backend.
  4. Ingresa un nombre.
  5. En Tipo de backend, selecciona Grupo de extremos de red de Internet.
  6. En Protocol, selecciona TCP.
  7. En Backends, en la ventana Nuevo backend, selecciona el grupo de extremos de red de Internet regional que se creó en el paso anterior.
  8. Haz clic en Listo.
  9. Configura la verificación de estado:
    1. En Verificación de estado, seleccione Crear una verificación de estado.
    2. Establece el nombre de la verificación de estado como TCP_HEALTH_CHECK_NAME.
    3. En Protocol, selecciona TCP.
    4. Configura el Puerto como 80.
    5. Conserva los valores predeterminados restantes y haz clic en Guardar.
  10. Haz clic en Crear.

Revisa y finaliza

  1. Haz clic en Revisar y finalizar.
  2. Si todo parece correcto, haz clic en Crear.

gcloud

  1. Crea una verificación de estado (opcional). Los sondeos de verificación de estado para backends externos usan las verificaciones de estado distribuidas de Envoy y, luego, se traducen por medio de NAT.
      gcloud compute health-checks create tcp TCP_HEALTH_CHECK_NAME \
          --region=REGION \
          --use-serving-port
      
  2. Crea un servicio de backend:
      gcloud compute backend-services create BACKEND_SERVICE \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --health-checks=TCP_HEALTH_CHECK_NAME \
          --health-checks-region=REGION \
          --region=REGION
      
  3. Agrega el NEG de Internet al servicio de backend:
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --network-endpoint-group=INTERNET_NEG_NAME \
          --network-endpoint-group-region=REGION \
          --region=REGION
       
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --network-endpoint-group=INTERNET_NEG_NAME \
          --network-endpoint-group-region=REGION \
          --region=REGION
       
  4. Crea un proxy TCP de destino para enrutar las solicitudes a tu servicio de backend.

      gcloud compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \
          --backend-service=BACKEND_SERVICE \
          --region=REGION
      
  5. Crea una regla de reenvío para enrutar las solicitudes entrantes al proxy. Para `--ports`, especifica un solo número de puerto, de 1 a 65535. La regla de reenvío solo reenvía los paquetes con un puerto de destino coincidente.

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network-tier=STANDARD \
          --network=LB_NETWORK \
          --address=LB_IP_ADDRESS \
          --target-tcp-proxy=TARGET_TCP_PROXY_NAME \
          --target-tcp-proxy-region=REGION \
          --region=REGION \
          --ports=PORT_NUMBER
      

Prueba el 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. Obtén la dirección IP del balanceador de cargas.

    Para obtener la dirección IPv4, ejecuta el siguiente comando:

    gcloud compute addresses describe LB_IP_ADDRESS
    
  2. Envía tráfico al balanceador de cargas en la dirección IP y el puerto especificados cuando crees la regla de reenvío del balanceador de cargas. Las pruebas para ver si los backends de NEG de Internet responden a las solicitudes dependen del servicio que se ejecuta en los extremos externos.

¿Qué sigue?