Configurar un balanceador de carga de red de proxy clásico (proxy SSL) con backends de grupos de instancias de VM

En este documento se proporcionan instrucciones para configurar un balanceador de carga de red de proxy clásico con un proxy SSL de destino y back-ends de grupo de instancias de VM. Antes de empezar, consulta la descripción general del balanceador de carga de red de proxy externo para obtener información sobre cómo funcionan estos balanceadores de carga.

Descripción general de la configuración

En este ejemplo se muestra cómo configurar un balanceador de carga de red de proxy externo para un servicio que se encuentra en dos regiones: la A y la B. Configurarás lo siguiente:

  1. Cuatro instancias distribuidas en dos regiones
  2. Grupos de instancias para alojar las instancias
  3. Componentes de backend, que incluyen lo siguiente:
    • Comprobación del estado: se usa para monitorizar el estado de las instancias.
    • Servicio de backend: monitoriza los grupos de instancias y evita que superen el uso configurado.
    • Backends: contienen los grupos de instancias
  4. Componentes de frontend, que incluyen lo siguiente:
    • Un recurso de certificado SSL. Puedes usar un certificado autogestionado, en el que proporcionas tu propio certificado SSL, o un certificado gestionado por Google, en el que Google emite un certificado válido para todos tus dominios. Para obtener más información, consulta Tipos de certificados SSL.
    • El propio proxy SSL con su certificado SSL
    • Una dirección IPv4 estática externa y una regla de reenvío que envía el tráfico de los usuarios al proxy
    • Una dirección IPv6 estática externa y una regla de reenvío que envía el tráfico de los usuarios al proxy
  5. Una regla de cortafuegos que permita el tráfico del balanceador de carga y del comprobador de estado a las instancias.
  6. Opcionalmente, una política de SSL para controlar las funciones de SSL que negocia el balanceador de carga del proxy SSL con los clientes.

Después, probarás la configuració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

Para crear la red y la subred de ejemplo, sigue estos pasos.

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. Introduce un nombre para la red.

  4. Elige Personalizado en Modo de creación de subred.

  5. En la sección Nueva subred, especifica los siguientes parámetros de configuración de una subred:

    1. En el campo Nombre, asigna un nombre a la subred.
    2. En el campo Region (Región), introduce el nombre de una región.
    3. En Tipo de pila de IP, selecciona IPv4 (pila única).
    4. En el campo Intervalo de direcciones IP, introduce un intervalo de direcciones IP. Este es el intervalo IPv4 principal de la subred.
  6. Haz clic en Listo.

  7. Para añadir una subred en otra región, haz clic en Añadir subred y repite los pasos anteriores.

  8. Haz clic en Crear.

gcloud

gcloud compute networks subnets update SUBNET \
    --network=NETWORK \
    --stack-type=IPV4_ONLY \
    --range=10.1.2.0/24 \
    --region=REGION_A

Haz los cambios siguientes:

  • NETWORK: nombre de la red de VPC

  • SUBNET: nombre de la subred

  • REGION_A: el nombre de la región

Configurar instancias y grupos de instancias

En esta sección se muestra cómo crear instancias y grupos de instancias, y cómo añadir las instancias a los grupos de instancias. Un sistema de producción normalmente usaría grupos de instancias gestionadas basados en plantillas de instancias, pero esta configuración es más rápida para las pruebas iniciales.

Crear instancias

Crea estas instancias con la etiqueta ssl-lb, que usará la regla de cortafuegos más adelante.

Consola

Crear instancias

  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 vm-a1 a Nombre.

  4. En Zona, elija ZONE_A.

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

  6. Haga clic en Redes y configure el siguiente campo:

    • En el campo Etiquetas de red, introduce ssl-lb y allow-health-check-ipv6.
  7. En la sección Interfaces de red, haz clic en Editar y haz los siguientes cambios:

    • Selecciona la red.
    • Selecciona una subred.

    • Haz clic en Listo.

  8. Haz clic en Gestión. Introduce la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio.

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
  9. Deja los valores predeterminados en el resto de los campos.

  10. Haz clic en Crear.

  11. Crea un vm-a2 con los mismos ajustes, excepto con el script de inicio configurado de la siguiente manera:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html
  12. Crea un vm-b1 con los mismos ajustes, excepto que Zona debe ser ZONE_B y Secuencia de comandos de inicio debe ser la siguiente:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html
  13. Crea un vm-b2 con los mismos ajustes, excepto que Zona debe ser ZONE_B y Secuencia de comandos de inicio debe ser la siguiente:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. Crea vm-a1 en la zona ZONE_A.

    gcloud compute instances create vm-a1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags ssl-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo a2ensite default-ssl
         sudo a2enmod ssl
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  2. Crea vm-a2 en la zona ZONE_A.

    gcloud compute instances create vm-a2 \
      --image-family=debian-12 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=ZONE_A \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  3. Crea vm-b1 en la zona ZONE_B.

    gcloud compute instances create vm-b1 \
      --image-family=debian-12 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=ZONE_B \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    
  4. Crea vm-b2 en la zona ZONE_B.

    gcloud compute instances create vm-b2 \
      --image-family=debian-12 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=ZONE_B \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    

Crea un grupo de instancias para cada zona y añade instancias

Consola

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

    Ir a Grupos de instancias

  2. Haz clic en Crear grupo de instancias.

  3. Asigna el valor instance-group-a a Nombre.

  4. En Zona, elija ZONE_A.

  5. En Asignación de puertos, haz clic en Añadir puerto. Un balanceador de carga envía tráfico a un grupo de instancias mediante un puerto con nombre. Crea un puerto con nombre para mapear el tráfico entrante a un número de puerto específico.

    1. Introduce un Nombre de puerto de ssl-lb y Números de puerto de 443.
  6. En Definición de instancia, haga clic en Seleccionar instancias.

  7. En Instancias de VM, selecciona vm-a1 y vm-a2.

  8. Deja el resto de los ajustes como están.

  9. Haz clic en Crear.

  10. Repite los pasos, pero define lo siguiente:

    • Nombre: instance-group-b
    • Zona: ZONE_B
    • Nombre del puerto de ssl-lb y números de puerto de 443
    • Instancias: vm-b1 y vm-b2.
  11. Confirma que ahora tienes dos grupos de instancias, cada uno con dos instancias.

gcloud

  1. Crea el grupo de instancias instance-group-a.

    gcloud compute instance-groups unmanaged create instance-group-a --zone ZONE_A
    
  2. Define un puerto con nombre para el grupo de instancias.

    gcloud compute instance-groups set-named-ports instance-group-a \
        --named-ports=ssl-lb:443 \
        --zone=ZONE_A
    
  3. Añade vm-a1 y vm-a2 a instance-group-a

    gcloud compute instance-groups unmanaged add-instances instance-group-a \
        --instances=vm-a1,vm-a2 \
        --zone=ZONE_A
    
  4. Crea el grupo de instancias instance-group-b.

    gcloud compute instance-groups unmanaged create instance-group-b --zone ZONE_B
    
  5. Define un puerto con nombre para el grupo de instancias.

    gcloud compute instance-groups set-named-ports instance-group-b \
        --named-ports=ssl-lb:443 \
        --zone=ZONE_B
    
  6. Añade vm-b1 y vm-b2 a instance-group-b

    gcloud compute instance-groups unmanaged add-instances instance-group-b \
        --instances=vm-b1,vm-b2 \
        --zone=ZONE_B
    

Ahora tienes un grupo de instancias en cada una de las dos regiones, y cada grupo tiene dos instancias.

Crear una regla de cortafuegos para el balanceador de carga SSL

Configura el cortafuegos para permitir el tráfico del balanceador de carga y del comprobador de estado a las instancias.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de cortafuegos.

    Ir a Políticas de cortafuegos

  2. Haz clic en Crear regla de cortafuegos.

  3. En el campo Name (Nombre), introduce allow-ssl-lb-and-health.

  4. Selecciona la red.

  5. En Objetivos, seleccione Etiquetas de destino especificadas.

  6. Defina Etiquetas de destino en ssl-lb.

  7. En Filtro de origen, elija Intervalos de IPv4.

  8. Asigna los valores 130.211.0.0/22 y 35.191.0.0/16 a Intervalos de IPv4 de origen.

  9. En Protocolos y puertos, selecciona Protocolos y puertos especificados en tcp:443.

  10. Haz clic en Crear.

gcloud

gcloud compute firewall-rules create allow-ssl-lb-and-health \
  --source-ranges=130.211.0.0/22,35.191.0.0/16 \
  --target-tags=ssl-lb \
  --allow=tcp:443

Si usas un certificado gestionado por Google, comprueba que el estado de tu recurso de certificado sea ACTIVE. Para obtener más información, consulta el estado del recurso de certificado SSL gestionado por Google.

gcloud compute ssl-certificates list

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 Público (externo) y haz clic en Siguiente.
  6. En Implementación global o en una sola región, selecciona La mejor opción para cargas de trabajo globales y haz clic en Siguiente.
  7. En Generación del balanceador de carga, selecciona Balanceador de carga de red de proxy clásico y haz clic en Siguiente.
  8. Haz clic en Configurar.

Configuración básica

Asigna el valor my-ssl-lb a Nombre.

Configuración de backend

  1. Haz clic en Configuración de backend.
  2. En Tipo de backend, selecciona Grupos de instancias.
  3. Define el Protocol (Protocolo) como SSL.
  4. En Puerto con nombre, introduce ssl-lb.
  5. Acepta el valor predeterminado de Tiempo de espera.
  6. Deja Tipo de backend configurado como Grupos de instancias.
  7. Configura el primer backend:
    1. En Nuevo backend, selecciona el grupo de instancias instance-group-a.
    2. Define Port numbers (Transferir números) en 443.
    3. Mantén los valores predeterminados restantes.
  8. Configura el segundo backend:
    1. Haz clic en Añadir backend.
    2. Selecciona el grupo de instancias instance-group-b.
    3. Define Port numbers (Transferir números) en 443.
    4. Haz clic en Listo.
  9. Configura la comprobación del estado:
    1. En Comprobación del estado, selecciona Crear comprobación del estado.
    2. Asigna el valor my-ssl-health-check al Nombre de la comprobación del estado.
    3. En Protocol (Protocolo), selecciona SSL.
    4. Mantén los valores predeterminados restantes.
    5. Haz clic en Guardar y continuar.
  10. 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 del frontend

  1. Haz clic en Configuración de frontend.
    1. Añade la primera regla de reenvío:
    2. Asigne un Nombre de my-ssl-lb-forwarding-rule.
    3. En Protocol (Protocolo), selecciona SSL.
    4. En Dirección IP, selecciona Crear dirección IP:
      1. Asigne un Nombre de ssl-lb-static-ipv4.
      2. Haz clic en Reservar.
    5. En Certificado, selecciona Crear un certificado.
    6. Asigne un Nombre de my-ssl-cert.
    7. Si eliges Subir mi certificado, sigue estos pasos:
      1. Pega el certificado o haz clic en Subir para ir al archivo del certificado.
      2. Pega tu clave privada o haz clic en Subir para ir al archivo de tu clave privada.
    8. Si eliges Crear certificado gestionado por Google, introduce un dominio.
      1. Para introducir más dominios, haz clic en Añadir dominio.
      2. Haz clic en Crear.
    9. Para añadir recursos de certificado además del recurso de certificado SSL principal, haga clic en Certificados adicionales. A continuación, selecciona otro certificado en el menú Certificados o haz clic en Crear un certificado y sigue las instrucciones anteriores.
      1. (Opcional) Para crear una política de SSL:
      2. En Política de SSL, selecciona Crear una política.
      3. Asigne un Nombre de my-ssl-policy.
      4. En Versión mínima de TLS, selecciona TLS 1.0.
      5. En Perfil, selecciona Moderno. Se muestran las funciones habilitadas y las funciones inhabilitadas.
      6. Haz clic en Guardar.
    10. Opcional: Activa Protocolo de proxy.
    11. Haz clic en Listo.
      Añade la segunda regla de reenvío:
    1. Haz clic en Añadir IP y puerto de frontend.
    2. Asigne un Nombre de my-ssl-lb-ipv6-forwarding-rule.
    3. Configura Versión de IP como IPv6.
    4. En Dirección IP, haz clic en Crear dirección IP.
      1. Introduce un nombre de ssl-lb-static-ipv6.
      2. Haz clic en Reservar.
    5. En Certificado, selecciona my-ssl-cert.
    6. Para añadir recursos de certificado además del recurso de certificado SSL principal, selecciona un certificado de la lista Certificados o haz clic en Crear un certificado.
    7. Opcional: Usa una política de SSL o activa Protocolo de proxy.
    8. Haz clic en Listo.
    9. Comprueba que haya una marca de verificación verde junto a Configuración de frontend en la Google Cloud consola. Si no es así, comprueba que has completado todos los pasos anteriores.
    10. Haz clic en Listo.

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.
       gcloud compute health-checks create ssl my-ssl-health-check --port=443
       
  2. Crea un servicio de backend.
       gcloud compute backend-services create my-ssl-lb \
           --load-balancing-scheme EXTERNAL \
           --global-health-checks \
           --protocol=SSL \
           --port-name=ssl-lb \
           --health-checks=my-ssl-health-check \
           --timeout=5m \
           --global
       

    También puede configurar la comunicación sin cifrar del balanceador de carga a las instancias mediante --protocol=TCP.

  3. Añade grupos de instancias a tu servicio de backend.
       gcloud compute backend-services add-backend my-ssl-lb \
           --instance-group=instance-group-a \
           --instance-group-zone=ZONE_A \
           --balancing-mode=UTILIZATION \
           --max-utilization=0.8 \
           --global
       
       gcloud compute backend-services add-backend my-ssl-lb \
           --instance-group=instance-group-b \
           --instance-group-zone=ZONE_B \
           --balancing-mode=UTILIZATION \
           --max-utilization=0.8 \
           --global
       
  4. Configura el recurso de certificado SSL.

    Si utilizas certificados autogestionados, debes tener al menos un certificado SSL para subirlo. Si no lo tienes, consulta el artículo Información general sobre los certificados SSL. Si utiliza varios certificados SSL, debe crearlos uno a uno.

    Si usas certificados SSL autogestionados y no tienes una clave privada ni un certificado firmado, puedes crear y usar un certificado autofirmado con fines de prueba.

    Para crear un recurso de certificado SSL autogestionado, sigue estos pasos:

       gcloud compute ssl-certificates create my-ssl-cert \
           --certificate=CRT_FILE_PATH \
           --private-key=KEY_FILE_PATH
       

    Para crear un recurso de certificado SSL gestionado por Google, sigue estos pasos:

       gcloud compute ssl-certificates create www-ssl-cert \
           --domains=DOMAIN_1,DOMAIN_2
       
  5. Configura un proxy SSL de destino.

    Los balanceadores de carga de red de proxy externos admiten la creación de un proxy SSL de destino que tenga entre uno y quince certificados SSL. Antes de ejecutar este comando, debes crear un recurso de certificado SSL para cada certificado.

    Si quieres activar el encabezado de proxy, asigna el valor PROXY_V1 en lugar de none. También puedes adjuntar una política de SSL al proxy de destino. Primero, cree la política.

       gcloud compute ssl-policies create my-ssl-policy \
           --profile=MODERN \
           --min-tls-version=1.0
       

    A continuación, adjunta la política al proxy de destino.

       gcloud compute target-ssl-proxies create my-ssl-lb-target-proxy \
           --backend-service=my-ssl-lb \
           --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...] \
           --ssl-policy=my-ssl-policy \
           --proxy-header=NONE
       
  6. Reserva direcciones IP estáticas globales.

    Tus clientes usan estas direcciones IP para acceder a tu servicio con balanceo de carga.

       gcloud compute addresses create ssl-lb-static-ipv4 \
           --ip-version=IPV4 \
           --global
       
       gcloud compute addresses create ssl-lb-static-ipv6 \
           --ip-version=IPV6 \
           --global
       
  7. Configura reglas de reenvío globales.

    Crea reglas de reenvío globales asociadas al proxy de destino. Sustituye LB_STATIC_IP y LB_STATIC_IPV6 por las direcciones IP que has generado en Reservar direcciones IP estáticas globales.

       gcloud compute forwarding-rules create my-ssl-lb-forwarding-rule \
           --load-balancing-scheme EXTERNAL \
           --global \
           --target-ssl-proxy=my-ssl-lb-target-proxy \
           --address=LB_STATIC_IP \
           --ports=443
       
       gcloud compute forwarding-rules create my-ssl-lb-ipv6-forwarding-rule \
           --load-balancing-scheme EXTERNAL \
           --global \
           --target-ssl-proxy=my-ssl-lb-target-proxy \
           --address=LB_STATIC_IPV6 \
           --ports=443
       

Conectar tu dominio a tu balanceador de carga

Una vez creado el balanceador de carga, anota la dirección IP asociada a él. Por ejemplo, 30.90.80.100. Para dirigir tu dominio a tu balanceador de carga, crea un registro A con tu servicio de registro de dominios. Si has añadido varios dominios a tu certificado SSL, debes añadir un registro A para cada uno de ellos, todos apuntando a la dirección IP del balanceador de carga. Por ejemplo, para crear registros A de www.example.com y example.com, usa lo siguiente:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Si usas Cloud DNS como proveedor de DNS, consulta el artículo sobre cómo añadir, modificar y eliminar registros.

Probar el balanceador de carga

En tu navegador web, conéctate a tu dirección IP estática mediante HTTPS. En esta configuración de prueba, las instancias usan certificados autofirmados. Por lo tanto, verás una advertencia en tu navegador la primera vez que accedas a una página. Haz clic en la advertencia para ver la página. Sustituye IP_ADDRESS por la dirección IPv4 o IPv6 que has creado antes.

https://IP_ADDRESS

Deberías ver a uno de los anfitriones de la región más cercana. Vuelve a cargar la página hasta que veas la otra instancia en esa región. Para ver las instancias de la otra región, detén las instancias de la región más cercana.

También puedes usar curl desde la línea de comandos de tu máquina local. Si utilizas un certificado autofirmado en el proxy SSL, también debes especificar -k. La opción curl -k permite que curl funcione aunque tengas un certificado autofirmado o no tengas ningún certificado. Si tienes un certificado normal, puedes quitar ese parámetro. Solo debes usar el parámetro -k para probar tu propio sitio. En circunstancias normales, un certificado válido es una medida de seguridad importante y las advertencias de certificados no deben ignorarse.

Sustituye IP_ADDRESS por la dirección IPv4 o IPv6 que has creado antes.

curl -k https://IP_ADDRESS

Si no puedes acceder al balanceador de carga, prueba los pasos descritos en la sección Solucionar problemas de la configuración.

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.

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

La configuración de ejemplo del balanceador de carga de esta página muestra cómo habilitar el encabezado del protocolo PROXY al crear el balanceador de carga de red de proxy. Sigue estos pasos para cambiar el encabezado del protocolo PROXY de un proxy de destino.

Consola

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

    Ir a Balanceo de carga

  2. Haz clic en Editar en el balanceador de carga.
  3. Haz clic en Configuración de frontend.
  4. Cambia el valor del campo Protocolo de proxy a Activado.
  5. Haz clic en Update (Actualizar) para guardar los cambios.

gcloud

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

gcloud compute target-ssl-proxies update TARGET_PROXY_NAME \
    --proxy-header=[NONE | PROXY_V1]

Configurar la afinidad de sesión

En estos procedimientos se muestra cómo actualizar un servicio de backend del balanceador de carga proxy SSL de ejemplo para que use la afinidad de IP de cliente.

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 externa de una regla de reenvío externa).

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.

    Ir a Balanceo de carga

  2. Haz clic en Back-ends.

  3. Haz clic en my-ssl-lb (el nombre del servicio de backend que has creado para 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 para actualizar el servicio backend my-ssl-lb y especificar la afinidad de sesión de la IP del cliente:

gcloud compute backend-services update my-ssl-lb \
    --global \
    --session-affinity=CLIENT_IP

API

Para definir la afinidad de sesión por IP de cliente, envía una solicitud PATCH al método backendServices/patch.

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-ssl-lb
{
  "sessionAffinity": "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 el drenaje de conexiones, consulta la documentación sobre cómo habilitar el drenaje de conexiones.

Siguientes pasos